Скачать MetaTrader 5

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

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Пополняй свой счет через платежную систему Visa QIWI Wallet
Aliaksandr Kryvanos
5516
Aliaksandr Kryvanos 2016.09.14 14:18 
Как программно определить, что позиция закрылась по сл или тп? По комментарию можно, но комментарий брокер, бывает, не ставит. Как быть?
Aliaksandr Kryvanos
5516
Aliaksandr Kryvanos 2016.09.14 14:44  
Да, вся суть в проскальзывании. У меня брокер justforex, у него на демо комментарий есть, на реале нету
fxsaber
4484
fxsaber 2016.09.14 14:49  
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);
Aliaksandr Kryvanos
5516
Aliaksandr Kryvanos 2016.09.14 16:03  
Спасибо
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий