Подскажите почему не работает код.

 
void OnTick()
  {
   if(tm==iTime(_Symbol,_Period,0))return(0);
   tm=iTime(_Symbol,_Period,0);
   if(OrdersTotal()>0)
     {
        {
         CloseOrders(OP_BUY);
         CloseOrders(OP_SELL);
        }
      if(SignalBUY())
         if(OrdersTotal()<1)
           {
            OrderSend(_Symbol,OP_BUY,Lot,Ask,3,0.0,0.0,NULL,Magic,0,clrAqua);
           }
      else
        {
         CloseOrders(OP_SELL);
         tm=0;
        }
      break;
     }
   if(SignalSELL())
      if(OrdersTotal()<1)
        {
           {
            OrderSend(_Symbol,OP_SELL,Lot,Bid,3,0.0,0.0,NULL,Magic,0,clrAqua);
           }
         else
           {
            CloseOrders(OP_BUY);
            tm=0;
           }
         break;
        }
   return(0);
  }
 
alik-alik:

Исправьте логические ошибки


 

И помните, что ордера нужно закрывать с последнего.

У себя в функции CloseOrders(int) проверьте, чтобы цикл шел 

int tot=OrdersTotal()-1;
for(int i=tot; i>-1; i--){//...}
 
Vladimir Tkach:

И помните, что ордера нужно закрывать с последнего.

У себя в функции CloseOrders(int) проверьте, чтобы цикл шел 

Буду пробовать
Причина обращения: