Как программно определить, что позиция закрылась по сл или тп?

 
Как программно определить, что позиция закрылась по сл или тп? По комментарию можно, но комментарий брокер, бывает, не ставит. Как быть?
 
Да, вся суть в проскальзывании. У меня брокер justforex, у него на демо комментарий есть, на реале нету
 
Aliaksandr Kryvanos:
Как программно определить, что позиция закрылась по сл или тп? По комментарию можно, но комментарий брокер, бывает, не ставит. Как быть?
В MT5 только по комментарию
#define ORDER_TYPE_TAKEPROFIT (-1)
#define ORDER_TYPE_STOPLOSS   (-2)

int GetOrderType( const ulong OrderTicket )
{
  int OrderType = (int)::HistoryOrderGetInteger(OrderTicket, ORDER_TYPE);

  if ((OrderType == ORDER_TYPE_BUY) || (OrderType == ORDER_TYPE_SELL))
  {
    const string OrderComment = HistoryOrderGetString(OrderTicket, ORDER_COMMENT);
    const string OrderPrice = ::DoubleToString(::HistoryOrderGetDouble(OrderTicket, ORDER_PRICE_OPEN),
                                          (int)::SymbolInfoInteger(HistoryOrderGetString(OrderTicket, ORDER_SYMBOL), SYMBOL_DIGITS));

    if (OrderComment == "tp " + OrderPrice)
      OrderType = ORDER_TYPE_TAKEPROFIT;
    else if (OrderComment == "sl " + OrderPrice)
      OrderType = ORDER_TYPE_STOPLOSS;
  }

  return(OrderType);
}

Поскольку TP/SL уровни закрытых позиций в MT5-истории не доступны. В MT4 с этим нет проблем.

ЗЫ В функцию, что выше, входной параметр брать отсюда

const ulong OrderTicket = ::HistoryDealGetInteger(DealTicket, DEAL_ORDER);
 
Спасибо