Lấy danh sách và mô tả các quốc gia có sẵn
Bạn có thể lấy danh sách đầy đủ các quốc gia mà sự kiện được phát trên lịch bằng hàm CalendarCountries
.
int CalendarCountries(MqlCalendarCountry &countries[])
Hàm này điền vào mảng countries
được truyền bằng tham chiếu với các cấu trúc MqlCalendarCountry. Mảng có thể là động hoặc cố định, với kích thước đủ lớn.
Khi thành công, hàm trả về số lượng mô tả quốc gia nhận được từ máy chủ hoặc 0 nếu có lỗi. Trong số các mã lỗi có thể có trong _LastError
, đặc biệt có thể gặp 5401 (ERR_CALENDAR_TIMEOUT
, vượt quá giới hạn thời gian yêu cầu) hoặc 5400 (ERR_CALENDAR_MORE_DATA
, nếu kích thước mảng cố định không đủ để chứa mô tả của tất cả các quốc gia). Trong trường hợp sau, hệ thống sẽ chỉ sao chép những gì vừa khít.
Hãy viết một kịch bản đơn giản CalendarCountries.mq5
, lấy danh sách đầy đủ các quốc gia và ghi log nó ra.
void OnStart()
{
MqlCalendarCountry countries[];
PRTF(CalendarCountries(countries));
ArrayPrint(countries);
}
2
3
4
5
6
Dưới đây là một ví dụ kết quả.
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" ...
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Điều quan trọng cần lưu ý là định danh 0 (mã WW
và tiền tệ giả ALL
) tương ứng với các sự kiện toàn cầu (liên quan đến nhiều quốc gia, ví dụ như các cuộc họp G7, G20), và tiền tệ EUR
được liên kết với một số quốc gia EU có sẵn trong lịch (như bạn thấy, không phải toàn bộ khu vực đồng Euro được trình bày). Ngoài ra, Liên minh Châu Âu chính nó có định danh chung 999.
Nếu bạn quan tâm đến một quốc gia cụ thể, bạn có thể kiểm tra sự có sẵn của nó bằng mã số theo tiêu chuẩn ISO 3166-1. Đặc biệt, trong log ở trên, các mã này được hiển thị ở cột đầu tiên (trường id
).
Để lấy mô tả của một quốc gia bằng ID được chỉ định trong tham số id
, bạn có thể sử dụng hàm CalendarCountryById
.
bool CalendarCountryById(const long id, MqlCalendarCountry &country)
Nếu thành công, hàm sẽ trả về true
và điền vào các trường của cấu trúc country
.
Nếu quốc gia không được tìm thấy, chúng ta nhận được false
, và trong _LastError
sẽ nhận được mã lỗi 5402 (ERR_CALENDAR_NO_DATA
).
Để xem ví dụ sử dụng hàm này, hãy xem Lấy bản ghi sự kiện theo quốc gia hoặc tiền tệ.