MQL4 - automated forex trading   /  

Forum

Code to close all orders by GMT (time)

Back to topics list To post a new topic, please log in or register

avatar
2
Yoda_Glenn 2008.07.24 23:25 
Does anyone know of any simple code that will close all of my orders based on GMT (time?) Thanks, would be much appreciated!
article

Useful hints for the Championship participants

As the rules of the Championship are rigid enough we would like to explain them in more details. As well to give help on writing correct experts.


avatar
877
BarrowBoy 2008.07.25 13:21 

YG

Try something like...

extern int MagicNumber = 1234;
extern int CloseHour = 18;


start()
{

if (Hour() > CloseHour)
  {
    CloseAllBuyOrders(MagicNumber);

    CloseAllSellOrders(MagicNumber);

  }
return (0)
}


  void CloseAllBuyOrders(int MN)
  {
  int i, iTotalOrders;
  
  iTotalOrders=OrdersTotal(); 
  
   for (i=0; i<iTotalOrders; i++)
   { 
      if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
      { 
         if (OrderMagicNumber()==MN)
         { 
            if (OrderType()==OP_BUY) OrderClose(OrderTicket(),OrderLots(),Bid,5,Violet);
            if (OrderType()==OP_BUYSTOP) OrderDelete(OrderTicket());
            if (OrderType()==OP_BUYLIMIT) OrderDelete(OrderTicket());
            
         }
      }
   }
}

  void CloseAllSellOrders(int MN)
  {
  int i, iTotalOrders;
  
  iTotalOrders=OrdersTotal(); 
  
   for (i=0; i<iTotalOrders; i++)
   { 
      if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
      { 
         if (OrderMagicNumber()==MN)
         { 
            if (OrderType()==OP_SELL) OrderClose(OrderTicket(),OrderLots(),Ask,5,Violet);
            if (OrderType()==OP_SELLSTOP) OrderDelete(OrderTicket());
            if (OrderType()==OP_SELLLIMIT) OrderDelete(OrderTicket());
         }
      }
   }
}






This has worked - but IIRC, Rosh has said we should go back the other way when deleting orders, i.e. use i--

-BB-


avatar
Moderator
33249
Rosh 2008.07.25 13:46 
  void CloseAllBuyOrders(int MN)
  {
  int i, iTotalOrders;
  
  iTotalOrders=OrdersTotal()-1; 
  
   for (i=iTotalOrders; i>=0; i--)
   { 
      if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
      { 
         if (OrderMagicNumber()==MN)
         { 
            if (OrderType()==OP_BUY) OrderClose(OrderTicket(),OrderLots(),Bid,5,Violet);
            if (OrderType()==OP_BUYSTOP) OrderDelete(OrderTicket());
            if (OrderType()==OP_BUYLIMIT) OrderDelete(OrderTicket());
            
         }
      }
   }
}
 
  void CloseAllSellOrders(int MN)
  {
  int i, iTotalOrders;
  
  iTotalOrders=OrdersTotal()-1; 
  
   for (i=iTotalOrders; i>=0; i--)
   { 
      if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
      { 
         if (OrderMagicNumber()==MN)
         { 
            if (OrderType()==OP_SELL) OrderClose(OrderTicket(),OrderLots(),Ask,5,Violet);
            if (OrderType()==OP_SELLSTOP) OrderDelete(OrderTicket());
            if (OrderType()==OP_SELLLIMIT) OrderDelete(OrderTicket());
         }
      }
   }
}

Back to topics list  

To add comments, please log in or register