Help Deleting Pending Order!!!

 

Hi All, i have problem in deleting pending orders, my ea opens 2 pending orders one BuyStop and the other SellStop. When one is opened the other should be deleted. Please tell me what is wrong with my code:

double   FindSell;
bool CloseBuy;
datetime t;

for (FindSell = OrdersTotal()-1; FindSell >= 0; FindSell--) {
   if (OrderSelect(FindSell, SELECT_BY_POS,MODE_TRADES)) {
      if (OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumberSell) {
         if (OrderType()==OP_SELL) { // long position is opened
            if (t<OrderCloseTime()) {
               t=OrderCloseTime();
               CloseBuy=True;
            }
         }
      }
   }
}



double   FindBuy;
bool CloseSell;
datetime s;

for (FindBuy = OrdersTotal()-1; FindBuy >= 0; FindBuy--) {
   if (OrderSelect(FindBuy, SELECT_BY_POS,MODE_TRADES)) {
      if (OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumberBuy) {
         if (OrderType()==OP_BUY) { // long position is opened
            if (s<OrderCloseTime()) {
               s=OrderCloseTime();
               CloseSell=True;
            }
         }
      }
   }
}



if (CloseBuy==True){
double   DeleteBuy;
   for (DeleteBuy = OrdersTotal()-1; DeleteBuy >= 0; DeleteBuy--) {
      if (OrderSelect(DeleteBuy, SELECT_BY_POS,MODE_TRADES)) {
         if (OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumberBuy) {
            if (OrderType()==OP_BUYSTOP) { 
              
             OrderDelete(OrderTicket(),Green);  
                                 
            }
         }
      }
   }
} 

if (CloseSell==True){

double   DeleteSell;
   for (DeleteSell = OrdersTotal()-1; DeleteSell >= 0; DeleteSell--) {
      if (OrderSelect(DeleteSell, SELECT_BY_POS,MODE_TRADES)) {
         if (OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumberSell) {
            if (OrderType()==OP_SELLSTOP) { 
             
             OrderDelete(OrderTicket(),Green);  
                                 
            }
         }
      }
   }
}  
 

there is no OrderCloseTime()

regardless FindSell/Buy DeleteSell/Buy doesn't need to be a double it can be an int

 

Actually there is an OrderCloseTime().......it is equal to 0 for an open order(and a pending order).

Since your variables datetime t & s are also initialised to 0, the expression if(t<OrderCloseTime()) will always be false....ergo, CloseSell or CloseBuy will never be true and therefore your pending order will not delete.

 
double   DeleteSell;
   for (DeleteSell = OrdersTotal()
OrdersTotal is an int
int pendingTicket=0, openTicket=0;
for (int pos = OrdersTotal()-1; pos >= 0; pos--) if(
   OrderSelect(DeleteSell, SELECT_BY_POS,MODE_TRADES)
&& OrderSymbol()     == Symbol() 
&& OrderMagicNumber()== MagicNumberSell)
   if (OrderType > OP_SELL) pendingTicket = OrderTicket();
   else                     openTicket    = OrderTicket();
if (OpenTicket != 0 && pendingTicket != 0) OrderDelete(pendingTicket,Green);