HistoryOrderGetTicket

Devuelve el ticket de una orden correspondiente en el historial. Antes de llamar a la función HistoryOrderGetTicket(), hay que recibir el historial de transacciones y órdenes usando la función HistorySelect() o HistorySelectByPosition().

ulong  HistoryOrderGetTicket(
   int  index      // número en la lista de órdenes
   );

Parámetros

index

[in]  Número de la orden en la lista de órdenes.

Valor devuelto

Valor del tipo ulong. En caso de ejecución fallida devuelve 0.

Nota

No se debe confundir las órdenes del historial de trading con las órdenes pendientes actuales que se muestran en la pestaña "Trading" del panel "Caja de Herramientas" del terminal de cliente. La lista de las órdenes que han sido canceladas o las que han llevado a la ejecución de una operación comercial se puede ver en la pestaña "Historial" del panel "Caja de Herramientas" del terminal de cliente.

Ejemplo:

void OnStart()
  {
   datetime from=0;
   datetime to=TimeCurrent();
//--- solicitar todo el historial
   HistorySelect(from,to);
//--- variables para recibir valores desde las propiedades de la orden
   ulong    ticket;
   double   open_price;
   double   initial_volume;
   datetime time_setup;
   datetime time_done;
   string   symbol;
   string   type;
   long     order_magic;
   long     positionID;
//--- número de actuales órdenes pendientes
   uint     total=HistoryOrdersTotal();
//--- repasamos todas las órdenes en el ciclo
   for(uint i=0;i<total;i++)
     {
      //--- recibimos el ticket de la orden según su posición en la lista
      if((ticket=HistoryOrderGetTicket(i))>0)
        {
         //--- recibimos las propiedades de la orden
         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));
         //--- preparamos y mostramos información sobre la orden
         printf("#ticket %d %s %G %s at %G was set up at %s => done at %s, pos ID=%d",
                ticket,                  // ticket de la orden
                type,                    // tipo
                initial_volume,          // volumen colocado
                symbol,                  // símbolo
                open_price,              // precio de apertura especificado
                TimeToString(time_setup),// hora de colocación de la orden
                TimeToString(time_done), // hora de ejecución y eliminación
                positionID               // ID de la posición en la que ha sido incluida la transacción según la orden
                );
        }
     }
//---
  }
//+------------------------------------------------------------------+
//|  devuelve el nombre literal del tipo de la orden                   |
//+------------------------------------------------------------------+
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);
  }

Véase también

HistorySelect(), HistoryOrdersTotal(), HistoryOrderSelect(), Propiedades de órdenes