OrderDelete() - удаление отложенного ордера
Мы уже знаем, как можно выставить отложенный ордер. Для этого надо использовать функцию OrderSend(). Также мы умеем изменять параметры отложенных ордеров с помощью функции OrderModify().
В этом выпуске я расскажу о том, как можно удалить отложенный ордер. Это можно сделать с помощью функции OrderDelete().
bool OrderDelete(int ticket)
Эта функция удаляет отложенный ордер с тикером ticket. Функция возвращает true в случае успешного удаления и false - в случае возникновения ошибки. Код ошибки можно получить, вызвав функцию GetLastError().
Применение функции OrderDelete() рассмотрим на следующем примере:
Предположим, что наш эксперт по какой-то логике (не будем здесь вдаваться в подробности) выставляет по одному инструменту сразу два отложенных ордера - Buy Limit и Sell Limit. Наша задача - если один из ордеров сработал, то удалить оставшийся отложенный ордер.
Предположим, что по данному инструменту работает только наш эксперт. |
В следующем выпуске я выложу код такого эксперта и объясню принцип его работы, детально разобрав каждую строчку.
Все статьи по теме "Пишем советников для MetaTrader 4".
- Механическая торговая система - миф или реальность?
- С чего начать при написании советника:
- Создаем нового советника - Настраиваем параметры. - Язык MetaQuotes Language 4:
Комментарии по теме "OrderDelete() - удаление отложенного ордера"
Андрей, очень кстати Вы тут начали рассказывать о функции OrderDelete. С ней связан один досадный баг, о котором Вы, надеюсь, проинформируете создателей Метатрейдера. Когда, к примеру, выставляешь ордер функцией OrderSend, в нём есть последний параметр color arrow_color=CLR_NONE, который определяет, выводить ли на график открывающую стрелку. Если его не используешь, то никакой стрелки не выводится. Проблема в том, что у функции OrderDelete нет подобного параметра, в результате чего на месте удалённого с её помощью ордера ВСЕГДА остаётся линия и значки на бывших уровнях расположения цены открытия, стопа и профита. Если постоянно работаешь с этой функцией, то график захламляется такими объектами и приходится их удалать вручную, что несколько раздражает. Я не нашёл, каким образом отключить их вывод при удалении ордера функцией OrderDelete. Но этого мало: бывает, что на графике появляются линии не от удалённого ордера, а от ещё какого-нибудь другого ордера, удалённого совсем в другое время и даже совсем с другого инструмента, причём никакой системы в подобной подмене я не заметил: когда-то может появится, когда-то нет. Я думаю, что разработчикам следует добавить в данную функцию хотя бы возможность добавления подобного функции OrderSend параметра, регулирующего вывод или невывод линий и значков на месте удалённого ордера.
Автор: Yuri 2005 | 07.10.2006 02:35
MetaQuotes Software Corp. в ответ на мое письмо о баге сообщили:
"Со следующего билда исправим.
Добавим параметр "цвет" в функции OrderDelete.
И добавим необходимые проверки в отрисовке стрелок."
Автор: Андрей Ведихин | 09.10.2006 14:55
Андрей, благодарю за оперативность.
Автор: Yuri 2005 | 09.10.2006 22:59