MQL4 - automated forex trading   /  

Forum

ODL Securities

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

Automated Trading Today and Tomorrow

As is known, chaotic and irregular trading can result in huge financial losses. However, even having developed an effective trading strategy, one cannot be fully sure of success. Man is not a robot.


avatar
354
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
32044
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