MQL5 Как узнать закрылась сделка по стоп-лоссу или нет?

 

Здравствуйте все!

Первый вопрос: подскажите, пожалуйста, по каким признакам можно понять, что позиция была закрыта именно по стоп-лоссу?

Это нужно для принятия решения по следующей сделке.

Можно не писать для меня код, главное дайте способ :) А то сам не соображу. 

И второй вопрос: можно ли при закрытии сделки с рынка trade.PositionClose(ticket,slippage) добавить свой comment?

 
Тикет ордера, который был причиной закрытия позиции, запихнуть сюда
#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);
}
 
kofesutra:

И второй вопрос: можно ли при закрытии сделки с рынка trade.PositionClose(ticket,slippage) добавить свой comment?

В Request.comment прописать.
 
fxsaber:
Тикет ордера, который был причиной закрытия позиции, запихнуть сюда
  int OrderType=(int)::HistoryOrderGetInteger(OrderTicket,ORDER_TYPE);

Благодарю Вас, поразбираюсь.

Скажите, а что означают два двоеточия в коде? 

 
kofesutra:

Скажите, а что означают два двоеточия в коде?

Грубо говоря, перед двоеточием указывается имя класса, откуда вызывается соответствующий метод.

Если ничего перед двоеточием не стоит - класс глобальный.

 

В данном случае все двоеточия можно затереть. А удобно их использовать по той причине, что могут быть одни и те же методы (включая виртуальный) у разных классов. И чтобы не ошибиться, через двоеточие можно четко указать, какой конкретно метод нужно вызвать.