функция OrderModify


например, forex

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


Перейти к главе «функция OrderDelete».
 
+7 (495) 710-76-76
8 (800) 200-01-31
по России бесплатно

закрыть

Вход в личный кабинет

Для счета alpari.classic введите номер счета (буква и 4 цифры) и пароль в ЛК.

Для счетов alpari.micro и alpari.partner введите логин и пароль в МТ.

Зарегистрироваться!Забыли пароль?

 
Rambler's Top100