Позиции не закрываются.

 
Мой советник открывает позиции в одном и том же направлении в разное время. Он может открыть максимум 5 позиций не больше 1 лот каждая. Потом мой советник закрывает все посиции в одно и то же время. Но все зкрыть не получается. Остаются две или три незакрытыми. Сначала код у меня был такой

if(OrdersTotal()>0 && sell)  
  {
         total=OrdersTotal();
         for(cnt=0;cnt<total;cnt++) 
            if(OrderSelect(cnt,SELECT_BY_POS) && OrderType()==OP_BUY)  
               OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,Violet);
   }



Проверка показала, что некоторые ордера имеют OrderSelect(cnt,SELECT_BY_POS)=false и не закрываются. Хотя они были открыты без проблем много баров назад. Следующее изменение кода исправляет ошибку

if(OrdersTotal()>0 && sell)  
   {
      while(OrdersTotal()>0)
      {
         total=OrdersTotal();
         for(cnt=0;cnt<total;cnt++) 
            if(OrderSelect(cnt,SELECT_BY_POS) && OrderType()==OP_BUY)  
               OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,Violet);
      }
   }



То есть прогоняем луп закрытия всех позиций до тех пор пока OrdersTotal не выдаст ноль. Уважаемые разработчики, объясните в чем проблема. Я даже использовал ваш скрипт "close all open position". Всё равно оставляет открытые позиции незакрытыми.

 
if(OrdersTotal()>0 && sell)  
  {
         total=OrdersTotal();
         for(cnt=total-1;cnt>=0l;cnt--) 
            if(OrderSelect(cnt,SELECT_BY_POS) && OrderType()==OP_BUY)  
               OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,Violet);
   }
Причина обращения: