Cấu trúc Lịch Kinh tế
Phần này mô tả các cấu trúc để làm việc với lịch kinh tế có sẵn trực tiếp trên nền tảng MetaTrader. Lịch kinh tế là một bộ bách khoa toàn thư hoàn chỉnh bao gồm mô tả các chỉ số kinh tế vĩ mô, ngày công bố và mức độ quan trọng. Các giá trị liên quan của chỉ số kinh tế vĩ mô được gửi đến nền tảng MetaTrader ngay tại thời điểm công bố và hiển thị trên biểu đồ dưới dạng các thẻ cho phép bạn theo dõi trực quan các chỉ số cần thiết theo quốc gia, tiền tệ và mức độ quan trọng.
Các hàm lịch kinh tế cho phép phân tích tự động các sự kiện đến theo tiêu chí quan trọng tùy chỉnh từ góc độ các quốc gia/cặp tiền tệ cần thiết.
Mô tả quốc gia được xác định bởi cấu trúc MqlCalendarCountry
. Nó được sử dụng trong các hàm CalendarCountryById() và CalendarCountries()
struct MqlCalendarCountry
{
ulong id; // ID quốc gia (ISO 3166-1)
string name; // tên quốc gia (mã hóa terminal hiện tại)
string code; // mã quốc gia (ISO 3166-1 alpha-2)
string currency; // mã tiền tệ quốc gia
string currency_symbol;// ký hiệu tiền tệ
string url_name; // tên quốc gia dùng trong URL website mql5.com
};
2
3
4
5
6
7
8
9
Mô tả sự kiện được xác định bởi cấu trúc MqlCalendarEvent
. Nó được sử dụng trong các hàm CalendarEventById(), CalendarEventByCountry() và CalendarEventByCurrency()
struct MqlCalendarEvent
{
ulong id; // ID sự kiện
ENUM_CALENDAR_EVENT_TYPE type; // loại sự kiện từ enum ENUM_CALENDAR_EVENT_TYPE
ENUM_CALENDAR_EVENT_SECTOR sector;// lĩnh vực liên quan
ENUM_CALENDAR_EVENT_FREQUENCY frequency; // tần suất sự kiện
ENUM_CALENDAR_EVENT_TIMEMODE time_mode; // chế độ thời gian
ulong country_id; // ID quốc gia
ENUM_CALENDAR_EVENT_UNIT unit; // đơn vị đo giá trị chỉ số
ENUM_CALENDAR_EVENT_IMPORTANCE importance; // độ quan trọng
ENUM_CALENDAR_EVENT_MULTIPLIER multiplier; // hệ số nhân giá trị
uint digits; // số chữ số thập phân
string source_url; // URL nguồn công bố
string event_code; // mã sự kiện
string name; // tên sự kiện (ngôn ngữ terminal)
};
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Giá trị sự kiện được xác định bởi cấu trúc MqlCalendarValue
. Nó được sử dụng trong các hàm CalendarValueById(), CalendarValueHistoryByEvent(), CalendarValueHistory(), CalendarValueLastByEvent() và CalendarValueLast()
struct MqlCalendarValue
{
ulong id; // ID giá trị
ulong event_id; // ID sự kiện
datetime time; // thời gian sự kiện
datetime period; // chu kỳ báo cáo
int revision; // phiên bản điều chỉnh
long actual_value; // giá trị thực tế (x10^6 hoặc LONG_MIN)
long prev_value; // giá trị trước đó (x10^6 hoặc LONG_MIN)
long revised_prev_value; // giá trị trước đã điều chỉnh
long forecast_value; // giá trị dự báo (x10^6 hoặc LONG_MIN)
ENUM_CALENDAR_EVENT_IMPACT impact_type; // mức độ ảnh hưởng
//--- Hàm kiểm tra giá trị
bool HasActualValue(void) const; // trả true nếu có actual_value
bool HasPreviousValue(void) const; // trả true nếu có prev_value
bool HasRevisedValue(void) const; // trả true nếu có revised_prev_value
bool HasForecastValue(void) const; // trả true nếu có forecast_value
//--- Hàm lấy giá trị
double GetActualValue(void) const; // trả actual_value hoặc nan
double GetPreviousValue(void) const; // trả prev_value hoặc nan
double GetRevisedValue(void) const; // trả revised_prev_value hoặc nan
double GetForecastValue(void) const; // trả forecast_value hoặc nan
};
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Cấu trúc MqlCalendarValue
cung cấp các phương thức để kiểm tra và lấy giá trị từ các trường actual_value
, forecast_value
, prev_value
và revised_prev_value
. Nếu không có giá trị, trường sẽ lưu LONG_MIN
(-9223372036854775808).
Lưu ý: Các giá trị trong các trường này đã được nhân với một triệu. Khi nhận giá trị qua các hàm, cần kiểm tra nếu giá trị bằng LONG_MIN
thì chia cho 1,000,000 để lấy giá trị thực. Hoặc sử dụng các hàm của cấu trúc để kiểm tra và lấy giá trị.
Ví dụ xử lý sự kiện lịch:
//--- Tạo cấu trúc lưu giá trị đã điều chỉnh
struct AdjustedCalendarValue
{
ulong id;
ulong event_id;
datetime time;
datetime period;
int revision;
double actual_value;
double prev_value;
double revised_prev_value;
double forecast_value;
ENUM_CALENDAR_EVENT_IMPACT impact_type;
};
//+------------------------------------------------------------------+
//| Hàm chính |
//+------------------------------------------------------------------+
void OnStart()
{
string EU_code="EU";
MqlCalendarValue values[];
datetime date_from=D'01.01.2021';
datetime date_to=0;
if(!CalendarValueHistory(values, date_from, date_to, EU_code))
{
PrintFormat("Lỗi! Không lấy được sự kiện cho country_code=%s", EU_code);
return;
}
//... (phần xử lý và in giá trị)
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
Tần suất sự kiện
Tần suất sự kiện được chỉ định trong cấu trúc MqlCalendarEvent
. Các giá trị có thể lấy từ danh sách ENUM_CALENDAR_EVENT_FREQUENCY
.
ID | Mô tả |
---|---|
CALENDAR_FREQUENCY_NONE | Không đặt tần suất phát hành |
CALENDAR_FREQUENCY_WEEK | Phát hành mỗi tuần một lần |
CALENDAR_FREQUENCY_MONTH | Phát hành mỗi tháng một lần |
CALENDAR_FREQUENCY_QUARTER | Phát hành mỗi quý một lần |
CALENDAR_FREQUENCY_YEAR | Phát hành mỗi năm một lần |
CALENDAR_FREQUENCY_DAY | Phát hành mỗi ngày một lần |
Loại sự kiện
Loại sự kiện được chỉ định trong cấu trúc MqlCalendarEvent
. Các giá trị có thể lấy từ danh sách ENUM_CALENDAR_EVENT_TYPE
.
ID | Mô tả |
---|---|
CALENDAR_TYPE_EVENT | Sự kiện (cuộc họp, bài phát biểu, v.v.) |
CALENDAR_TYPE_INDICATOR | Chỉ số |
CALENDAR_TYPE_HOLIDAY | Ngày lễ |
Lĩnh vực sự kiện
Lĩnh vực của sự kiện được chỉ định trong cấu trúc MqlCalendarEvent
. Các giá trị có thể lấy từ danh sách ENUM_CALENDAR_EVENT_SECTOR
.
ID | Mô tả |
---|---|
CALENDAR_SECTOR_NONE | Không đặt lĩnh vực |
CALENDAR_SECTOR_MARKET | Thị trường, trao đổi |
CALENDAR_SECTOR_GDP | Tổng sản phẩm quốc nội (GDP) |
CALENDAR_SECTOR_JOBS | Thị trường lao động |
CALENDAR_SECTOR_PRICES | Giá cả |
CALENDAR_SECTOR_MONEY | Tiền tệ |
CALENDAR_SECTOR_TRADE | Thương mại |
CALENDAR_SECTOR_GOVERNMENT | Chính phủ |
CALENDAR_SECTOR_BUSINESS | Kinh doanh |
CALENDAR_SECTOR_CONSUMER | Tiêu dùng |
CALENDAR_SECTOR_HOUSING | Nhà ở |
CALENDAR_SECTOR_TAXES | Thuế |
CALENDAR_SECTOR_HOLIDAYS | Ngày lễ |
Mức độ quan trọng của sự kiện
Mức độ quan trọng của sự kiện được chỉ định trong cấu trúc MqlCalendarEvent
. Các giá trị có thể lấy từ danh sách ENUM_CALENDAR_EVENT_IMPORTANCE
.
ID | Mô tả |
---|---|
CALENDAR_IMPORTANCE_NONE | Không đặt mức độ quan trọng |
CALENDAR_IMPORTANCE_LOW | Mức quan trọng thấp |
CALENDAR_IMPORTANCE_MODERATE | Mức quan trọng trung bình |
CALENDAR_IMPORTANCE_HIGH | Mức quan trọng cao |
Tần suất sự kiện được chỉ định trong cấu trúc MqlCalendarEvent. Các giá trị có thể được thiết lập trong danh sách ENUM_CALENDAR_EVENT_FREQUENCY |
ID | Mô tả |
---|---|
CALENDAR_FREQUENCY_NONE | Tần suất phát hành không được thiết lập |
CALENDAR_FREQUENCY_WEEK | Được phát hành một lần mỗi tuần |
CALENDAR_FREQUENCY_MONTH | Được phát hành một lần mỗi tháng |
CALENDAR_FREQUENCY_QUARTER | Được phát hành một lần mỗi quý |
CALENDAR_FREQUENCY_YEAR | Được phát hành một lần mỗi năm |
CALENDAR_FREQUENCY_DAY | Được phát hành một lần mỗi ngày |
Loại sự kiện được chỉ định trong cấu trúc MqlCalendarEvent. Các giá trị có thể được thiết lập trong danh sách ENUM_CALENDAR_EVENT_TYPE
ID | Mô tả |
---|---|
CALENDAR_TYPE_EVENT | Sự kiện (họp, bài phát biểu, v.v.) |
CALENDAR_TYPE_INDICATOR | Chỉ số |
CALENDAR_TYPE_HOLIDAY | Ngày lễ |
Lĩnh vực kinh tế mà sự kiện liên quan được chỉ định trong cấu trúc MqlCalendarEvent. Các giá trị có thể được thiết lập trong danh sách ENUM_CALENDAR_EVENT_SECTOR
ID | Mô tả |
---|---|
CALENDAR_SECTOR_NONE | Lĩnh vực không được thiết lập |
CALENDAR_SECTOR_MARKET | Thị trường, sàn giao dịch |
CALENDAR_SECTOR_GDP | Tổng sản phẩm quốc nội (GDP) |
CALENDAR_SECTOR_JOBS | Thị trường lao động |
CALENDAR_SECTOR_PRICES | Giá cả |
CALENDAR_SECTOR_MONEY | Tiền tệ |
CALENDAR_SECTOR_TRADE | Giao dịch |
CALENDAR_SECTOR_GOVERNMENT | Chính phủ |
CALENDAR_SECTOR_BUSINESS | Doanh nghiệp |
CALENDAR_SECTOR_CONSUMER | Tiêu dùng |
CALENDAR_SECTOR_HOUSING | Nhà ở |
CALENDAR_SECTOR_TAXES | Thuế |
CALENDAR_SECTOR_HOLIDAYS | Ngày lễ |
Mức độ quan trọng của sự kiện được chỉ định trong cấu trúc MqlCalendarEvent. Các giá trị có thể được thiết lập trong danh sách ENUM_CALENDAR_EVENT_IMPORTANCE
ID | Mô tả |
---|---|
CALENDAR_IMPORTANCE_NONE | Mức độ quan trọng không được thiết lập |
CALENDAR_IMPORTANCE_LOW | Mức độ quan trọng thấp |
CALENDAR_IMPORTANCE_MODERATE | Mức độ quan trọng trung bình |
CALENDAR_IMPORTANCE_HIGH | Mức độ quan trọng cao |
Loại đơn vị đo lường được sử dụng để hiển thị giá trị sự kiện được chỉ định trong cấu trúc MqlCalendarEvent. Các giá trị có thể được thiết lập trong danh sách ENUM_CALENDAR_EVENT_UNIT |
ID | Mô tả |
---|---|
CALENDAR_UNIT_NONE | Đơn vị đo lường không được thiết lập |
CALENDAR_UNIT_PERCENT | Phần trăm |
CALENDAR_UNIT_CURRENCY | Tiền tệ quốc gia |
CALENDAR_UNIT_HOUR | Giờ |
CALENDAR_UNIT_JOB | Công việc |
CALENDAR_UNIT_RIG | Giàn khoan |
CALENDAR_UNIT_USD | USD |
CALENDAR_UNIT_PEOPLE | Con người |
CALENDAR_UNIT_MORTGAGE | Khoản vay thế chấp |
CALENDAR_UNIT_VOTE | Phiếu bầu |
CALENDAR_UNIT_BARREL | Thùng |
CALENDAR_UNIT_CUBICFEET | Feet khối |
CALENDAR_UNIT_POSITION | Vị thế ròng không thương mại |
CALENDAR_UNIT_BUILDING | Tòa nhà |
Trong một số trường hợp, các giá trị tham số kinh tế yêu cầu một hệ số nhân được thiết lập trong cấu trúc MqlCalendarEvent. Các giá trị hệ số nhân có thể được thiết lập trong danh sách ENUM_CALENDAR_EVENT_MULTIPLIER
ID | Mô tả |
---|---|
CALENDAR_MULTIPLIER_NONE | Hệ số nhân không được thiết lập |
CALENDAR_MULTIPLIER_THOUSANDS | Nghìn |
CALENDAR_MULTIPLIER_MILLIONS | Triệu |
CALENDAR_MULTIPLIER_BILLIONS | Tỷ |
CALENDAR_MULTIPLIER_TRILLIONS | Nghìn tỷ |
Tác động tiềm tàng của sự kiện đến tỷ giá tiền tệ quốc gia được chỉ định trong cấu trúc MqlCalendarValue. Các giá trị có thể được thiết lập trong danh sách ENUM_CALENDAR_EVENT_IMPACT
ID | Mô tả |
---|---|
CALENDAR_IMPACT_NA | Tác động không được thiết lập |
CALENDAR_IMPACT_POSITIVE | Tác động tích cực |
CALENDAR_IMPACT_NEGATIVE | Tác động tiêu cực |
Thời gian sự kiện được chỉ định trong cấu trúc MqlCalendarEvent. Các giá trị có thể được thiết lập trong danh sách ENUM_CALENDAR_EVENT_TIMEMODE
ID | Mô tả |
---|---|
CALENDAR_TIMEMODE_DATETIME | Nguồn công bố thời gian chính xác của sự kiện |
CALENDAR_TIMEMODE_DATE | Sự kiện kéo dài cả ngày |
CALENDAR_TIMEMODE_NOTIME | Nguồn không công bố thời gian của sự kiện |
CALENDAR_TIMEMODE_TENTATIVE | Nguồn công bố ngày của sự kiện thay vì thời gian chính xác. Thời gian được chỉ định khi sự kiện xảy ra. |
Xem thêm