获取可用国家/地区的列表和描述
你可以使用 CalendarCountries 函数获取日历中播报事件的完整国家/地区列表。
int CalendarCountries(MqlCalendarCountry &countries[])
该函数会使用 MqlCalendarCountry 结构体来填充通过引用传递的 countries 数组。该数组可以是动态的,也可以是具有足够大小的固定数组。
成功时,该函数返回从服务器接收到的国家/地区描述数量,如果出错则返回 0。在 _LastError 中可能的错误代码中,我们尤其可能发现 5401(ERR_CALENDAR_TIMEOUT,表示请求超时)或 5400(ERR_CALENDAR_MORE_DATA,表示固定数组的大小不足以获取所有国家/地区的描述)。在后一种情况下,系统将仅复制适合的部分。
我们编写一个简单的脚本 CalendarCountries.mq5,它获取完整的国家/地区列表并将其输出到日志中。
void OnStart()
{
MqlCalendarCountry countries[];
PRTF(CalendarCountries(countries));
ArrayPrint(countries);
}
|
以下是一个示例结果。
CalendarCountries(countries)=23 / ok
[id] [name] [code] [currency] [currency_symbol] [url_name] [reserved]
[ 0] 554 "New Zealand" "NZ" "NZD" "$" "new-zealand" ...
[ 1] 999 "European Union" "EU" "EUR" "�" "european-union" ...
[ 2] 392 "Japan" "JP" "JPY" "¥" "japan" ...
[ 3] 124 "Canada" "CA" "CAD" "$" "canada" ...
[ 4] 36 "Australia" "AU" "AUD" "$" "australia" ...
[ 5] 156 "China" "CN" "CNY" "¥" "china" ...
[ 6] 380 "Italy" "IT" "EUR" "�" "italy" ...
[ 7] 702 "Singapore" "SG" "SGD" "R$" "singapore" ...
[ 8] 276 "Germany" "DE" "EUR" "�" "germany" ...
[ 9] 250 "France" "FR" "EUR" "�" "france" ...
[10] 76 "Brazil" "BR" "BRL" "R$" "brazil" ...
[11] 484 "Mexico" "MX" "MXN" "Mex$" "mexico" ...
[12] 710 "South Africa" "ZA" "ZAR" "R" "south-africa" ...
[13] 344 "Hong Kong" "HK" "HKD" "HK$" "hong-kong" ...
[14] 356 "India" "IN" "INR" "₹" "india" ...
[15] 578 "Norway" "NO" "NOK" "Kr" "norway" ...
[16] 0 "Worldwide" "WW" "ALL" "" "worldwide" ...
[17] 840 "United States" "US" "USD" "$" "united-states" ...
[18] 826 "United Kingdom" "GB" "GBP" "£" "united-kingdom" ...
[19] 756 "Switzerland" "CH" "CHF" "₣" "switzerland" ...
[20] 410 "South Korea" "KR" "KRW" "₩" "south-korea" ...
[21] 724 "Spain" "ES" "EUR" "�" "spain" ...
[22] 752 "Sweden" "SE" "SEK" "Kr" "sweden" ...
|
值得注意的是,标识符 0(代码 "WW" 和伪货币 "ALL")对应于全球性事件(涉及多国,例如 G7、G20 会议等多),而货币 "EUR" 与日历中可用的几个欧盟国家相关联(可以看到,并没有显示整个欧元区)。此外,欧盟本身有一个通用标识符 999。
如果你对特定国家/地区感兴趣,可以根据 ISO 3166-1 标准通过其数字代码检查其可用性。特别地,在上面的日志中,这些代码显示在第一列(id 字段)。
要通过其 ID(在 id 参数中指定)获取单个国家/地区的描述,你可以使用 CalendarCountryById 函数。
bool CalendarCountryById(const long id, MqlCalendarCountry &country)
如果成功,该函数将返回 true 并填充 country 结构体的字段。
如果未找到该国家/地区,我们将得到 false,并且在 _LastError 中将得到错误代码 5402 (ERR_CALENDAR_NO_DATA)。
有关使用此函数的示例,请参见 按国家/地区或货币获取事件记录。