SymbolInfoInteger

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é.

long  SymbolInfoInteger(
   string                    name,      // symbole
   ENUM_SYMBOL_INFO_INTEGER  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  SymbolInfoInteger(
   string                    name,      // symbole
   ENUM_SYMBOL_INFO_INTEGER  prop_id,   // identificateur de la propriété
   long&                     long_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_INTEGER.

long_var

[out] La valeur du type long, recevant la valeur de la propriété demandée.

La valeur rendue

La valeur du type long. 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.

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);
  }