Как отловить StopLoss и TakeProfit в тестере?

 
Impeller >>:
Собственно вопрос в теме ветки. Отловить закрылся ли ордер по StopLoss или TakeProfit на реальном рынке достаточно просто, а как отловить это в тестере. Подкиньте идею.

А зачем придумали в тестере результаты по сделкам ? чёт не пойму... )))))))

Смотрите внимательно в тестер на результаты ! ;-)

 
Уточню, как программно отловить StopLoss и TakeProfit в тестере?
 
Impeller писал(а) >>
Отловить закрылся ли ордер по StopLoss или TakeProfit на реальном рынке достаточно просто, а как отловить это в тестере.

А в чем разница в данном случае?

Ищите советник у Кима.

 
Impeller >>:
Собственно вопрос в теме ветки. Отловить закрылся ли ордер по StopLoss или TakeProfit на реальном рынке достаточно просто, а как отловить это в тестере. Подкиньте идею.

Есть несколько способов, например использовать ф-цию OrderClosePrice( ), или ещё проще будет использовать ф-цию OrderProfit( ) :

OrderSelect(... , ... , MODE_HISTORY);
if(OrderProfit()>0) // значит закрылся по TP
// код
 

'Полезные функции от KimIV'

По этой ссылке "имеют место быть", -

Функция isCloseLastPosByStop().

Эта функция возвращает флаг закрытия последней позиции по стопу. Флаг поднят - True - сработал StopLoss. Флаг опущен - False - позиция была закрыта по другой причине.

.

А также, -

Функция isCloseLastPosByTake().

Эта функция возвращает флаг закрытия последней позиции по тейку. Флаг поднят - True - сработал TakeProfit. Флаг опущен - False - позиция была закрыта по другой причине.

//----------------------------------------------------------------------------------

Вставьте их в коммент эксперта и получите отображение на графике. Сам делал так и проверял соответствие.

 
OrderProfit() > 0 Совсем не факт, что при данном условии закрылся по TP
 
Impeller >>:
OrderProfit() > 0 Совсем не факт, что при данном условии закрылся по TP

Да все очень просто:

OrderSelect(... , ... , MODE_HISTORY);
if(OrderType == OP_BUY)
  {
   if(OrderClosePrice() >= OrderTakeProfit() && OrderTakeProfit() != 0)
     // закрылись в профит
   if(OrderClosePrice() <= OrderStopLoss()) 
     // закрылись по стопу
  }
 else
  if(OrderType() == OP_SELL)
   {
    if(OrderClosePrice() <= OrderTakeProfit())
      // закрылись в профит
    if(OrderClosePrice() >= OrderStopLoss() && OrderStopLoss() != 0) 
      // закрылись по стопу
   }
   
  
 
Спасибо всем за оперативность.