Выбрать последние 2 ордера и закрыть один из них

lelectrohardl

Заблокирован
Добрый день. Сначала показалась задача простой, но код отказывается слушаться.

Имеются 2 открытые ордера. Если у одного из них сработал трейлинг-стоп, то 2-й (у которого он не сработал) нужно закрыть.

PHP:
if (OrdersTotal() > 1)
{
   for (int i = 0; i < 2; i ++)
   {
      OrderSelect (OrdersTotal()-i, SELECT_BY_POS);
      
      // Если у ордера сработал трейлинг-стоп
      
      if (OrderStopLoss() > 0)
      {
         for (int j = 0; j < 2; j ++)
         {
            // Выбираем ордер без стоп-уровня
            
            if (i != j)
            {
               OrderSelect (OrdersTotal()-j, SELECT_BY_POS);
               
               // Закрытие Buy
               
               if (OrderType() == OP_BUY)
                  OrderClose (OrderTicket(), OrderLots(), Bid, 3*Order_Point);
               
               // Закрываем Sell
               
               if (OrderType() == OP_SELL)
                  OrderClose (OrderTicket(), OrderLots(), Ask, 3*Order_Point);
               
               break;
            }
         }
      }
   }
}

По логике: если открыты 2 ордера, ищем тот, у которого выставлен стоп, находим, дальше ищем тот, у которого он не выставлен, закрываем ордер без стопа.

В чем причина не работы кода? Получаю ошибку 4051.

Спасибо.
 
Верх