Пятница, 03.05.2024, 22:47 Вы вошли как Гость | Группа "Гости" | RSS | Главная | функция OrderModify. | Мой профиль | Выход | Вход
Вы смотрели фильм-расследование Алексея Навального "Дворец президента"?
Всего ответов: 2
» Меню сайта

» РАЗНОЕ

» Календарь
«  Май 2024  »
ПнВтСрЧтПтСбВс
  12345
6789101112
13141516171819
20212223242526
2728293031

функция OrderModify.

Функция 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);
 }
 }
 }

 

» Поиск


гороскоп
» Мини-чат

» Наш опрос
Оцените мой сайт
Всего ответов: 46

» Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz

  • » Статистика

    Онлайн всего: 1
    Гостей: 1
    Пользователей: 0


    Copyright MyCorp © 2024
    Бесплатный хостинг uCoz