Trực quan hóa kiểm tra: biểu đồ, đối tượng, chỉ báo
Tester cho phép kiểm tra theo hai cách khác nhau: có và không có trực quan hóa. Phương pháp được chọn bằng cách chọn tùy chọn tương ứng trên tab cài đặt chính của tester.
Khi bật trực quan hóa, tester mở một cửa sổ riêng để tái hiện các hoạt động giao dịch và hiển thị các chỉ báo cùng đối tượng. Mặc dù nó mang tính trực quan, chúng ta không cần phải xem nó trong mọi trường hợp, mà chỉ dành cho các chương trình có giao diện người dùng (ví dụ, bảng giao dịch hoặc đánh dấu có kiểm soát được thực hiện bởi các đối tượng đồ họa). Đối với các Expert Advisors khác, chỉ việc thực thi thuật toán theo chiến lược đã thiết lập là quan trọng. Điều này có thể được kiểm tra mà không cần trực quan hóa, giúp tăng tốc quá trình đáng kể. Nhân tiện, đây là chế độ mà các lần chạy kiểm tra được thực hiện trong quá trình tối ưu hóa.
Trong quá trình kiểm tra và tối ưu hóa "ngầm" như vậy, không có đối tượng đồ họa nào được xây dựng. Do đó, khi truy cập các thuộc tính của đối tượng, Expert Advisor sẽ nhận được giá trị bằng không. Vì vậy, bạn chỉ có thể kiểm tra việc làm việc với các đối tượng và biểu đồ khi kiểm tra ở chế độ trực quan.
Trước đây, trong phần Kiểm tra chỉ báo, chúng ta đã thấy hành vi đặc thù của các chỉ báo trong tester. Để tăng hiệu quả kiểm tra không trực quan và tối ưu hóa Expert Advisors (sử dụng chỉ báo), các chỉ báo có thể được tính toán không phải trên mỗi tick, mà chỉ khi chúng ta yêu cầu dữ liệu từ chúng. Việc tính toán lại trên mỗi tick chỉ xảy ra nếu có các hàm EventChartCustom
, OnChartEvent
, OnTimer
hoặc chỉ thị tester_everytick_calculate
trong chỉ báo (xem Chỉ thị tiền xử lý cho tester). Trong cửa sổ tester trực quan, các chỉ báo trực tuyến luôn nhận sự kiện OnCalculate
trên mỗi tick.
Nếu kiểm tra được thực hiện ở chế độ không trực quan, sau khi hoàn thành, biểu đồ biểu tượng tự động mở trong terminal, hiển thị các giao dịch đã hoàn thành và các chỉ báo được sử dụng trong Expert Advisor. Điều này giúp liên kết các thời điểm vào và ra thị trường với giá trị chỉ báo. Tuy nhiên, ở đây chúng ta chỉ nói đến các chỉ báo hoạt động trên biểu tượng và khung thời gian của quá trình kiểm tra. Nếu Expert Advisor tạo chỉ báo trên các biểu tượng hoặc khung thời gian khác, chúng sẽ không được hiển thị.
Điều quan trọng cần lưu ý là các chỉ báo được hiển thị trên biểu đồ tự động mở sau khi kiểm tra hoàn tất sẽ được tính toán lại sau khi kiểm tra kết thúc. Điều này xảy ra ngay cả khi các chỉ báo này đã được sử dụng trong Expert Advisor được kiểm tra và trước đó được tính toán "trên đường đi", khi các thanh đang hình thành.
Trong một số trường hợp, lập trình viên có thể cần ẩn thông tin về các chỉ báo được sử dụng trong thuật toán giao dịch, và do đó việc trực quan hóa chúng trên biểu đồ là không mong muốn. Hàm IndicatorRelease
có thể được sử dụng cho việc này.
Hàm IndicatorRelease
ban đầu được thiết kế để giải phóng phần đã tính toán của chỉ báo nếu nó không còn cần thiết nữa. Điều này tiết kiệm bộ nhớ và tài nguyên bộ xử lý. Mục đích thứ hai của nó là cấm hiển thị chỉ báo trên biểu đồ kiểm tra sau khi hoàn thành một lần chạy.
Để tắt hiển thị chỉ báo trên biểu đồ khi kết thúc kiểm tra, chỉ cần gọi IndicatorRelease
với tay cầm chỉ báo trong trình xử lý OnDeinit
. Hàm OnDeinit
luôn được gọi trong Expert Advisors sau khi hoàn thành và trước khi hiển thị biểu đồ kiểm tra. Cả OnDeinit
lẫn các hàm hủy của các đối tượng toàn cục và tĩnh đều không được gọi trong chính các chỉ báo trong tester — đây là điều mà các nhà phát triển MetaTrader 5 đã thống nhất.
Ngoài ra, API MQL5 bao gồm một hàm đặc biệt TesterHideIndicators
với mục đích tương tự, mà chúng ta sẽ xem xét sau.
Đồng thời, cần lưu ý rằng các mẫu tpl (nếu được tạo) có thể ảnh hưởng thêm đến cách biểu diễn bên ngoài của biểu đồ kiểm tra.
Vì vậy, nếu có một mẫu tester.tpl
trong thư mục MQL5/Profiles/Templates
, nó sẽ được áp dụng cho biểu đồ đã mở. Nếu Expert Advisor sử dụng các chỉ báo khác trong quá trình hoạt động và không cấm hiển thị chúng, thì các chỉ báo từ mẫu và từ Expert Advisor sẽ được kết hợp trên biểu đồ.
Khi tester.tpl
không có, mẫu mặc định (default.tpl
) sẽ được áp dụng.
Nếu thư mục MQL5/Profiles/Templates
chứa một mẫu tpl có cùng tên với Expert Advisor (ví dụ, ExpertMACD.tpl
), thì trong quá trình kiểm tra trực quan hoặc trên biểu đồ mở sau khi kiểm tra, chỉ các chỉ báo từ mẫu này sẽ được hiển thị. Trong trường hợp này, không có chỉ báo nào được sử dụng trong Expert Advisor đang kiểm tra sẽ được hiển thị.