Подскажите, плиз, в чем ошибка

 
подскажите, почему не модифицируется СтопЛосс ?

OrderSelect(counter, SELECT_BY_POS, MODE_TRADES);
if(OrderType() == OP_SELL)
OrderModify(OrderTicket(), OrderOpenPrice(), StopLossLevel, OrderTakeProfit(),
0, Red);

в логи эксперт тож не пишет
 
а ты уверен, что оно ордерселектом что-то выбирает? что такое "counter"?
для начала, проверь алертом:

OrderSelect(counter, SELECT_BY_POS, MODE_TRADES); 
Alert( OrderTicket());


если алертит ноль, значит ничего не выбрано.

 
OrderSelect(counter, SELECT_BY_POS, MODE_TRADES);

Всегда проверяйте результат выполнения операции перед тем как продолжать работу.
 
открыты 2 позы: 16518 - шорт, 16519 - лонг

for(counter = 0; counter < OrdersCount; counter++)
{
OrderSelect(counter, SELECT_BY_POS, MODE_TRADES);
Print(counter, " ", OrderTicket());
if(OrderType() == OP_SELL)
OrderModify(OrderTicket(), OrderOpenPrice(), StopLossLevel, OrderTakeProfit(), 0, Red);

эксперт выводит:
2005.01.26 10:04:34 EURUSD,H4: 0 16518
2005.01.26 10:04:34 EURUSD,H4: 1 16519

однако СтопЛосс не модифицируется...
 
убедитесь, что Вашему эксперту разрешено торговать (стоит соответствующая галочка в свойствах эксперта)
и анализируйте код возврата. если он равен false, анализируйте значение ошибки GetLastError()
 
анализируйте значение ошибки GetLastError()

а где есть список значений ошибок ?
 
посмотрите наши примеры скриптов, а также исходный код библиотеки stdlib.mql
 
Slawa, большое спасибо, нашел описалово
 
Slawa, хотел спросить, пока в тему:
все ф-ции, которые bool в случае успешного выполнения возвращают 1? Или есть исключения?
 
да, всегда. но на самом деле нужно иметь в виду, что false - это всегда 0, а true - не 0. так надёжнее
Причина обращения: