Пятница, 04.07.2025, 01:55 Вы вошли как Гость | Группа "Гости" | RSS | Главная | функция OrderTakeProfit. | Мой профиль | Выход | Вход
» Меню сайта

» РАЗНОЕ

» Календарь
«  Июль 2025  »
ПнВтСрЧтПтСбВс
 123456
78910111213
14151617181920
21222324252627
28293031

функция OrderTakeProfit.

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


 

» Поиск


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

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

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

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

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


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