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

OrderOpenPrice() - получение информации о цене открытии позиции или цене отложенного ордера

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

Напомню, что 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);
             }
         }
     }

Прежде всего нас интересует новая функция OrderOpenPrice():

   double OrderOpenPrice()

Эта функция возвращает цену открытия для выбранного функцией OrderSelect() ордера или позиции.

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

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

В следующем выпуске я расскажу о функции OrderTicket().



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

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

Разместите свой комментарий по теме "OrderOpenPrice() - получение информации о цене открытии позиции или цене отложенного ордера"

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



Размещение статьи "OrderOpenPrice() - получение информации о цене открытии позиции или цене отложенного ордера" на Вашем сайте

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

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

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

Журнал FOREX MAGAZINE:



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

Счетчики:

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

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

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


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