lelectrohardl
Заблокирован
Добрый день. Сначала показалась задача простой, но код отказывается слушаться.
Имеются 2 открытые ордера. Если у одного из них сработал трейлинг-стоп, то 2-й (у которого он не сработал) нужно закрыть.
По логике: если открыты 2 ордера, ищем тот, у которого выставлен стоп, находим, дальше ищем тот, у которого он не выставлен, закрываем ордер без стопа.
В чем причина не работы кода? Получаю ошибку 4051.
Спасибо.
Имеются 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.
Спасибо.