SymbolInfoDouble
SymbolInfoDouble
返回一个规定交易样品的类似特性,函数有两个变量。
- 快速返回规定值。
double SymbolInfoDouble(
string name, // 交易品种
ENUM_SYMBOL_INFO_DOUBLE prop_id // 属性标识符
);- 返回真值或失败值取决于函数操作是否成功,如果成功,属性值通过引用从最后的参量传递到接受变量中。
bool SymbolInfoDouble(
string name, // 交易品种
ENUM_SYMBOL_INFO_DOUBLE prop_id, // 属性标识符
double& double_var // 这里假设属性值
);参量
- name
[in] 交易品种名称
- prop_id
[in] 交易样品属性标识符,值可能是计算式 ENUM_SYMBOL_INFO_DOUBLE 中的一个。
- double_var
[out]双精度型变量接收需求属性的值
返回值
双精度型值。如果执行失败,使用GetLastError()函数可以获得有关的错误信息:
- 5040 指定交易品种名称的无效字符串参数,
- 4301 未知交易品种(金融工具),
- 4302 交易品种未选进“市场报价”(可用列表中未发现),
- 4303 交易品种属性的无效标识符。
注意
如果函数用于获得最近订单号信息,推荐使用SymbolInfoTick()函数。由于程序端连接交易账户,那么很可能不会出现单引号。这种情况下,请求的值将不会确定。
在大部分情况下,使用 SymbolInfoTick() 函数足以允许用户接收买价,买价,收盘价,交易量的值和单次调用时最近订单号的到达时间。
SymbolInfoMarginRate()函数根据订单类型和方向提供有关所收取预付款金额的数据。
示例:
void OnTick()
{
//--- 从交易品种属性获得点差
bool spreadfloat=SymbolInfoInteger(Symbol(),SYMBOL_SPREAD_FLOAT);
string comm=StringFormat("Spread %s = %I64d points\r\n",
spreadfloat?"floating":"fixed",
SymbolInfoInteger(Symbol(),SYMBOL_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);
}