не удаляет противоположный ордер

 
 int pos;
   for(pos=0; pos<OrdersTotal(); pos++)
     {
      // выделим текущий ордер, чтобы получить о нем информацию
      if (OrderSelect(pos, SELECT_BY_POS))
        {
         // Если это открытая позиция 
         if (OrderType()<=OP_SELL)
          {
           // найти второй отложенный ордер
           int i;
           for(i=0; i<OrdersTotal(); i++)
            {
              if (OrderSelect(i, SELECT_BY_POS))
               {
                if (OrderType()>OP_SELL)
                 {
                   // ордер найден - удалим его
                   if (OrderDelete(OrderTicket()))
                    {
                     Print("Ордер удален");
                    }
                   else
                    {
                     Print("Ошибка ", GetLastError(), " при удалении ордера");
                    }
                 }
               }
            }
           // выйти из цикла
           break;
          } 
        } 

     }

Два отложенных ордера при срабатывании одного из них, противоположный должен закрываться, кто поможет???

 
Попробуйте циклы в обратном порядке организовать, иногда помогает. И проверку на символ/магик лучше бы всё-таки производить, если это не игрушка для тестера.
Причина обращения: