Закрытие позиции по SL или TP

 
Подскажите пожалуйста, как узнать закрылась позиция по стоплоссу или тейкпрофиту.
 
sergey1294:
Подскажите пожалуйста, как узнать закрылась позиция по стоплоссу или тейкпрофиту.

Выбрать в истории сделки за интересующий период и посмотреть в колонке комментарий. 

И еще по цвету в колонке Цена в строчках с OUT 

 
SHOOTER777:

Выбрать в истории сделки за интересующий период и посмотреть в колонке комментарий. 

И еще по цвету в колонке Цена в строчках с OUT 

как в истории терминала посмотреть я знаю, а вот как это программно обработать. Долго мучаясь методом тыка написал такой шаблон.

int Event()
  {
   ulong deal_ticket;            // тикет сделки
   string coment;
   int deal_type;              // тип торговой операции

   HistorySelectByPosition(ID);
   int total=HistoryOrdersTotal();
   deal_ticket=HistoryDealGetTicket(total-1);
   coment=HistoryDealGetString(deal_ticket,DEAL_COMMENT);
   deal_type=(int)HistoryDealGetInteger(deal_ticket,DEAL_TYPE);

   if(deal_type==1)
     {
      if(StringFind(coment,"sl")>=0)
        {
         //-----
         // некоторый код
         //-----
        }
      else if(StringFind(coment,"tp")>=0)
        {
         //-----
         // некоторый код
         //-----     
        }
     }

   if(deal_type==0)
     {
      if(StringFind(coment,"sl")>=0)
        {
         //-----
         // некоторый код
         //-----
        }
      else if(StringFind(coment,"tp")>=0)
        {
         //-----
         // некоторый код
         //-----     
        }
     }
   return(0);
  }


 

Так же интересна данная тема. Так все же как программно узнать сработал SL или TP?

Господа профессионалы, помогите. SOS -спасите наши души.

 

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Особенности языка mql5, тонкости и приёмы работы

fxsaber, 2020.12.22 10:15

// Возвращает скорректированный ORDER_REASON.
ENUM_ORDER_REASON GetOrderReason( const ulong Ticket )
{
  ENUM_ORDER_REASON Reason = ORDER_REASON_CLIENT;
    
  if (HistorySelectOrder(Ticket)) // https://www.mql5.com/ru/forum/170952/page186#comment_18099882
  {
    Reason = HistoryOrderGetInteger(Ticket, ORDER_REASON);
    
    if ((HistoryOrderGetInteger(Ticket, ORDER_TYPE) <= ORDER_TYPE_SELL) &&
        (Reason != ORDER_REASON_SL) && (Reason != ORDER_REASON_TP))
    {
      string PartComment = HistoryOrderGetString(Ticket, ORDER_COMMENT);

      if (StringLen(PartComment) > 3)
      {      
        PartComment = ::StringSubstr(PartComment, 0, 3);
        
        if (PartComment == "[tp")
          Reason = ORDER_REASON_TP;
        else if (PartComment == "[sl")
          Reason = ORDER_REASON_SL;      
      }
    }
  }
  
  return(Reason);
}

Причина обращения: