SymbolInfoString

Devuelve la propiedad correspondiente del símbolo especificado. Existen 2 variantes de la función.

1. Inmediatamente devuelve el valor de la propiedad.

string  SymbolInfoString(
   string                   name,        // símbolo
   ENUM_SYMBOL_INFO_STRING  prop_id      // identificador de la propiedad
   );

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

bool  SymbolInfoString(
   string                   name,        // símbolo
   ENUM_SYMBOL_INFO_STRING  prop_id,     // identificador de la propiedad
   string&                  string_var   // aquí recibimos el valor de la propiedad
   );

Parámetros

name

[in]  Nombre del símbolo.

prop_id

[in]  Identificador de la propiedad del símbolo. Su valor puede ser uno de los valores de la enumeración ENUM_SYMBOL_INFO_STRING.

string_var

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

Valor devuelto

Valor del tipo string. En caso de la ejecución fallida, la información sobre el error se puede obtener a través de la función GetLastError():

  • 5040 — parámetro string erróneo para especificar el nombre del símbolo,
  • 4301 — símbolo desconocido (instrumento financiero),
  • 4302 — símbolo no seleccionado en "Observación del Mercado" (no figura en la lista de símbolos disponibles),
  • 4303 — identificador erróneo de la propiedad del símbolo.

Nota

Si la función se utiliza para recibir la información sobre el último tick, será mejor utilizar SymbolInfoTick(). Es muy posible que para este símbolo aún no haya habido ninguna cotización desde el momento de conexión del terminal a la cuenta de trading. En este caso el valor que se solicita va a ser indeterminado.

En la mayoría de los casos será suficiente utilizar la función SymbolInfoTick() que en una llamada permite conseguir los valores Ask, Bid, Last, Volume y el tiempo de llegada del último tick.

Ejemplo:

#define SYMBOL_NAME "USDJPY"
 
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- obtenemos los datos de línea del símbolo SYMBOL_NAME
   string currency_base   = SymbolInfoString(SYMBOL_NAMESYMBOL_CURRENCY_BASE);    // Divisa básica del instrumento
   string currency_profit = SymbolInfoString(SYMBOL_NAMESYMBOL_CURRENCY_PROFIT);  // Divisa de beneficio
   string currency_margin = SymbolInfoString(SYMBOL_NAMESYMBOL_CURRENCY_MARGIN);  // Divisa en la que se calculan los fondos de garantía
   string symbol_descript = SymbolInfoString(SYMBOL_NAMESYMBOL_DESCRIPTION);      // Descripción de línea del símbolo
 
//--- creamos un texto de mensaje con los datos obtenidos
   string text=StringFormat("Symbol %s:\n"+
                            "- Currency Base: %s\n"+
                            "- Currensy Profit: %s\n"+
                            "- Currency Margin: %s\n"+
                            "- Symbol Description: %s",
                            SYMBOL_NAMEcurrency_base,
                            currency_profitcurrency_margin,
                            symbol_descript);
 
//--- mostramos los datos obtenidos en el diario de registro
   Print(text);
   /*
   Symbol USDJPY:
   - Currency BaseUSD
   - Currensy ProfitJPY
   - Currency MarginUSD
   - Symbol DescriptionUS Dollar vs Yen
   */
  }