Скачать MetaTrader 5

HistoryOrderGetInteger

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

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

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

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

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

Параметры

ticket_number

[in]  Тикет ордера.

property_id

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

long_var

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

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

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

Примечание

Не следует путать между собой ордера из торговой истории и действующие отложенные ордера, которые отображаются на вкладке "Торговля" в панели "Инструменты". Список ордеров, которые были отменены или привели к проведению торговой операции, можно посмотреть  в закладке "История" на панели "Инструменты" клиентского терминала.

Пример:

//+------------------------------------------------------------------+
//| Trade function                                                   |
//+------------------------------------------------------------------+
void OnTrade()
  {
//--- получим тикет последнего ордера из истории торговли за неделю
   ulong last_order=GetLastOrderTicket();
   if(HistoryOrderSelect(last_order))
     {
      //--- время постановки ордера в миллисекундах от 01.01.1970
      long time_setup_msc=HistoryOrderGetInteger(last_order,ORDER_TIME_SETUP_MSC);
      PrintFormat("Order #%d ORDER_TIME_SETUP_MSC=%i64 => %s",
                  last_order,time_setup_msc,TimeToString(time_setup_msc/1000));
      //--- время исполнения/удаления ордера в миллисекундах от 01.01.1970
      long  time_done_msc=HistoryOrderGetInteger(last_order,ORDER_TIME_DONE_MSC);
      PrintFormat("Order #%d ORDER_TIME_DONE_MSC=%i64 => %s",
                  last_order,time_done_msc,TimeToString(time_done_msc/1000));
     }
   else // сообщим о неудаче
      PrintFormat("HistoryOrderSelect() failed for #%d. Eror code=%d",
                  last_order,GetLastError());
 
//---
  }
//+------------------------------------------------------------------+
//| Возвращает тикет последнего ордера в истории или -1              |
//+------------------------------------------------------------------+
ulong GetLastOrderTicket()
  {
//--- запросим историю за последние 7 дней
   if(!GetTradeHistory(7))
     {
      //--- сообщим о неудачном вызове и вернем -1
      Print(__FUNCTION__," HistorySelect() вернул false");
      return -1;
     }
//--- 
   ulong first_order,last_order,orders=HistoryOrdersTotal();
//--- если ордера есть, начинаем работать с ними
   if(orders>0)
     {
      Print("Orders = ",orders);
      first_order=HistoryOrderGetTicket(0);
      PrintFormat("first_order = %d",first_order);
      if(orders>1)
        {
         last_order=HistoryOrderGetTicket((int)orders-1);
         PrintFormat("last_order = %d",last_order);
         return last_order;
        }
      return first_order;
     }
//--- не нашли ни одного ордера, вернем -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;
  }

Смотри также

HistorySelect(), HistoryOrdersTotal(), HistoryOrderSelect(), Свойства ордеров


Обновлено: 2015.12.03