SymbolInfoDouble

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

1. Inmediatamente devuelve el valor de la propiedad.

double  SymbolInfoDouble(
   string                   name,       // símbolo
   ENUM_SYMBOL_INFO_DOUBLE  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  SymbolInfoDouble(
   string                   name,       // símbolo
   ENUM_SYMBOL_INFO_DOUBLE  prop_id,    // identificador de la propiedad
   double&                  double_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. El valor puede ser uno de los valores de la enumeración ENUM_SYMBOL_INFO_DOUBLE.

double_var

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

Valor devuelto

Valor del tipo double. 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.

La función SymbolInfoMarginRate() ofrece información sobre la cantidad del margen cobrado dependiendo del tipo y la dirección de la orden.

Ejemplo:

void OnTick()
  {
//--- obtenemos el spread de las propiedades del símbolo
   bool spreadfloat=SymbolInfoInteger(Symbol(),SYMBOL_SPREAD_FLOAT);
   string comm=StringFormat("Spread %s = %I64d puntos\r\n",
                            spreadfloat?"flotante":"fijo",
                            SymbolInfoInteger(Symbol(),SYMBOL_SPREAD));
//--- ahora nosotros mismos calculamos el spread
   double ask=SymbolInfoDouble(Symbol(),SYMBOL_ASK);
   double bid=SymbolInfoDouble(Symbol(),SYMBOL_BID);
   double spread=ask-bid;
   int spread_points=(int)MathRound(spread/SymbolInfoDouble(Symbol(),SYMBOL_POINT));
   comm=comm+"Spread calculado = "+(string)spread_points+" puntos";
   Comment(comm);
  }