72 lines
2.5 KiB
Markdown
72 lines
2.5 KiB
Markdown
# 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);
|
|
}
|
|
```
|