HistoryOrderGetString

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

1. Devuelve el valor de la propiedad directamente.

string  HistoryOrderGetString(
   ulong                       ticket_number,     // ticket
   ENUM_ORDER_PROPERTY_STRING  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  HistoryOrderGetString(
   ulong                       ticket_number,     // ticket
   ENUM_ORDER_PROPERTY_STRING  property_id,       // identificador de la propiedad
   string&                     string_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_STRING.

string_var

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

Valor devuelto

Valor del tipo string.

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:

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- solicitamos la historia de transacciones y órdenes
   if(!HistorySelect(0TimeCurrent()))
     {
      Print("HistorySelect() failed. Error "GetLastError());
      return;
     }
     
//--- en un ciclo por la lista de todas las órdenes históricas en la cuenta
   int total=HistoryOrdersTotal();
   for(int i=0i<totali++)
     {
      //--- obtenemos el ticket de la orden en la lista según el índice del ciclo
      ulong ticket=HistoryOrderGetTicket(i);
      if(ticket==0)
         continue;
      
      //--- obtenemos el tipo de la orden y mostramos el encabezado de la lista de propiedades string de la orden seleccionada
      string type=OrderTypeDescription((ENUM_ORDER_TYPE)HistoryOrderGetInteger(ticketORDER_TYPE));
      PrintFormat("String properties of an history order %s #%I64u:"typeticket);
      
      //--- imprimimos bajo el encabezado todas las propiedades string de la orden seleccionada
      HistoryOrderPropertiesStringPrint(ticket16);
     }
   /*
   resultado:
   String properties of an history order Buy #2646074112:
   Comment:        [tp 1.09137]
   Symbol:         EURUSD
   External ID:    
   String properties of an history order Buy #2646131906:
   Comment:        
   Symbol:         EURUSD
   External ID:    
   */
  }
//+------------------------------------------------------------------+
//| Muestra en el registro las propiedades string                    |
//| de la orden histórica seleccionada                               |
//+------------------------------------------------------------------+
void HistoryOrderPropertiesStringPrint(const long ticketconst uint header_width=0)
  {
   uint   w=0;
   string header="";
   string value="";
   
//--- definimos el texto del encabezado y la anchura del campo del encabezado
//--- si la anchura del encabezado se ha transmitido a la función como igual a cero, entonces la anchura será el tamaño de la línea del encabezado + 1
   header="Comment:";
   w=(header_width==0 ? header.Length()+1 : header_width);
//--- obtenemos y mostramos en el registro los comentarios con un encabezado de la anchura establecida
   if(!HistoryOrderGetString(ticketORDER_COMMENTvalue))
      return;
   PrintFormat("%-*s%-s"wheadervalue);
   
//--- mostramos en el registro el símbolo del que se ha colocado la orden
   header="Symbol:";
   w=(header_width==0 ? header.Length()+1 : header_width);
   if(!HistoryOrderGetString(ticketORDER_SYMBOLvalue))
      return;
   PrintFormat("%-*s%-s"wheadervalue);
   
//--- mostramos en el registro el identificador de la orden en el sistema comercial externo
   header="External ID:";
   w=(header_width==0 ? header.Length()+1 : header_width);
   if(!HistoryOrderGetString(ticketORDER_EXTERNAL_IDvalue))
      return;
   PrintFormat("%-*s%-s"wheadervalue);
  }
//+------------------------------------------------------------------+
//| Retorna la descripción del tipo de orden                         |
//+------------------------------------------------------------------+
string OrderTypeDescription(const ENUM_ORDER_TYPE type)
  {
   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");
      default                          :  return("Unknown order type: "+(string)type);
     }
  }

Véase también

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