Такой вот несложный код:
b_Ticket=OrderTicket();
b_Price=OrderOpenPrice();
b_TP=0;
b_SL=0;
Ans_B=false;
while(Ans_B==false)
{
Ans_B=OrderModify(b_Ticket,b_Price,b_SL,b_TP,0);
if(Ans_B==true)
{
Alert("Ордер ", b_Ticket, " модифицирован");
return(0);
}
else
{
Alert("Модификация ордера ", b_Ticket, " не удалась. Ошибка Locking ", GetLastError());
}
Банальная модификация ордера. Парадокс заключается в том, что терминал модифицирует ордер, вместе с тем возвращает Ans_B = false и ругается OrderModify error 1 - ошибки нет, но результат неизвестен.
Ans_B=false;
Может на глобальном уровне объявить надо? или сделать его static?
И какой параметр пытаетесь изменить?
Ans_B=false;
Может на глобальном уровне объявить надо? или сделать его static?
Пытаюсь сделать стоп-лосс и тейк-профит равными 0.
Объявлен на глобальном уровне.
А какая разница где объявлена переменная если она (обнуляется) в данном случае выставляется в false перед её применением???
Почитай что получается:
Ans_B = false;
Дальше -> пока (Ans_B = false)
... Попытка модифицировать ордер со старыми параметрами... стоп-лосс и тейк-профит равными 0. Функция возвращает false и цикл переходит в бесконечный...
Надо добавить условие, как минимум
while(Ans_B == false && OrderStopLoss() != 0)
А какая разница где объявлена переменная если она (обнуляется) в данном случае выставляется в false перед её применением???
Почитай что получается:
Ans_B = false;
Дальше -> пока (Ans_B = false)
... Попытка модифицировать ордер со старыми параметрами... стоп-лосс и тейк-профит равными 0. Функция возвращает false и цикл переходит в бесконечный...
Надо добавить условие, как минимум
Все было бы правильно, но:
1. Старые параметры ордера предусматривают стоп-лосс = 0 и тейк-профит не равный 0. Пытаемся сделать стоп-лосс равный 0.
2. При успешной модификации ордера Ans_B становится true и мы выходим из цикла успешно.
3. Изменил код и пытаюсь выполнить бесполезное действие - модифицировать ордер со старыми параметрами. Все работает великолепно, Ans_B возвращает true и выходим из цикла.
Проблемка в чем-то другом...
Ещё раз
Ans_B=false;
while(Ans_B==false)
ты постоянно модифицируешь.
Все было бы правильно, но:
1. Старые параметры ордера предусматривают стоп-лосс = 0 и тейк-профит не равный 0. Пытаемся сделать стоп-лосс равный 0.
2. При успешной модификации ордера Ans_B становится true и мы выходим из цикла успешно.
3. Изменил код и пытаюсь выполнить бесполезное действие - модифицировать ордер со старыми параметрами. Все работает великолепно, Ans_B возвращает true и выходим из цикла.
Проблемка в чем-то другом...
1. Догадайся сам надо-ли ставить в условие для модификации ордера проверку значения тейка.
2. Если при модификации ордера сервер вернул ошибку #1 то Ans_B никак не может стать true
3. Что на что менял? Если всё работает то в чём вопрос и какая проблемка осталась?
Ещё раз
Ans_B=false;
while(Ans_B==false)
ты постоянно модифицируешь.

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Такой вот несложный код:
b_Ticket=OrderTicket();
b_Price=OrderOpenPrice();
b_TP=0;
b_SL=0;
Ans_B=false;
while(Ans_B==false)
{
Ans_B=OrderModify(b_Ticket,b_Price,b_SL,b_TP,0);
if(Ans_B==true)
{
Alert("Ордер ", b_Ticket, " модифицирован");
return(0);
}
else
{
Alert("Модификация ордера ", b_Ticket, " не удалась. Ошибка Locking ", GetLastError());
}
Банальная модификация ордера. Парадокс заключается в том, что терминал модифицирует ордер, вместе с тем возвращает Ans_B = false и ругается OrderModify error 1 - ошибки нет, но результат неизвестен.