Descargar MetaTrader 5

HistoryOrderGetInteger

La función devuelve la propiedad de la orden que ha sido solicitada. La propiedad de la orden tiene que ser del tipo datetime, int. Existen 2 variantes de la función.

1. Devuelve el valor de la propiedad directamente.

long  HistoryOrderGetInteger(
   ulong                        ticket_number,     // ticket
   ENUM_ORDER_PROPERTY_INTEGER  property_id        // identificador de la propiedad
   );

2. Devuelve true o false dependiendo del éxito de ejecución de la función. En caso del éxito el valor de la propiedad se coloca en una variable receptora que el último parámetro pasa por referencia.

bool  HistoryOrderGetInteger(
   ulong                        ticket_number,     // ticket
   ENUM_ORDER_PROPERTY_INTEGER  property_id,       // identificador de la propiedad
   long&                        long_var           // aquí recibimos el valor de la propiedad
   );

Parámetros

ticket_number

[in]  Ticket de orden.

property_id

[in]  Identificador de la propiedad de orden. Su valor puede ser uno de los valores de la enumeración ENUM_ORDER_PROPERTY_INTEGER.

long_var

[out]  Variable del tipo long que recibe el valor de la propiedad requerida.

Valor devuelto

Valor del tipo long.

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:

//+------------------------------------------------------------------+
//| Trade function                                                   |
//+------------------------------------------------------------------+
void OnTrade()
  {
//--- obtenemos el ticket de la última orden desde el historial de trading semanal
   ulong last_order=GetLastOrderTicket();
   if(HistoryOrderSelect(last_order))
     {
      //--- tiempo de colocación de la orden en milisegundos desde el 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));
      //--- tiempo de ejecución/eliminación de la orden en milisegundos desde el 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 // avisamos sobre el fracaso
      PrintFormat("HistoryOrderSelect() failed for #%d. Eror code=%d",
                  last_order,GetLastError());
 
//---
  }
//+------------------------------------------------------------------+
//|  devuelve el ticket de la última orden en el historial o -1             |
//+------------------------------------------------------------------+
ulong GetLastOrderTicket()
  {
//--- solicitamos el historial de lo últimos 7 días
   if(!GetTradeHistory(7))
     {
      //--- avisamos sobre la llamad fallida y devolveremos -1
      Print(__FUNCTION__," HistorySelect() ha devuelto false");
      return -1;
     }
//--- 
   ulong first_order,last_order,orders=HistoryOrdersTotal();
//--- si hay órdenes, empezamos a trabajar con ellas
   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;
     }
//--- no hemos encontrado ninguna orden, devolveremos -1
   return -1;
  }
//+------------------------------------------------------------------+
//| solicita el historial de los últimos días y devuelve false en caso de fallo  | 
//+------------------------------------------------------------------+
bool GetTradeHistory(int days)
  {
//--- fijamos un período de tiempo semanal para solicitar el historial de trading
   datetime to=TimeCurrent();
   datetime from=to-days*PeriodSeconds(PERIOD_D1);
   ResetLastError();
//--- hacemos la solicitud y comprobamos el resultado
   if(!HistorySelect(from,to))
     {
      Print(__FUNCTION__," HistorySelect=false. Error code=",GetLastError());
      return false;
     }
//--- historial recibido con éxito
   return true;
  }

Véase también

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


Actualizado: 2015.12.03