функция OrderTakeProfit


например, forex

Изучим функцию 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());


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

закрыть

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

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

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

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

 
Rambler's Top100