MQL5 RiferimentoMarket InfoSymbolInfoDouble 

SymbolInfoDouble

Restituisce la proprietà corrispondente di un simbolo specificato. Ci sono due varianti della funzione.

1. Restituisce immediatamente il valore della proprietà.

double  SymbolInfoDouble(
   string                   name,       // simbolo
   ENUM_SYMBOL_INFO_DOUBLE  prop_id     // identificatore della proprietà
   );

2. Restituisce true o false a seconda che una funzione viene eseguita con successo. In caso di successo, il valore della proprietà è posto in una variabile recipiente, passato per riferimento dall' ultimo parametro.

bool  SymbolInfoDouble(
   string                   name,       // simbolo
   ENUM_SYMBOL_INFO_DOUBLE  prop_id,    // identificatore della proprietà
   double&                  double_var  // qui assumiamo il valore della proprietà
   );

Parametri

name

[in] Nome simbolo.

prop_id

[in] Identificatore di una proprietà simbolo. Il valore può essere uno dei valori dell'enumerazione ENUM_SYMBOL_INFO_DOUBLE.

double_var

[out] Variabile di tipo double ricevente il valore della proprietà richiesta.

Valore restituito

Il valore di tipo double. In caso di esecuzione fallita, le informazioni circa l'errore possono essere ottenute usando la funzione GetLastError():

  • 5040 – invalid string parameter for specifying a symbol name [trad. - parametri stringa non validi per specificare il nome del simbolo]
  • 4301 – unknown symbol (financial instrument) [trad. - simbolo sconosciuto (strumento finanziario)]
  • 4302 – symbol is not selected in "Market Watch" (not found in the list of available ones) [trad. - il simbolo non è stato selezionato nel Market Watch" (non trovato nella lista di quelli disponibili)],
  • 4303 – invalid identifier of a symbol property [trad. - identificatore della proprietà del simbolo, non valido]

Nota

E' raccomandato usare SymbolInfoTick() se la funzione viene usata per ottenere le informazioni circa l'ultimo tick. Può ben essere che non una singola citazione sia già è apparsa da quando il terminale è collegato ad un conto di trading. In tal caso, il valore richiesto sarà indefinito.

Nella maggior parte dei casi, è sufficiente utilizzare la funzione SymbolInfoTick() che permette a un utente di ricevere i valori di Ask, Bid, Last, Volume e l'orario di arrivo dell'ultimo tick durante una singola chiamata.

La funzione SymbolInfoMarginRate() fornisce dati sulla quantità di margine addebitato in base al tipo di ordine ed alla direzione.

Esempio:

void OnTick()
  {
//--- ottiene lo spread dalle proprietà del simbolo
   bool spreadfloat=SymbolInfoInteger(Symbol(),SYMBOL_SPREAD_FLOAT);
   string comm=StringFormat("Spread %s = %I64d points\r\n",
                            spreadfloat?"floating":"fixed",
                            SymbolInfoInteger(Symbol(),SYMBOL_SPREAD));
//--- ora calcoliamo da noi stessi lo 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+"Calculated spread = "+(string)spread_points+" points";
   Comment(comm);
  }