下载MetaTrader 5
MQL5参考市场信息SymbolInfoInteger 

SymbolInfoInteger

返回一个规定交易样品的类似特质,该函数有两种变体

1. 快速返回属性值

long  SymbolInfoInteger(
   string                    name,      // 交易品种
   ENUM_SYMBOL_INFO_INTEGER  prop_id    // 属性标识符
 
   );

2. 返回真值或失败值取决于函数是否成功执行,如果成功,属性值通过引用从最后的参量传递到接受变量中

bool  SymbolInfoInteger(
   string                    name,      // 交易品种
   ENUM_SYMBOL_INFO_INTEGER  prop_id,   // 属性标识符
   long&                     long_var   // 这里假设属性值
   );

参量

name

[in] 交易样品名称

prop_id

[in] 交易样品属性标识符,值可以是计算式中 ENUM_SYMBOL_INFO_INTEGER 的一个。

long_var

[out] 长型变量接收要求变量的值。

返回值

长整型值 如果执行失败,使用GetLastError()函数可以获得有关的 错误 信息:

  • 5040 �C 指定交易品种名称的无效字符串参数,
  • 4301 �C 未知交易品种(金融工具),
  • 4302 �C 交易品种未选进“市场报价”(可用列表中未发现),
  • 4303 �C 交易品种属性的无效标识符。

注意

如果函数用于获得最近订单号信息,推荐使用 SymbolInfoTick() 函数。由于程序端连接交易账户,那么很可能不会出现单引号。这种情况下,请求的值将不会确定。

在大部分情况下,使用 SymbolInfoTick() 函数足以允许用户接收买价,买价,收盘价,交易量的值和单次调用时最近订单号的到达时间。

示例:

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);
  }