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

[Удален]  
Как программно определить, что позиция закрылась по сл или тп? По комментарию можно, но комментарий брокер, бывает, не ставит. Как быть?
[Удален]  
Да, вся суть в проскальзывании. У меня брокер 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);
[Удален]  
Спасибо