Как заработать деньги. Проект сам себе финансист.
июнь 2011
пн вт ср чт пт сб вс
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
Главная » » »

OrderModify() - изменение параметров отложенных ордеров и открытых позиций

В прошлых выпусках я рассмотрел очень полезную функцию - OrderSend(). А в данной статье будет рассказано о функции OrderModify().

 bool OrderModify(int ticket, double price, double stoploss, double takeprofit, datetime expiration, color arrow_color=CLR_NONE) 

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

Параметры функции:

  • Ticket - тикер отложенного ордера или открытой позиции;
  • Price - новый уровень отложенного ордера (для открытых позиций не может быть изменен);
  • Stoploss - новый уровень Stop Loss;
  • Takeprofit - новый уровень Take Profit;
  • Expiration - новые дата и время истечения отложенного ордера (если к этой дате и времени отложенный ордер не сработает, то он будет удален - см. выпуск "OrderExpiration() - дата истечения отложенного ордера");
  • Arrow_color - цвет открывающей стрелки на графике. Если параметр отсутствует или его значение равно CLR_NONE, то открывающая стрелка не отображается на графике.

В случае неправильных параметров функция возвращает следующие коды ошибок:

  • 1 (ERR_NO_RESULT) - если ни один из параметров не был изменен;
  • 147 (ERR_TRADE_EXPIRATION_DENIED) - если в настройках торгового сервера запрещено выставлять дату эксперации ордера. В этом случае параметр expiration всегда должен быть равен нулю).

В качестве практического примера применения этой функции рассмотрим установку и управление трейлинг стопом.

Напомню, что Trailing Stop (трейлинг стоп) – это алгоритм управления уровнем Stop Loss ордера. После выставления трейлинг-стопа (например, на Х пипсов) происходит следующее:

  • MetaTrader не предпринимает никаких действий до того момента, пока по открытой позиции не образуется прибыль в Х пипсов. После этого MetaTrader выставляет Stop Loss ордер на расстоянии Х пипсов от текущей цены (в данном случае - на уровне безубыточности).
  • После выполнения первого шага MetaTrader посылает команду на изменение уровня Stop Loss ордера на расстояние Х пипсов от текущей котировки каждый раз, когда расстояние между ней и старым уровнем ордера превысит Х пипсов. В результате этого Stop Loss ордер "подтягивается" к текущей цене.

Реализуем этот принцип на языке MetaQuotes Language 4. Будем полагать, что открытая позиция уже выбрана и мы точно знаем, что эта позиция открыта по инструменту, к которому прикреплен эксперт. Также предположим, что значение трейлинг стопа в пипсах содержится в переменной TrailingStop.

 int err; if (OrderType() == OP_BUY) { 
// позиция на покупку if ((Bid-OrderOpenPrice())>=(TrailingStop*Point)) { 
// выставляем Stop Loss if (OrderModify(OrderTicket(), OrderOpenPrice(), Bid-TrailingStop*Point, OrderTakeProfit(), 0)) Print("#", OrderTicket(),": trailing stop ", Bid-TrailingStop*Point); else { err = GetLastError(); Print("#", OrderTicket(),": trailing stop error ", err); } } } 
else { 
// позиция на продажу if ((OrderOpenPrice()-Ask)>=(TrailingStop*Point)) { 
// выставляем Stop Loss if (OrderModify(OrderTicket(), OrderOpenPrice(), Ask+TrailingStop*Point, OrderTakeProfit(), 0))
Print("#", OrderTicket(),": trailing stop ", Ask+TrailingStop*Point); else { err = GetLastError(); 
Print("#", OrderTicket(),": trailing stop error ", err); } } } 

В этом коде Вам могут быть непонятны несколько функций:

  • Bid - Bid последней котировки по инструменту, к которому прикреплен эксперт;
  • Ask - Ask последней котировки по инструменту, к которому прикреплен советник;
  • Point - размер пункта текущего инструмента в валюте котировки (для EURUSD это 0.0001, для USDJPY - 0.01 и т. д.).

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



Автор статьи: Андрей Ведихин

Хомячковый рай. Уйти и потеряться:

Комментарии к этой заметке больше не принимаются.




Есть что сказать? Не стесняйтесь!






Последние статьи:

Выгодные «исламские счета» для трейдеров Форекс Выгодные «исламские счета» для трейдеров Форекс Таким образом, вне зависимости от стиля работы стоит использовать «исламские счета» и сотрудничать с компаниями, которые не берут с трейдеров swap-комиссии. ..
2014-09-29
Стоит ли покупать чужие торговые сигналы и прогнозы? Стоит ли покупать чужие торговые сигналы и прогнозы? И все же основным нашим советом станет отказ от покупки торговых сигналов и прогнозов. Куда лучше научиться анализировать валютный рынок и думать всегда только своей головой. ..
2015-02-12

Видео по теме:




В мире больших денег

  • Самые богатые люди
    планеты. Ежегодные рейтинги FORBS. Истории успеха признаных финансовых гуру
  • Самые дорогие вещи:
    Часы, автомобили, ноутбуки стоимотью в десятки и сотни тысяч долларов. Рубрика "Чтоб я так жил"
  • Денежные прогнозы
    Что покупать и что продавать? Периодические прогнозы цен на иностранные валюты, акции крупнейших компаний и драгоценные металлы

ВКонтакте с деньгами

УГОЛОК АДМИНИСТРАТОРА