SymbolInfoDouble

Gibt die entsprechende Eigenschaft des angegebenen Symbols zurück. Es gibt zwei Varianten der Funktion.

1. gibt den Wert der Eigenschaft sofort zurück.

double  SymbolInfoDouble(
   string                   name,      // Symbol
   ENUM_SYMBOL_INFO_DOUBLE  prop_id    // Identifikator der Eigenschaft 
   );

2. Gibt true oder false zurück, abhängig davon, ob die Funktion erfolgreich dirchgeführt wird. Im Erfolgsfall wird der Wert der Eigenschaft in die Empfangsvariable gesetzt, die durch Referenz vom letzten Parameter übertragen wird.  

bool  SymbolInfoDouble(
   string                   name,       // Symbol
   ENUM_SYMBOL_INFO_DOUBLE  prop_id,    // Identifikator der Eigenschaft
   double&                  double_var  // hier nehmen wir den wert der Eigenschaft 
   );

Parameter

name

[in] Symbolname.

prop_id

[in] Identifikator der Symboleigenschaft. Wert kann einer der Enumerationswerte ENUM_SYMBOL_INFO_DOUBLE sein.

double_var

[out]  Variable des Typs double, die den Wert der angeforderten Eigenschaft annimmt.

Rückgabewert

Wert des Typs double. Im Falle der Nichtausführung können Sie Fehlerinformation durch die Funktion GetLastError() erhalten:

  • 5040 – ungültiger string-Parameter für die Angabe des Symbolnamens,
  • 4301 - unbekanntes Symbol (Finanzinstrument)
  • 4302 - das Symbol nicht in der "Market Watch" ausgewählt (ist in der Liste nicht verfügbar),
  • 4303 - ungültiger Identifikator der Symboleigenschaft.

Hinweis

Wenn die Funktion wird verwendet, um Informationen über den letzten Tick zu bekommen, ist es besser SymbolInfoTick() zu verwenden. Es ist möglich, dass seit Verbinden des Terminals an das Handelskonto keine Preise des Symbols empfangen worden. In einem solchen Fall wird der Wert nicht bestimmt.

In den meisten Fällen reicht es aus, SymbolInfoTick() zu verwenden. Mit dieser Funktion können Sie durch einen einzelnen Anruf Werte von Ask, Bid, Last, Volume und Zeit der des letzten Ticks zu bekommen.

Die Funktion bietet Informationen über die Höhe der erhobenen Marge, je nach Art und Richtung des Auftrags SymbolInfoMarginRate().

Beispiel:

void OnTick()
  {
//--- erhalten wir Spread aus der Symboleigenschaften 
   bool spreadfloat=SymbolInfoInteger(Symbol(),SYMBOL_SPREAD_FLOAT);
   string comm=StringFormat("Spread %s = %I64d Punkte\r\n",
                            spreadfloat?"fliessend":"fixiert",
                            SymbolInfoInteger(Symbol(),SYMBOL_SPREAD));
//--- berechnen wir nun Spread selbsstaendig 
   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+"Berechneter Spread = "+(string)spread_points+" Punkte";
   Comment(comm);
 ;}