OrderGetString

La función devuelve la propiedad solicitada de una orden que previamente ha sido elegida a través de la función OrderGetTicket o OrderSelect. 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  OrderGetString(
   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  OrderGetString(
   ENUM_ORDER_PROPERTY_STRING  property_id,      // identificador de la propiedad
   string&                     string_var        // aquí recibimos el valor de la propiedad
   );

Parámetros

property_id

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

string_var

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

Valor devuelto

Valor del tipo string.

Nota

No se puede confundir las órdenes pendientes con las posiciones que también se muestran en la pestaña "Operaciones" del panel "Caja de Herramientas" del terminal de cliente.

En el registro de posiciones con "compensación" (ACCOUNT_MARGIN_MODE_RETAIL_NETTING y ACCOUNT_MARGIN_MODE_EXCHANGE) de cada símbolo en cualquier momento solo puede abrirse una posición, que es el resultado de una o más operaciones. Es mejor no confundir las posiciones con las órdenes pendientes en activo, que también se muestran en la pestaña "Trading" en el panel "Herramientas".

En el caso de que las posiciones se representen independientemente (ACCOUNT_MARGIN_MODE_RETAIL_HEDGING), de cada símbolo pueden abrirse a la vez varias posiciones.

Para garantizar la recepción de datos recientes sobre una orden, se recomienda llamar a la función OrderSelect() justamente antes de solicitarlos.

Ejemplo:

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- en un ciclo por la lista de todas las órdenes en la cuenta
   int total=OrdersTotal();
   for(int i=0i<totali++)
     {
      //--- obtenemos el ticket de la orden en la lista según el índice del ciclo
      ulong ticket=OrderGetTicket(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)OrderGetInteger(ORDER_TYPE));
      PrintFormat("String properties of an active pending order %s #%I64u:"typeticket);
      
      //--- imprimimos bajo el encabezado todas las propiedades string de la orden seleccionada
      OrderPropertiesStringPrint(13);
     }
   /*
   resultado:
   String properties of an active pending order Sell Limit #2813781342:
   Comment:     Test OrderGetString
   Symbol:      EURUSD
   External ID
   */
  }
//+------------------------------------------------------------------+
//| Muestra en el registro las propiedades string de la orden elegida|
//+------------------------------------------------------------------+
void OrderPropertiesStringPrint(const uint header_width=0)
  {
//--- mostramos en el registro los comentarios
   OrderPropertyPrint("Comment:"header_widthORDER_COMMENT);
   
//--- mostramos en el registro el símbolo del que se ha colocado la orden
   OrderPropertyPrint("Symbol:"header_widthORDER_SYMBOL);
   
//--- mostramos en el registro el identificador de la orden en el sistema comercial externo
   OrderPropertyPrint("External ID:"header_widthORDER_EXTERNAL_ID);
  }
//+------------------------------------------------------------------+
//| Muestra en el registro el valor de la propiedad string de la orden             |
//+------------------------------------------------------------------+
void OrderPropertyPrint(const string headeruint header_widthENUM_ORDER_PROPERTY_STRING property)
  {
   string value="";
   if(!OrderGetString(propertyvalue))
      PrintFormat("Cannot get property %s, error=%d"EnumToString(property), GetLastError());
   else
     {
      //--- 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
      uint w=(header_width==0 ? header.Length()+1 : header_width);
      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

OrdersTotal(), OrderGetTicket(), Propiedades de órdenes