HistoryOrderGetTicket

Возвращает тикет соответствующего ордера в истории. Перед вызовом функции HistoryOrderGetTicket() необходимо получить историю сделок и ордеров с помощью функции HistorySelect() или HistorySelectByPosition().

ulong  HistoryOrderGetTicket(
   int  index      // номер в списке ордеров
   );

Параметры

index

[in]  Номер ордера в списке ордеров.

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

Значение типа ulong. В случае неудачного выполнения возвращает 0.

Примечание

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

Пример:

void OnStart()
  {
   datetime from=0;
   datetime to=TimeCurrent();
//--- запросить всю историю
   HistorySelect(from,to);
//--- переменные для получения значений из свойств ордера
   ulong    ticket;
   double   open_price;
   double   initial_volume;
   datetime time_setup;
   datetime time_done;
   string   symbol;
   string   type;
   long     order_magic;
   long     positionID;
//--- количество текущих отложенных ордеров
   uint     total=HistoryOrdersTotal();
//--- пройдем в цикле по всем ордерам
   for(uint i=0;i<total;i++)
     {
      //--- получим тикет ордера по его позиции в списке
      if((ticket=HistoryOrderGetTicket(i))>0)
        {
         //--- получим свойства ордера
         open_price=       HistoryOrderGetDouble(ticket,ORDER_PRICE_OPEN);
         time_setup=       (datetime)HistoryOrderGetInteger(ticket,ORDER_TIME_SETUP);
         time_done=        (datetime)HistoryOrderGetInteger(ticket,ORDER_TIME_DONE);
         symbol=           HistoryOrderGetString(ticket,ORDER_SYMBOL);
         order_magic=      HistoryOrderGetInteger(ticket,ORDER_MAGIC);
         positionID =      HistoryOrderGetInteger(ticket,ORDER_POSITION_ID);
         initial_volume=   HistoryOrderGetDouble(ticket,ORDER_VOLUME_INITIAL);
         type=GetOrderType(HistoryOrderGetInteger(ticket,ORDER_TYPE));
         //--- подготовим и выведм информацию об ордере
         printf("#ticket %d %s %G %s at %G was set up at %s => done at %s, pos ID=%d",
                ticket,                  // тикет ордера
                type,                    // тип
                initial_volume,          // выставленный объем
                symbol,                  // символ, по которому выставили
                open_price,              // указанная цена открытия
                TimeToString(time_setup),// время установки ордера
                TimeToString(time_done), // время исполнения илм удаления
                positionID               // ID позиции, в которую влилась сделка по ордеру
                );
        }
     }
//---
  }
//+------------------------------------------------------------------+
//| Возвращает строковое наименование типа ордера                    |
//+------------------------------------------------------------------+
string GetOrderType(long type)
  {
   string str_type="unknown operation";
   switch(type)
     {
      case (ORDER_TYPE_BUY):            return("buy");
      case (ORDER_TYPE_SELL):           return("sell");
      case (ORDER_TYPE_BUY_LIMIT):      return("buy limit");
      case (ORDER_TYPE_SELL_LIMIT):     return("sell limit");
      case (ORDER_TYPE_BUY_STOP):       return("buy stop");
      case (ORDER_TYPE_SELL_STOP):      return("sell stop");
      case (ORDER_TYPE_BUY_STOP_LIMIT): return("buy stop limit");
      case (ORDER_TYPE_SELL_STOP_LIMIT):return("sell stop limit");
     }
   return(str_type);
  }

Смотри также

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