Замени
double ask1,bid1;
на
static double ask1,bid1;
и
trade=false; //больше не торгуем
на
trade=true; //больше не торгуем
Функция удаления ордеров неправильная - считать ордера надо с конца.
Лучше так
for (int a=OrdersTotal()-1;a>=0; a--) { OrderSelect(a,SELECT_BY_POS); if (OrderType()<2) OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),100,CLR_NONE); else OrderDelete(OrderTicket()); }
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Здравствуйте!
Помогите, пожалуйста обнаружить ошибки в коде.
Задача очень простая: При включений советника он сразу открывает два ордера на пробой на расстоянии 70 пунктов (бай-стоп, селл-стоп). При прохождении каким-либо из них 300 пунктов от точки входа (в пятизначной котировке), все существующие ордера удаляются. Больше во время работы советника ордера не создаются (это регулируется булевой переменной).
Важно: я не стал выставлять тейк-профит в самих ордерах, так как думаю далее присобачить и трейлинг-стоп.
Почему-то советник
1. Не удаляет ордера
2. Создает новые и новые
Скажите пожалуйста, в чем ошибка? Заранее огромное спасибо!