Подскажите, как в советнике проверить срабол ли тэйк профит (mql5)?

 
Подскажите, как в советнике проверить срабол ли тэйк профит?
 

посмотреть комментарий ордера, там должно быть "[tp]" -для MT4

посмотреть комментарий сделки, там должно быть "tp" -для MT5

 

mresult.comment?  в этом комментарии?

 
OrderComment - Торговые функции - Справочник MQL4
OrderComment - Торговые функции - Справочник MQL4
  • docs.mql4.com
OrderComment - Торговые функции - Справочник MQL4
 
а есть аналог для mt5?
 
refounder83:

mresult.comment?  в этом комментарии?

Нет. В истории сделок, последнюю сделку смотреть.
 
refounder83:
Подскажите, как в советнике проверить срабол ли тэйк профит?
Пусть советник заглянет в историю
 
string REZULTAT = OrderComment();
 
Mark24:
string REZULTAT = OrderComment();
mt4
 
refounder83:
а есть аналог для mt5?

Я лично использую вот такой код.

Сначала в функции  OnTick() проверяем по символу наличие открытой позиции и запоминаем ее ID.

//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
...

//   Current position management - check current position status                                                                           |
   if(PositionSelect(Symbol()))
         {
          PositionID = PositionGetInteger(POSITION_IDENTIFIER);

 Потом проверяем событие OnTrade().

//+------------------------------------------------------------------+
//| Trade function                                                   |
//+------------------------------------------------------------------+
void OnTrade()
  {
//---
  int      DealsNum;
  ulong    DealTiket;
  if(HistorySelectByPosition(PositionID))
       {
       DealsNum = HistoryDealsTotal(); //--- total deals number in the list
       for( int i=0; i < DealsNum && !IsStopped(); i++)
         {
         DealTiket = HistoryDealGetTicket(i);
         if(StringFind(HistoryDealGetString(DealTiket, DEAL_COMMENT), "sl", 0) >= 0)
               {
                CloseBarTime = (datetime)SeriesInfoInteger(Symbol(), 0, SERIES_LASTBAR_DATE);
               }
         }
       }  
  } 

Этот код проверяет stop loss, но если вы поменяете sl на tp, то все будет работать.

Единственная проблема - временная задержка функции OnTrade, которая зависит от получения данных от торгового сервера. Иногда получается так, что функция OnTrade сообщает о sl в момент, когда эксперт уже заключил новую сделку. Поэтому я параллельно проверяю наличие позиций на каждом тике в функции OnTick.

 
Проверяйте по цене закрытия и цене тейкпрофита + время закрытия > 0

пс: по комментам не серьёзно.. ИМХО
Причина обращения: