Gửi các khung dữ liệu từ agent đến terminal
MQL5 cung cấp một nhóm hàm để tổ chức việc truyền và xử lý các kết quả tối ưu hóa ứng dụng của riêng bạn, ngoài các chỉ số và thống kê tài chính tiêu chuẩn. Một trong số đó, FrameAdd
, được thiết kế để gửi dữ liệu từ các agent kiểm tra. Các hàm khác được dùng để nhận dữ liệu trong terminal.
Định dạng trao đổi dữ liệu dựa trên các khung (frames). Đây là một cấu trúc nội bộ đặc biệt mà Expert Advisor có thể điền vào trong tester dựa trên một mảng kiểu đơn giản (không chứa chuỗi, đối tượng lớp hoặc mảng động) hoặc sử dụng một tệp với tên được chỉ định (tệp phải được tạo trước trong sandbox của agent). Bằng cách gọi hàm FrameAdd
nhiều lần, Expert Advisor có thể gửi một loạt khung đến terminal. Không có giới hạn về số lượng khung.
Có hai phiên bản của hàm FrameAdd
.
bool FrameAdd(const string name, ulong id, double value, const string filename)
bool FrameAdd(const string name, ulong id, double value, const void &data[])
Hàm thêm một khung dữ liệu vào bộ đệm để gửi đến terminal. Các tham số name
và id
là nhãn công khai có thể được sử dụng để lọc các khung trong hàm FrameFilter
. Tham số value
cho phép truyền một giá trị số tùy ý có thể được sử dụng khi một giá trị là đủ. Dữ liệu cồng kềnh hơn được chỉ định trong mảng data
(có thể là mảng của các cấu trúc đơn giản) hoặc trong một tệp có tên filename
.
Nếu không có dữ liệu cồng kềnh để truyền (ví dụ, bạn chỉ cần truyền trạng thái của quá trình), hãy sử dụng dạng đầu tiên của hàm và chỉ định NULL thay vì chuỗi với tên tệp hoặc dạng thứ hai với một mảng giả có kích thước bằng 0.
Hàm trả về true
trong trường hợp thành công.
Hàm chỉ có thể được gọi trong trình xử lý OnTester
.
Hàm không có hiệu lực khi được gọi trong một bài kiểm tra đơn giản, tức là ngoài quá trình tối ưu hóa.
Bạn chỉ có thể gửi dữ liệu từ các agent đến terminal. Không có cơ chế nào trong MQL5 để gửi dữ liệu theo hướng ngược lại trong quá trình tối ưu hóa. Tất cả dữ liệu mà Expert Advisor muốn gửi đến các agent phải được chuẩn bị và sẵn có (dưới dạng tham số đầu vào hoặc tệp được kết nối bằng chỉ thị) trước khi bắt đầu tối ưu hóa.
Chúng ta sẽ xem xét một ví dụ về việc sử dụng FrameAdd
sau khi làm quen với các hàm của máy chủ trong phần tiếp theo.