Trong bài viết này
Sau khi đọc bài này…
- Tách hạn chế WebRequest và lỗi archive.
- Chọn phiên bản đúng thời điểm, null khác 0.
- Đổi UTC sang giờ Việt Nam và ghi độ trễ pipeline riêng.
Tra cứu thuật ngữ ngay trong bài
Backtesting (kiểm thử dữ liệu lịch sử) Expert Advisor — EA Lịch kinh tếEA tải API được trên demo nhưng không có phản hồi tương đương trong tester chưa chứng minh server hỏng. Trước khi kiểm archive, kiểm hàm có chạy trong môi trường ấy không. Lấy số hôm nay gán cho quyết định quá khứ tạo phép thử khác. Mô hình dưới phát lại phiên bản đã ghi, tách bản sửa và dữ liệu chưa có, không kết nối API bên ngoài.
WebRequest chạy được ngoài tester chưa đủ
Tài liệu MQL5 ghi WebRequest không thực thi trong Strategy Tester. Thêm endpoint vào permitted URLs không bỏ hạn chế này. Tách lỗi môi trường, hết quyền, network và phản hồi trong EA chạy bình thường, không gom thành một lỗi dữ liệu.
Nếu quy tắc cần quan sát kinh tế bên ngoài, đừng đổi yêu cầu thất bại thành 0:0 có thể là giá trị hợp lệ, còn thất bại là chưa có đầu vào. Đổi HTTP thành tệp cũng chưa đủ nếu tệp chứa bản sửa chưa được biết lúc quyết định. Ghi quan sát, phiên bản, giá trị và thời điểm có thể dùng trước khi nối tín hiệu với HTTP. Cấu trúc EA tách dữ liệu, quyết định và thực thi; adapter khác không được âm thầm đổi ý nghĩa hoặc luật thiếu dữ liệu.
Tách adapter trực tuyến và ngoại tuyến
Adapter trực tuyến xử lý phản hồi nhà cung cấp; adapter thử chọn bản đã lưu có sẵn ở thời điểm quyết định. Cả hai trả cùng loại kết quả cho logic: giá trị hợp lệ, chưa có rõ ràng hoặc lỗi. Đây là cách tổ chức đề xuất, không robot hoàn chỉnh hoặc bảo đảm tương thích mọi API.
Giữ phản hồi thô riêng với record dùng để test. Ghi nguồn, schema version, thời điểm lấy và bằng chứng khả dụng. Kỳ mà quan sát mô tả khác lúc biết được quan sát ấy. Nếu chỉ có vintage date, không tự đặt giờ công bố chính xác; archive theo ngày chưa chứng minh biết được trong ngày.
FRED/ALFRED mô tả real-time periods để tách dữ liệu biết hiện tại với biết ở quá khứ. Đây là ví dụ dữ liệu có phiên bản, không API FX phổ quát. Date-only không tự cung cấp giờ UTC. Cần chronology đúng nguồn cho nghiên cứu intraday.
FileOpen trong MQL5 dùng vùng tệp giới hạn; testing có thư mục agent riêng. Relative path không nhất thiết trỏ thư mục terminal bình thường. Kiểm handle và đọc thành công, không coi tệp thiếu thành bảng rỗng có lịch sử đầy đủ. Dùng bản dữ liệu cố định cho chạy song song, không ghi đè bằng phản hồi live trong nghiên cứu.
Quyết định cũ dùng được phiên bản nào?
Ba phản hồi hư cấu
Quan sát GDP-model ngày 01/10/2026, không bản công bố GDP thật. Toàn bộ mốc gốc là UTC. availableAt là lúc mô hình truy cập được, không thời điểm khớp lệnh.
| availableAt | revision | value |
|---|---|---|
| 2026-10-01T12:00:00Z | initial | "1.0" |
| 2026-10-01T13:00:00Z | revised | "1.4" |
| 2026-10-01T14:00:00Z | unavailable | null |
12:30 chọn 1.0;13:30 chọn 1.4;14:30 bản hợp lệ mới nhất có null nên chưa có. Mô hình không lùi về 1.4 hoặc đổi thành 0. Tên revision là nhãn, không bộ đếm số để sắp thời gian.
Phiên bản có sẵn lúc đó, không hôm nay
Cuộn ngang để xem hết sơ đồ.
Quy tắc hư cấu cần value>1.2 là sai lúc 12:30; đưa bản 1.4 đến sau vào sẽ đảo quyết định dù giá không đổi. Đây là kiểm khả dụng, không kết quả chiến lược. Tool chọn record, không tính tín hiệu hoặc lợi nhuận.
Nếu muốn giữ giá trị cuối khi bản mới chưa có, thiết kế đó là chính sách riêng: tuổi tối đa và lý do thiếu phải định trước. Biến thể null của bài cố ý không có fallback. Đừng thêm sau khi thấy kết quả hấp dẫn rồi gọi rerun là không đổi.
Mô hình độc lập ngày 01/10/2026, một phiên bản được nguồn công bố 12:00 UTC tức 19:00 Việt Nam. Adapter riêng chỉ nhận và xác thực xong 12:04 UTC tức 19:04. Nếu nghiên cứu mô phỏng đúng pipeline này, availableAt là 12:04, không tự cho robot biết tại 12:00. Đây là độ trễ hư cấu 4 phút, không đo hiệu năng nguồn thật.
| Quyết định giờ Việt Nam | UTC | Kiến thức của pipeline này |
|---|---|---|
| 19:02 | 12:02 | Chưa nhận xong, không dùng giá trị |
| 19:04 | 12:04 | Đúng biên availableAt, được chọn 1.0 |
| 19:05 | 12:05 | Chọn 1.0 nếu không bản mới |
Chỉ điền 12:04 sau khi có log/bằng chứng trong nghiên cứu thật, không đoán giờ tải. Nếu mục tiêu là mô phỏng người nhận sớm nhất ở nguồn thì định nghĩa/giả định khác phải ghi riêng. Không sửa mốc theo kết quả đẹp. Khi nhập tool vẫn dùng UTC kèm Z, không gõ 19:04 rồi thêm Z cho giờ Việt Nam.
Kiểm gì trong bộ phát lại cục bộ?
Dán JSON có version là số 1 và events là mảng. Mỗi event có đúng availableAt, observation, value, revision. availableAt theo YYYY-MM-DDTHH: mm: ssZ, không giây lẻ hoặc offset khác. observation/revision là chuỗi; value là chuỗi số dấu chấm hoặc null, không đổi sang Number. Tối đa 1–200 events,64 KiB JSON; observation/value 128 ký tự, revision 64. Giới hạn cấu trúc 8 tầng và 2.000 giá trị. Dấu phẩy thập phân trong văn xuôi không thay dấu chấm của dữ liệu JSON.
Phát lại thông tin có sẵn lúc quyết định
Ví dụ học tập chạy trong trình duyệt. Không kết nối tài khoản hoặc API, không gửi đầu vào hay lưu bền vững. Không nhập mật khẩu hoặc dữ liệu cá nhân.
Nhập decisionAt riêng cùng định dạng UTC. Chọn bản mới nhất có availableAt≤decisionAt. Trước bản đầu thì chưa có. Hai record cùng observation và availableAt là mơ hồ, bị từ chối thay vì chọn theo thứ tự dán. availableAt là khai báo: tool không xác minh giờ công bố thật hoặc tính xác thực archive.
Công cụ chạy với dữ liệu dán trong trình duyệt, không tải công bố, không kết nối tài khoản/API và không lưu bền vững. JSON hợp lệ chưa chứng minh archive thật. Gán giờ bản đầu cho mọi revision về sau vẫn gây sai dù thuật toán chọn đúng. Giữ provenance cho mọi dataset thật.
Tester có môi trường/file agent riêng theo tài liệu MetaQuotes. Giữ dataset không đổi với báo cáo trong run manifest, không chỉ tên endpoint. Backtest Python tiếp tục join theo thời gian;lịch kinh tế giải thích bản sửa công bố. Phát lại đầu vào chưa phát lại execution: Bid/Ask, phí, lượng và phản hồi server vẫn riêng. So vài quyết định không đặt lệnh trước khi gán khác biệt cho chiến lược.
Công bố chưa là nhận xong
Giữ nguồn timestamp và pipeline timestamp riêng; không nhập giờ Việt Nam như UTC.
Trên màn hình nhỏ, bạn có thể cuộn ngang hoặc phóng to sơ đồ. Các giá trị và kết luận cũng có ở phần văn bản bên dưới.
- 19:02 Việt Nam
- 12:02 UTC: chưa có – Sớm hơn availableAt hai phút
- 19:04 Việt Nam
- 12:04 UTC:1.0 – Bằng biên cho phép
- 19:05 Việt Nam
- 12:05 UTC:1.0 – Nếu không bản mới
Trước khi đánh giá kết quả EA
- Viết data contract, giữ raw và evidence, định nghĩa quan sát/phiên bản. Thiếu lịch sử là hạn chế, không thay bằng giá trị endpoint hôm nay.
- Trace trước bản đầu, giữa bản đầu và bản sửa, sau null. Kiểm đúng biên thời gian và timestamp xung đột. Với ví dụ pipeline riêng, thêm ca đã công bố nhưng chưa nhận.
- Xác nhận đúng tệp được đọc và missing được nhận biết. Giữ phiên bản với report; kiểm tín hiệu, khớp và chi phí riêng. Replay đúng không chứng minh ưu thế hoặc lợi nhuận tương lai.
Kiểm tra mức độ hiểu bài
Bài tập: khoảng 3 phút.
Xem đáp án và giải thích
Bản 12:00 đủ điều kiện; bản sửa sau không đổi đầu vào của quyết định 12:30.
Câu hỏi khác
Allow URL bật WebRequest trong tester?
Bảng lịch sử tải hôm nay đủ không?
Null là 0 hay dùng bản cũ?
Replay đúng là backtest đúng hết?
Giờ công bố 19:00 Việt Nam thì EA biết 19:00?
Nguồn và kiểm chứng
- www.mql5.com
Nguồn tham khảo cho nội dung; xem phạm vi và giả định được nêu trong bài.
- fred.stlouisfed.org
Nguồn tham khảo cho nội dung; xem phạm vi và giả định được nêu trong bài.
- www.mql5.com
Nguồn tham khảo cho nội dung; xem phạm vi và giả định được nêu trong bài.
- www.metatrader5.com
Nguồn tham khảo cho nội dung; xem phạm vi và giả định được nêu trong bài.
Các phép tính dùng giả định được nêu rõ. Chúng không thay thế dữ liệu thị trường hiện tại hoặc điều khoản của nhà cung cấp.
