Ошибка в Тестере Или в Коде?

 
      for(i=0;i<OrdersTotal();i++) //Трал
        if(OrderSelect(i,SELECT_BY_POS) && OrderMagicNumber()>0 && OrderMagicNumber()<5)
          ModifyOrder(SY);

Каждый бар происходит модификация ордера, если сделок открыто больше одной, то, если происходит закрытие ордеров (в данном коде ввиду невозможности выставить стоплосс), то сделки закрываются не сразу 2, а через бар. Давно заметил, что закрыть всё в тестере можно только несколькими проходами. Почему так происходит, кто встречал подобное.

это функция 
ModifyOrder(SY)
//Модификация ордеров 4 типа или закрытие при тренде
   if(OrderType()==OP_BUY  && OrderMagicNumber()==Magic4&&Trend>0) 
      {
       tick=OrderModify(OrderTicket(),OrderOpenPrice(),BBDn0,0,0,Yellow);
       if (tick==false&&MarketInfo(_symbol,MODE_BID)<BBDn0)OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),_Slip);
      }
    
   if(OrderType()==OP_SELL && OrderMagicNumber()==Magic4&&Trend>0) 
     {
      tick=OrderModify(OrderTicket(),OrderOpenPrice(),BBUp0,0,0,Yellow);
      if (tick==false&&MarketInfo(_symbol,MODE_BID)>BBUp0)OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),_Slip);
     }
 
zfs:

Каждый бар происходит модификация ордера, если сделок открыто больше одной, то, если происходит закрытие ордеров (в данном коде ввиду невозможности выставить стоплосс), то сделки закрываются не сразу 2, а через бар. Давно заметил, что закрыть всё в тестере можно только несколькими проходами. Почему так происходит, кто встречал подобное.


Сделайте обратный цикл:

for(i = OrdersTotal() - 1;i >= 0;i--)

 Хотя это тоже не 100% гарантия закрытия всех ордеров.

 
Мне кажется или это одно и тоже)
 
zfs:
Мне кажется или это одно и тоже)

А Вы попробовали? Абсолютно разные вещи
 
Я уже забыть успел, что это было так. Спасибо.