SymbolInfoString
SymbolInfoString
一个规定交易品种返回相对应的特性,该函数中有两个变体。
- 立即返回属性值
string SymbolInfoString(
string name, // 交易品种
ENUM_SYMBOL_INFO_STRING prop_id // 属性标识符
);- 返回true或者false,由该函数运行成功与否来决定,如果成功,在培育变量通过引用传递到最后常量中函数属性固定。
bool SymbolInfoString(
string name, // 交易品种
ENUM_SYMBOL_INFO_STRING prop_id, // 属性标识符
string& string_var // 这里假设属性值
);参量
- 名称
[in] 交易品种名称。
- prop_id
[in] 一个交易品种属性标识符,值是 ENUM_SYMBOL_INFO_STRING 其中一个。
- string_var
[out] 字符串类型变量接收需求属性的值。
返回值
字符串的值。如果执行失败,使用GetLastError()函数可以获得有关的错误信息:
- 5040 指定交易品种名称的无效字符串参数,
- 4301 未知交易品种(金融工具),
- 4302 交易品种未选进“市场报价”(可用列表中未发现),
- 4303 交易品种属性的无效标识符。
注意
如果函数用于获得最近订单号信息,推荐使用SymbolInfoTick()函数。由于程序端连接交易账户,那么很可能不会出现单引号。这种情况下,请求的值将不会确定。
在大部分情况下,使用 SymbolInfoTick() 函数足以允许用户接收买价,买价,收盘价,交易量的值和单次调用时最近订单号的到达时间。
示例:
#define SYMBOL_NAME "USDJPY"
//+------------------------------------------------------------------+
//| EA交易初始化函数 |
//+------------------------------------------------------------------+
void OnStart()
{
//--- 获取SYMBOL_NAME交易品种的字符串数据
string currency_base = SymbolInfoString(SYMBOL_NAME, SYMBOL_CURRENCY_BASE); // 交易品种的基础货币
string currency_profit = SymbolInfoString(SYMBOL_NAME, SYMBOL_CURRENCY_PROFIT); // 盈利货币
string currency_margin = SymbolInfoString(SYMBOL_NAME, SYMBOL_CURRENCY_MARGIN); // 预付款货币
string symbol_descript = SymbolInfoString(SYMBOL_NAME, SYMBOL_DESCRIPTION); // 交易品种字符串描述
//--- 使用获得的数据创建消息文本
string text=StringFormat("Symbol %s:\n"+
"- Currency Base: %s\n"+
"- Currensy Profit: %s\n"+
"- Currency Margin: %s\n"+
"- Symbol Description: %s",
SYMBOL_NAME, currency_base,
currency_profit, currency_margin,
symbol_descript);
//--- 将获得的数据发送到日志
Print(text);
/*
Symbol USDJPY:
- Currency Base: USD
- Currensy Profit: JPY
- Currency Margin: USD
- Symbol Description: US Dollar vs Yen
*/
}