HistoryDealGetInteger

Возвращает запрошенное свойство сделки. Свойство сделки должно быть типа datetime, int. Существует 2 варианта функции.

1. Непосредственно возвращает значение свойства.

long  HistoryDealGetInteger(
   ulong                       ticket_number,     // тикет
   ENUM_DEAL_PROPERTY_INTEGER  property_id        // идентификатор свойства
   );

2. Возвращает true или false в зависимости от успешности выполнения функции.  В случае успеха значение свойства помещается в приемную переменную, передаваемую по ссылке последним параметром.

bool  HistoryDealGetInteger(
   ulong                       ticket_number,     // тикет
   ENUM_DEAL_PROPERTY_INTEGER  property_id,       // идентификатор свойства
   long&                       long_var           // сюда примем значение свойства
   );

Параметры

ticket_number

[in]  Тикет сделки.

property_id

[in]  Идентификатор свойства сделки. Значение может быть одним из значений перечисления ENUM_DEAL_PROPERTY_INTEGER.

long_var

[out]  Переменная типа long, принимающая  значение запрашиваемого свойства.

Возвращаемое значение

Значение типа long.

Примечание

Не следует путать между собой ордера, сделки и позиции. Каждая сделка является результатом исполнения некоего ордера, каждая позиция является итоговым результатом одной или нескольких сделок.

Пример:

//+------------------------------------------------------------------+
//| Trade function                                                   |
//+------------------------------------------------------------------+
void OnTrade()
  {
//--- получим тикет последней сделки из истории торговли за неделю
   ulong last_deal=GetLastDealTicket();
   if(HistoryDealSelect(last_deal))
     {
      //--- время совершения сделки в миллисекундах от 01.01.1970
      long deal_time_msc=HistoryDealGetInteger(last_deal,DEAL_TIME_MSC);
      PrintFormat("Deal #%d DEAL_TIME_MSC=%i64 => %s",
                  last_deal,deal_time_msc,TimeToString(deal_time_msc/1000));
     }
   else
      PrintFormat("HistoryDealSelect() failed for #%d. Eror code=%d",
                  last_deal,GetLastError());
//---
  }
//+------------------------------------------------------------------+
//| Возвращает тикет последней сделки в истории или -1               |
//+------------------------------------------------------------------+
ulong GetLastDealTicket()
  {
//--- запросим историю за последние 7 дней
   if(!GetTradeHistory(7))
     {
      //--- сообщим о неудачном вызове и вернем -1
      Print(__FUNCTION__," HistorySelect() вернул false");
      return -1;
     }
//--- 
   ulong first_deal,last_deal,deals=HistoryOrdersTotal();
//--- если ордера есть, начинаем работать с ними
   if(deals>0)
     {
      Print("Deals = ",deals);
      first_deal=HistoryDealGetTicket(0);
      PrintFormat("first_deal = %d",first_deal);
      if(deals>1)
        {
         last_deal=HistoryDealGetTicket((int)deals-1);
         PrintFormat("last_deal = %d",last_deal);
         return last_deal;
        }
      return first_deal;
     }
//--- не нашли ни одной сделки, вернем -1
   return -1;
  }
//+------------------------------------------------------------------+
//| Запрашивает историю за последние дни и вернет false при неудаче  |
//+------------------------------------------------------------------+
bool GetTradeHistory(int days)
  {
//--- зададим недельный период времени для запроса торговой истории
   datetime to=TimeCurrent();
   datetime from=to-days*PeriodSeconds(PERIOD_D1);
   ResetLastError();
//--- сделаем запрос и проверим результат
   if(!HistorySelect(from,to))
     {
      Print(__FUNCTION__," HistorySelect=false. Error code=",GetLastError());
      return false;
     }
//--- история получена успешно
   return true;
  }

Смотри также

HistoryDealsTotal(), HistorySelect(), HistoryDealGetTicket(), Свойства сделок