SymbolInfoDouble

Rend la propriété correspondante du symbole indiqué. Il y a 2 variantes de la fonction.

1. Rend directement la valeur de la propriété.

double  SymbolInfoDouble(
   string                   name,       // symbole
   ENUM_SYMBOL_INFO_DOUBLE  prop_id     // identificateur de la propriété
   );

2. Rend true ou false en fonction du succès de l'exécution de la fonction.  En cas du succès la valeur de la propriété se place à la variable de réception transmise selon la référence par le dernier paramètre.

bool  SymbolInfoDouble(
   string                   name,       // symbole
   ENUM_SYMBOL_INFO_DOUBLE  prop_id,    // identificateur de la propriété
   double&                  double_var  // acceptons par ici la valeur de la propriété
   );

Paramètres

name

[in]  Le nom du symbole.

prop_id

[in]  L'identificateur de la propriété du symbole. La valeur peut être une des valeurs ENUM_SYMBOL_INFO_DOUBLE.

double_var

[out] La variable du type double, qui prend la valeur de la propriété demandée.

La valeur rendue

La valeur du type double. En cas d'une mauvaise exécution on peut recevoir l'information sur l'erreurà l'aide de la fonctionGetLastError():

  • 5040 — le paramètre de chaîne incorrecte pour l'indication du nom du symbole,
  • 4301 — un symbole inconnu (l'instrument financier),
  • 4302 — le symbole n'est pas choisi dans "l'Aperçu du marché" (est absent dans la liste des accessibles),
  • 4303 — l'identificateur incorrecte de la propriété du symbole.

Note

Si la fonction est utilisée pour la réception de l'information sur un dernier tick, il vaut mieux utiliserSymbolInfoTick(). Il est possible que selon ce symbole dès le moment de la connexion du terminal au compte commercial il n'y avait pas encore aucune cotation. Dans un tel cas la valeur demandée sera incertaine.

Il suffit d'utiliser dans la plupart des cas la fonction SymbolInfoTick(), qui permet de recevoir pour un appel les valeurs Ask, Bid, Last, Volume et le temps de l'arrivée du dernier tick.

La fonction SymbolInfoMarginRate() fournit des données sur le montant de la marge facturée en fonction du type et de la direction de l'ordre.

Exemple:

void OnTick()
  {
//--- recevrons le spread des propriétés du symbole
   bool spreadfloat=SymbolInfoInteger(Symbol(),SYMBOL_SPREAD_FLOAT);
   string comm=StringFormat("Spread %s = %I64d des points\r\n",
                            spreadfloat?"flottant":"fixé",
                            SymbolInfoInteger(Symbol(),SYMBOL_SPREAD));
//--- maintenant calculerons nous-même le 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 calculé = "+(string)spread_points+" des points";
   Comment(comm);
  }