//+------------------------------------------------------------------+
//|                   Pending_grid_Multiple.mq4                      |
//|                   Script adapted by Marcel Corzo                 |
//|                   marcelcorzo@yahoo.com                          |
//|          Please feel free to send me enhancements and ideas      |            
//+------------------------------------------------------------------+
#property copyright "Marcel Corzo"
#property link      "http:www.universoforex.4t.com"
#property show_inputs
//:)Activate script approximately at 4:00 GMT  - Active el script aproximadamente a las 4:00 GMT
//:)Script puts first group of pending orders from actual price +/- "level" variable, until gridupper/lowerlimit variables
//:)Script puts second group of pending orders from gridupper/lowerlimit variables, until gridupper/lowerlimit2 variables
//:)Script puts pending orders each "gridspacing" pips
//
//+-Variables: First group of pending orders - Primer grupo de órdenes pendientes-+
extern int    LevelDistance = 25; 
extern double Lots = 0.02; 
extern int    TakeProfit=40;
extern int    StopLoss=80;
extern double GridUpperLimit=0;//Recommended: actual price + 40 to 50 pips, according to the pair and recent supports/resistances 
extern double GridLowerLimit=0;//Recommended: actual price - 40 to 50 pips, according to the pair and recent supports/resistances 
//+-Variables: Second group of pending orders - Segundo grupo de órdenes pendientes-+
//+------------------------------------------------------------------+    
extern double Lots2 = 0.01; 
extern int    TakeProfit2=30;
extern int    StopLoss2=60;
extern double GridUpperLimit2=0;//Recommended: GridUpperLimit + 20 to 40 pips, according to the pair and recent supports/resistances
extern double GridLowerLimit2=0;//Recommended: GridLowerLimit - 20 to 40 pips, according to the pair and recent supports/resistances
//+------------------------------------------------------------------+
//+-Common variables - Variables comunes-+
extern int    Horas_expira=6;  
extern bool   Place_buylimit = true; 
extern bool   Place_selllimit = true; 
extern int    GridSpacing=5;
//+------------------------------------------------------------------+
int start()
  {
   int    ticket,expiration;
   double CurrentLevel=0.00;
   double CurrentLevel2=0.00;
   double point;
//----
   point=MarketInfo(Symbol(),MODE_POINT);
   expiration=CurTime()+PERIOD_H1*60*Horas_expira;
//---- First group of pending orders - Primer grupo de órdenes pendientes-+
      CurrentLevel = GridLowerLimit;
      while(CurrentLevel < GridUpperLimit)
   while(true)
     {
      if (Place_selllimit)
      if(CurrentLevel < (Bid - (Point * LevelDistance)))
      ticket=OrderSend(Symbol(),OP_SELLSTOP,Lots,CurrentLevel,0,CurrentLevel + (Point*StopLoss),CurrentLevel - (Point*TakeProfit),"SELLSTOP",0,expiration,Red);
      
      if (Place_buylimit)
      if(CurrentLevel > (Ask + (Point * LevelDistance)))       
      ticket=OrderSend(Symbol(),OP_BUYSTOP,Lots,CurrentLevel,0,CurrentLevel - (Point*StopLoss),CurrentLevel + (Point*TakeProfit),"BUYSTOP",0,expiration,Green);
      
      CurrentLevel = CurrentLevel + (GridSpacing * Point);
      
      if(ticket<=0) Print("Error = ",GetLastError());
      else { Print("ticket = ",ticket); break; }
      //---- espera de 10 segundos - wait for 10 seconds ---
      Sleep(10000);
     }
//----
  // return(0);
  ///}
  
  ///{
 //----
   point=MarketInfo(Symbol(),MODE_POINT);
   expiration=CurTime()+PERIOD_H1*60*Horas_expira;
//---- Second group of pending orders - Segundo grupo de órdenes pendientes-+
      CurrentLevel2 = GridLowerLimit2;
      while(CurrentLevel2 < GridUpperLimit2)
   while(true)
     {
      if (Place_selllimit)
      if(CurrentLevel2 < (GridLowerLimit-(GridSpacing * Point)))
      ticket=OrderSend(Symbol(),OP_SELLSTOP,Lots2,CurrentLevel2,0,CurrentLevel2 + (Point*StopLoss2),CurrentLevel2 - (Point*TakeProfit2),"SELLSTOP",0,expiration,Red);
      
      if (Place_buylimit)
      if(CurrentLevel2 > (GridUpperLimit))  
      ticket=OrderSend(Symbol(),OP_BUYSTOP,Lots2,CurrentLevel2,0,CurrentLevel2 - (Point*StopLoss2),CurrentLevel2 + (Point*TakeProfit2),"BUYSTOP",0,expiration,Green);
      
      CurrentLevel2 = CurrentLevel2 + (GridSpacing * Point);
      
      if(ticket<=0) Print("Error = ",GetLastError());
      else { Print("ticket = ",ticket); break; }
      //---- espera de 10 segundos - wait for 10 seconds ----
      Sleep(10000);
     }
//----
   return(0);
  }
  
  
//+------------------------------------------------------------------+