Добрый день,хочу выполнить скрипт в 2 шага:
1.Скрипт открывает два отложенных ордера buystop и sellstop;
2.как только цена затрагивает один из ордеров,удаляется "противоположный"(например, открывается buystop,удаляется sellstop);
Если с первым шагом проблем у меня не возникло,то со вторым....
Подскажите пожалуйста, как пожно реализовать 2 шаг.Слышала что можно сделать это через стандартный цикл перебора ордеров (for (int i=OrdersTotal()-1; i>=0; i--) пока какой-то не подойдёт по магическому номеру,но как реализовать это не понимаю.
Буду рада любой помощи и любому совету.Заранее спасибо.
Если до срабатывания любого из ордеров нет открытых позиций, то я бы встроил в бесконечный цикл проверку открытой позиции, и удалял бы оставшиеся ордера:
{ //--- while(!IsStopped()) { if(PositionSelect(_Symbol)) { DeletePendingOrder(); } } } //+------------------------------------------------------------------+ //Удаление отложенных ордеров void DeletePendingOrder() { ulong order_ticket; HistorySelect(0,TimeCurrent()); for (int i=OrdersTotal()-1;i>=0;i--) { order_ticket=OrderGetTicket(i); if (OrderGetString(ORDER_SYMBOL) == Symbol()) { if(!trade.OrderDelete(order_ticket)) { //--- сообщим о неудаче Print("Метод OrderDelete() потерпел неудачу. Код возврата=",trade.ResultRetcode(), ". Описание кода: ",trade.ResultRetcodeDescription()); } else { Print("Метод OrderDelete() выполнен успешно. Код возврата=",trade.ResultRetcode(), " (",trade.ResultRetcodeDescription(),")"); } } } }
это mql5?
это mql5?
да.
да.
Спасибо большое за помощь.Только я(дырявая голова) забыла указать что пишу на mql4.Простите что потратила ваше время,я попробую переделать первую часть кода под mql5,чтобы ваш труд не пропал даром
Спасибо большое за помощь.Только я(дырявая голова) забыла указать что пишу на mql4.Простите что потратила ваше время,я попробую переделать первую часть кода под mql5,чтобы ваш труд не пропал даром
Да я не перетрудился)
Скопировал со своего советника, есть с похожим функционалом просто)
Добрый день,хочу выполнить скрипт в 2 шага:
1.Скрипт открывает два отложенных ордера buystop и sellstop;
2.как только цена затрагивает один из ордеров,удаляется "противоположный"(например, открывается buystop,удаляется sellstop);
Если с первым шагом проблем у меня не возникло,то со вторым....
Подскажите пожалуйста, как пожно реализовать 2 шаг.Слышала что можно сделать это через стандартный цикл перебора ордеров (for (int i=OrdersTotal()-1; i>=0; i--) пока какой-то не подойдёт по магическому номеру,но как реализовать это не понимаю.
Буду рада любой помощи и любому совету.Заранее спасибо.
Делать это в скрипте абсолютно неправильно. В этом случае придётся зацикливать работу скрипта, что не приветствуется. Но если в советнике это сделать, то алгоритм совсем простой:
- При открытии ордеров их тикеты запоминаются в разные переменные или в массив.
- На каждом тике поочерёдно выбираются ордера и проверяется тип ордера.
- Если OP_BUY или OP_SELL значит второй удаляется и ЕxpertRemove() либо ожидание следующей команды...
Делать это в скрипте абсолютно неправильно. В этом случае придётся зацикливать работу скрипта, что не приветствуется. Но если в советнике это сделать, то алгоритм совсем простой:
- При открытии ордеров их тикеты запоминаются в разные переменные или в массив.
- На каждом тике поочерёдно выбираются ордера и проверяется тип ордера.
- Если OP_BUY или OP_SELL значит второй удаляется и ЕxpertRemove() либо ожидание следующей команды...
Добрый день еще раз,спасибо за описание шагов.Подскажите еще немного пожалуйста.вот такая ситуация,первый шаг у меня такой-скрипт открывает с наступлением определенного времени,два ордера.Могу ли я 1 шаг оставить как скрипт ,а 2 сделать советником.И если да то как?Или может целесообразнее сделать все шаги одним советником?Заранее спасибо:)))
Добрый день еще раз,спасибо за описание шагов.Подскажите еще немного пожалуйста.вот такая ситуация,первый шаг у меня такой-скрипт открывает с наступлением определенного времени,два ордера.Могу ли я 1 шаг оставить как скрипт ,а 2 сделать советником.И если да то как?Или может целесообразнее сделать все шаги одним советником?Заранее спасибо:)))
Выделенное говорит о том, что это советник. Настоятельно рекомендую к прочтению справку по терминалу.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Добрый день,хочу выполнить скрипт в 2 шага:
1.Скрипт открывает два отложенных ордера buystop и sellstop;
2.как только цена затрагивает один из ордеров,удаляется "противоположный"(например, открывается buystop,удаляется sellstop);
Если с первым шагом проблем у меня не возникло,то со вторым....
Подскажите пожалуйста, как пожно реализовать 2 шаг.Слышала что можно сделать это через стандартный цикл перебора ордеров (for (int i=OrdersTotal()-1; i>=0; i--) пока какой-то не подойдёт по магическому номеру,но как реализовать это не понимаю.
Буду рада любой помощи и любому совету.Заранее спасибо.