Theo dõi sự thay đổi sự kiện theo loại
API MQL5 cho phép bạn yêu cầu các thay đổi gần đây không chỉ nói chung cho toàn bộ lịch hoặc theo quốc gia hay tiền tệ, mà còn trong phạm vi hẹp hơn, hoặc chính xác hơn là cho một loại sự kiện cụ thể.
Về lý thuyết, có thể nói rằng các hàm tích hợp sẵn cung cấp việc lọc sự kiện theo một số điều kiện cơ bản: thời gian, quốc gia, tiền tệ, hoặc loại sự kiện. Đối với các thuộc tính khác, chẳng hạn như mức độ quan trọng hoặc lĩnh vực kinh tế, bạn cần tự triển khai bộ lọc của riêng mình, và chúng ta sẽ xử lý việc này sau. Hiện tại, hãy giới thiệu hàm CalendarValueLastByEvent
.
int CalendarValueLastByEvent(ulong id, ulong &change_id, MqlCalendarValue &values[])
Hàm này điền vào mảng values
được truyền bằng tham chiếu với các bản ghi sự kiện thuộc một loại cụ thể có định danh id
đã xảy ra kể từ change_id
. Tham số change_id
này vừa là đầu vào vừa là đầu ra: mã gọi truyền vào đó nhãn của trạng thái quá khứ của lịch, sau đó các thay đổi được yêu cầu, và khi điều khiển trả về, hàm ghi nhãn hiện tại của trạng thái cơ sở dữ liệu lịch vào change_id
. Nó nên được sử dụng vào lần gọi hàm tiếp theo.
Nếu bạn truyền giá trị null vào change_id
, thì hàm không điền mảng mà chỉ gửi trạng thái hiện tại của cơ sở dữ liệu qua tham số change_id
.
Mảng có thể là động (sau đó nó sẽ tự động điều chỉnh theo lượng dữ liệu) hoặc kích thước cố định (nếu kích thước của nó không đủ, chỉ dữ liệu phù hợp mới được sao chép).
Giá trị đầu ra của hàm bằng số phần tử được sao chép vào mảng values
. Nếu không có thay đổi hoặc chỉ định change_id = 0
, hàm sẽ trả về 0.
Để kiểm tra lỗi, hãy phân tích biến tích hợp _LastError
. Một số mã lỗi có thể xảy ra bao gồm:
- 4004 - ERR_NOT_ENOUGH_MEMORY (không đủ bộ nhớ để hoàn thành yêu cầu),
- 5401 - ERR_CALENDAR_TIMEOUT (yêu cầu hết thời gian),
- 5400 - ERR_CALENDAR_MORE_DATA (kích thước của mảng cố định không đủ để lấy tất cả các giá trị).
Chúng ta sẽ không đưa ra ví dụ riêng cho CalendarValueLastByEvent
. Thay vào đó, hãy chuyển sang một nhiệm vụ phức tạp hơn, nhưng được yêu cầu nhiều, là truy vấn và lọc các mục lịch với các điều kiện tùy ý trên thuộc tính tin tức, nơi tất cả các hàm API "lịch" sẽ được sử dụng. Đây sẽ là chủ đề của phần tiếp theo.