# SymbolInfoDouble [Reference](https://docs.mql4.com/marketinformation/symbolinfodouble); Returns the corresponding property of a specified symbol. There are 2 variants of the function. 1. Immediately returns the property value. ```mq4 double SymbolInfoDouble( string name, // symbol ENUM_SYMBOL_INFO_DOUBLE prop_id // identifier of the property ); ``` 2. Returns true or false depending on whether a function is successfully performed. In case of success, the value of the property is placed into a recipient variable, passed by reference by the last parameter. ```mq4 bool SymbolInfoDouble( string name, // symbol ENUM_SYMBOL_INFO_DOUBLE prop_id, // identifier of the property double& double_var // here we accept the property value ); ``` Parameters name [in] Symbol name. prop_id [in] Identifier of a symbol property. The value can be one of the values of the ENUM_SYMBOL_INFO_DOUBLE enumeration. double_var [out] Variable of double type receiving the value of the requested property. Return Value The value of double type. In case of execution failure, information about the error can be obtained using GetLastError() function: 4106 — symbol is not selected in "Market Watch" (not found in the list of available ones), 4051 — invalid identifier of a symbol property, 4024 — internal error. Note It is recommended to use SymbolInfoTick() if the function is used for getting information about the last tick. It may well be that not a single quote has appeared yet since the terminal is connected to a trading account. In such a case, the requested value will be indefinite. In most cases, it is enough to use SymbolInfoTick() function allowing a user to receive the values of Ask, Bid, Last, Volume and the time of the last tick's arrival during a single call. Example: ```mq4 void OnTick() { //--- obtain spread from the symbol properties bool spreadfloat=SymbolInfoInteger(Symbol(),SYMBOL_SPREAD_FLOAT); string comm=StringFormat("Spread %s = %I64d points\r\n", spreadfloat?"floating":"fixed", SymbolInfoInteger(Symbol(),SYMBOL_SPREAD)); //--- now let's calculate the spread by ourselves 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); } ```