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

OrderTakeProfit() - уровень Take Profit ордера

В прошлых выпусках мы уже достаточно сильно продвинулись в вопросе, как определить, была ли позиция закрыта по Take Profit ордеру или по Stop Loss. Параллельно мы изучили следующие торговые функции советника:

В этом выпуске мы изучим функцию OrderTakeProfit() и доработаем наш пример. Мы почему-то с первых строчек кода безусловно верим в тот факт, что позиция была закрыта именно по Stop Loss или Take Profit ордера. А если нет? Это легко проверить.

  • Если для позиции на покупку цена закрытия находится не ниже уровня Take Profit, то позиция закрыта по Take Profit.
  • Если для позиции на продажу цена закрытия находится не выше уровня Take Profit, то позиция закрыта по Take Profit.

Мы знаем, что уровень Stop Loss ордера выделенной позиции или ордера можно определить с помощью функции OrderStopLoss(). По аналогии уровень Take Profit определяется с помощью функции OrderTakeProfit():

   double OrderTakeProfit()

Ордер должен быть предварительно выбран с помощью функции OrderSelect().

Изменим наш пример, чтобы убедиться, что позиция закрыта по ордеру, а не с рынка:

   //---- выбираем ордер/позицию с тикером 77777
   if ( OrderSelect (77777, SELECT_BY_TICKET) == true) 
     {
       // это позиция, а не отложеный ордер?
       if ((OrderType() == OP_BUY) || (OrderType() == OP_SELL))
         {
            // это закрытая позиция, а не открытая?
            if ( OrderCloseTime() != 0 )
              {
                 if ( ((OrderClosePrice() <= OrderStopLoss()) && (OrderType() == OP_BUY)) || 
                      ((OrderClosePrice() >= OrderStopLoss()) && (OrderType() == OP_SELL)) )
                    {
                       // позиция закрылась по Stop Loss
                       // ...
                    }
                 else
                    {
                       if ( ((OrderClosePrice() >= OrderTakeProfit()) && (OrderType() == OP_BUY)) || 
                             ((OrderClosePrice() <= OrderTakeProfit()) && (OrderType() == OP_SELL)) )
                         {
                            // позиция закрылась по Take Profit
                            // ...
                         }
                       else 
                            Print("Ошибка: позиция закрыта не по ордеру");
                    }
              }
            else
               Print("Ошибка: это не закрытая позиция, а открытая");
         }
       else
         Print("Ошибка: это не закрытая позиция, а отложенный ордер");
     }
  else
    Print("OrderSelect() вернул ошибку - ",GetLastError());

В следующем выпуске я продолжу изучение торговых функций языка MetaQuotes Language 4 и расскажу о функции OrderSymbol().



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

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

Разместите свой комментарий по теме "OrderTakeProfit() - уровень Take Profit ордера"

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



Размещение статьи "OrderTakeProfit() - уровень Take Profit ордера" на Вашем сайте

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

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

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

Журнал FOREX MAGAZINE:



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

Счетчики:

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

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

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


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