« Предыдущий пост | На главную страницу | Следующий пост »

OrderDelete() - удаление отложенного ордера

Мы уже знаем, как можно выставить отложенный ордер. Для этого надо использовать функцию OrderSend(). Также мы умеем изменять параметры отложенных ордеров с помощью функции OrderModify().

В этом выпуске я расскажу о том, как можно удалить отложенный ордер. Это можно сделать с помощью функции OrderDelete().

   bool OrderDelete(int ticket)

Эта функция удаляет отложенный ордер с тикером ticket. Функция возвращает true в случае успешного удаления и false - в случае возникновения ошибки. Код ошибки можно получить, вызвав функцию GetLastError().

Применение функции OrderDelete() рассмотрим на следующем примере:

Предположим, что наш эксперт по какой-то логике (не будем здесь вдаваться в подробности) выставляет по одному инструменту сразу два отложенных ордера - Buy Limit и Sell Limit. Наша задача - если один из ордеров сработал, то удалить оставшийся отложенный ордер.

Предположим, что по данному инструменту работает только наш эксперт.


В следующем выпуске я выложу код такого эксперта и объясню принцип его работы, детально разобрав каждую строчку.



Все статьи по теме "Пишем советников для MetaTrader 4".

« Предыдущий пост | На главную страницу | Следующий пост »

Комментарии по теме "OrderDelete() - удаление отложенного ордера"

Андрей, очень кстати Вы тут начали рассказывать о функции OrderDelete. С ней связан один досадный баг, о котором Вы, надеюсь, проинформируете создателей Метатрейдера. Когда, к примеру, выставляешь ордер функцией OrderSend, в нём есть последний параметр color arrow_color=CLR_NONE, который определяет, выводить ли на график открывающую стрелку. Если его не используешь, то никакой стрелки не выводится. Проблема в том, что у функции OrderDelete нет подобного параметра, в результате чего на месте удалённого с её помощью ордера ВСЕГДА остаётся линия и значки на бывших уровнях расположения цены открытия, стопа и профита. Если постоянно работаешь с этой функцией, то график захламляется такими объектами и приходится их удалать вручную, что несколько раздражает. Я не нашёл, каким образом отключить их вывод при удалении ордера функцией OrderDelete. Но этого мало: бывает, что на графике появляются линии не от удалённого ордера, а от ещё какого-нибудь другого ордера, удалённого совсем в другое время и даже совсем с другого инструмента, причём никакой системы в подобной подмене я не заметил: когда-то может появится, когда-то нет. Я думаю, что разработчикам следует добавить в данную функцию хотя бы возможность добавления подобного функции OrderSend параметра, регулирующего вывод или невывод линий и значков на месте удалённого ордера.

MetaQuotes Software Corp. в ответ на мое письмо о баге сообщили:

"Со следующего билда исправим.
Добавим параметр "цвет" в функции OrderDelete.
И добавим необходимые проверки в отрисовке стрелок."

Андрей, благодарю за оперативность.

Подписаться на мою рассылку



Размещение статьи "OrderDelete() - удаление отложенного ордера" на Вашем сайте

Размещение статьи "OrderDelete() - удаление отложенного ордера" на Вашем сайте возможно при условии выполнениия следующих условий:

  • Запрещается изменение оригинального текста без согласия автора - Андрея Ведихина.
  • Должен быть указан первоисточник. В случае публикации в интернете Вы должны разместить следующий код гиперссылки без изменений:
  • Запрещается коммерческое использование материалов, взятых с блога "Интернет-трейдинг на форекс / forex". Доступ к ним должен быть свободным, без взимания какой-либо платы, без обязательной регистрации и/или заполнения опросного листа (анкеты) и т.д.

В случае выполнения данных условий не требуется согласия автора блога "Интернет-трейдинг на форекс / forex" на размещение статьи "OrderDelete() - удаление отложенного ордера" на Вашем сайте.

Журнал FOREX MAGAZINE:



Архив номеров FOREX MAGAZINE
Котировки Forex:

Счетчики:

Авторские права © 2005-2006 Андрей Ведихин

Условия использования материалов блога "Интернет-трейдинг на форекс / forex"

Контакты с автором:


Движок сайта:
Movable Type 5.04