Một bộ lọc hữu ích trả lời câu hỏi thực tế: EA này có được cân nhắc mở vị thế mới với thông tin hiện có không? Chỉ tên phiên hay một lịch trống chưa đủ. Quy tắc cần đồng hồ đã xác minh, phạm vi sự kiện rõ ràng và báo giá hiện tại của mã được giao dịch.
Bắt đầu bằng cách tách hai việc: quản lý mức phơi nhiễm hiện có theo quy tắc riêng; chỉ cân nhắc lệnh mới sau khi các kiểm tra bắt buộc đạt. Hướng dẫn này làm rõ sự tách biệt đó, đưa ra nhật ký quyết định ngắn và cách kiểm thử. Đây không phải EA hoàn chỉnh hay bằng chứng về khả năng sinh lời.
1. Xác định bộ lọc kiểm soát điều gì
Tách quy tắc phiên, hạn chế do tin theo lịch và điều kiện vào lệnh của chiến lược. Quy tắc phiên xác định giờ được phép; quy tắc tin loại trừ khoảng đã chọn; điều kiện chiến lược xác định cơ hội giao dịch. Vượt qua hai phần đầu không tạo ra cơ hội và không bỏ qua giới hạn thực thi hay rủi ro tài khoản.
Dùng ba kết quả rõ ràng: PASS, BLOCK và UNKNOWN. Đây là nhãn dữ liệu do tác giả đặt, không phải mã lỗi MT4. Một khung giờ đã biết là đóng có thể chặn; thông tin thiếu không thể là lý do cho qua. Theo chính sách minh họa, cả trạng thái bị chặn lẫn đầu vào bắt buộc chưa xác định đều tạm dừng cân nhắc lệnh mới. Quản lý vị thế có kiểm tra dữ liệu và quyền riêng.
2. Viết quy tắc thời gian và phạm vi trước khi kiểm thử
Dùng ánh xạ giờ theo ngày trong hướng dẫn phiên giao dịch và định nghĩa sự kiện trong hướng dẫn lịch kinh tế. Ghi quy tắc vào đặc tả có phiên bản để người khác áp dụng được với cùng đầu vào.
- Công cụ và phạm vi: nhà môi giới, tài khoản, mã, đồng tiền liên quan và nhóm sự kiện đã chọn, kể cả các giai đoạn tiếp theo.
- Phiên: ngày đầy đủ, múi giờ, quy tắc ngày trong tuần và ranh giới bao gồm hoặc loại trừ chính xác.
- Ánh xạ thời gian: quan hệ đã xác minh giữa UTC, quy tắc giờ địa phương nếu có và giờ máy chủ nhà môi giới theo từng ngày.
- Loại trừ tin: nguồn giờ sự kiện, khoảng trước/sau, phần chồng lấn và xử lý lịch tạm thời, trì hoãn hoặc thay đổi.
- Yêu cầu dữ liệu: phạm vi ngày và đồng tiền, cấu trúc, phiên bản nguồn, trạng thái cập nhật và giới hạn tuổi dữ liệu.
- Ứng phó lỗi: điều gì giữ lệnh mới, cách tiếp tục giám sát và quản lý, cùng trạng thái cần đối soát trước khi tiếp tục.
Nếu phiên địa phương qua nửa đêm, hãy xác định ngày giao dịch được gán và xử lý rõ việc đổi ngày. Tính cả sự kiện ngày liền kề nếu khoảng loại trừ của nó chạm thời điểm quyết định. Khi chuyển giờ mùa hè, xác minh cách quy đổi giờ địa phương bị lặp hoặc không tồn tại. Không âm thầm thay ánh xạ thiếu bằng múi giờ hiển thị của máy tính.
3. Kiểm chứng bản chụp lịch, không chỉ lần tải xuống
Bản chụp là một phiên bản lịch được lưu để ra quyết định. Tải thành công hay mảng sự kiện trống không chứng minh dữ liệu đầy đủ. Kiểm tra nhà cung cấp có hỗ trợ đồng tiền, ngày và loại sự kiện cần thiết không, đã lấy đủ bản ghi chưa, và giờ, đơn vị, phiên bản có được phân tích đúng không.
Lưu riêng thông tin cập nhật của nhà cung cấp và giờ bạn nhận dữ liệu. Phản hồi vừa nhận có thể chứa dữ liệu cũ. Chỉ thay bản chụp đang dùng sau khi toàn bộ bản mới vượt qua kiểm chứng; tệp dở dang hay danh sách mới cập nhật một phần không được coi là hợp lệ. Làm mới thất bại hoặc đọc lại bộ nhớ đệm không được đặt lại tuổi của bản đã kiểm tra gần nhất.
Bản chụp đã xác minh và đủ mới có thể cho thấy không có khoảng đã chọn nào đang hiệu lực trong phạm vi công bố. Thiếu phạm vi, thay đổi lịch chưa giải quyết, giờ sự kiện liên quan chưa biết hoặc bản chụp hết hạn vẫn là chưa xác định. Giữ các lệnh mới phụ thuộc theo quy định, đồng thời tiếp tục xử lý lỗi và quản lý vị thế. Tin bất ngờ nằm ngoài sự bảo vệ của lịch định sẵn.
4. Kiểm tra riêng báo giá của mã đang giao dịch
Theo dõi giờ nhận và tính hợp lệ của Bid/Ask cho đúng mã, bằng cách đo thời gian trôi qua có xử lý khởi động lại và thay đổi đồng hồ. Vừa nhận không chứng minh dữ liệu thượng nguồn còn mới hoặc có thể khớp lệnh. Xác minh riêng nguồn giá, bối cảnh thời gian, spread và quyền giao dịch; xem giám sát EA.
Trong MT4, TimeCurrent() trong OnTick() chỉ tick đang được xử lý; ở trình xử lý khác, nó có thể phản ánh báo giá mới nhất của bất kỳ mã nào trong Market Watch. Đây không phải bằng chứng mã của bạn có báo giá mới. Khi chạy thực tế, TimeGMT() phụ thuộc cài đặt giờ máy tính; trong bộ kiểm thử MT4 nó bằng TimeCurrent() mô phỏng. Hiệu số trong bộ kiểm thử không khôi phục được độ lệch giờ lịch sử của nhà môi giới.
5. Theo dõi nhật ký quyết định giả định
Chỉ trong ví dụ này, dùng phiên UTC [08:00, 17:00) ngày 2026-03-16. Giữ hợp các khoảng loại trừ tin A/B giả định [12:15, 13:05) từ hướng dẫn trước. Giả sử toàn bộ phạm vi và siêu dữ liệu bắt buộc đã được xác minh; sự kiện phủ cả ngày UTC, đủ cho các lần kiểm tra ban ngày này và khoảng đệm. Không khẳng định nhà cung cấp hay đợt công bố thực tế nào.
Để minh họa phép tính, chọn tuổi bản chụp tối đa 30 phút và tuổi báo giá của mã tối đa 5 giây. Đây là đầu vào do tác giả chọn, không phải thiết lập làm mới được khuyến nghị hay bảo đảm an toàn. Bản đầu được xác minh lúc 12:00:00; bản thay thế đầy đủ và hiện hành được xác minh lúc 13:06:00. Lúc 17:00:00 có bản hợp lệ khác. Tuổi dữ liệu giả định các phép đo thời gian đã xác minh và có thể so sánh.
| Quyết định · UTC | Tuổi bản chụp | Tuổi báo giá của mã | Chỉ kết quả thời gian/dữ liệu |
|---|---|---|---|
12:10:00 | 10 min | 1 s | Các kiểm tra này đạt; kiểm tra tiếp |
12:20:00 | 20 min | 1 s | Chặn: khoảng loại trừ tin có hiệu lực |
13:05:00 | 65 min | 1 s | Tạm giữ: lịch đã cũ |
13:06:06 | 6 s | 12 s | Tạm giữ: báo giá của mã đã cũ |
13:06:07 | 7 s | 1 s | Các kiểm tra này đạt; kiểm tra tiếp |
17:00:00 | 0 s | 1 s | Chặn: ngoài phiên |
Lúc 13:05:00, khoảng tin kết thúc nhưng bản chụp cũ đã 65 phút tuổi. Lúc 13:06:06, bản mới mới 6 giây tuổi, nhưng lần nhận cuối của mã lúc 13:05:54 đã cách 12 giây. Báo giá nhận lúc 13:06:06 chỉ 1 giây tuổi tại 13:06:07. Hàng đó đạt các kiểm tra thời gian/dữ liệu minh họa, không phải kiểm tra chiến lược, thực thi hay rủi ro. Mốc 17:00 bị loại trừ. Không mô phỏng lệnh, thoát lệnh hay lợi suất.
6. Giữ quản lý vị thế và đối soát lệnh tại nhà môi giới
Chặn lệnh mới không được bỏ qua giám sát và quản lý vị thế hiện có theo quy định. Hành động quản lý vẫn cần dữ liệu và quyền hợp lệ riêng; thiếu giá không cho phép sửa stop một cách mù quáng. Quy định riêng việc giữ hay hủy lệnh chờ, rồi xác minh trạng thái được nhà môi giới chấp nhận thay vì giả sử yêu cầu hủy đã thành công.
Nút AutoTrading của MT4 cấm yêu cầu giao dịch tự động trong khi EA và OnTick() có thể tiếp tục chạy. Vì vậy, nó không phải nút tạm dừng riêng lệnh mới: hoạt động quản lý cần yêu cầu giao dịch cũng có thể bị ảnh hưởng. Phân biệt nút này với gỡ EA hay ngắt kết nối terminal. Bảo vệ đã có tại nhà môi giới và quản lý phía máy khách là hai cơ chế khác nhau; xem quản lý rủi ro.
7. Tránh để việc lấy dữ liệu chặn luồng quyết định
Dùng bộ nhớ đệm đầy đủ, đã kiểm chứng để quyết định và quy trình có kiểm soát để làm mới. Đặt thời gian chờ, báo lỗi và cách kích hoạt phiên bản mới. Gọi quản lý một lần trước yêu cầu chậm không giữ nó chạy trong khi yêu cầu đó chặn cùng EA.
Đọc thêm: giới hạn mạng và sự kiện của MT4
Trong MQL4, WebRequest() chạy đồng bộ. Chuyển từ OnTick() sang OnTimer() trong cùng EA không biến nó thành bất đồng bộ; thời gian chờ vẫn có thể làm chậm chương trình. Thành phần lấy dữ liệu riêng có thể cung cấp bản chụp đã kiểm chứng, nhưng cần xác minh cả việc bàn giao và lỗi. Bộ định thời dùng để lên lịch, không bảo đảm quản lý không bị gián đoạn.
Thứ tự logic là: chạy luồng quản lý/giám sát đã định, đánh giá kiểm tra bắt buộc cho lệnh mới, rồi chỉ khi đạt mới cân nhắc thiết lập hiện tại với kiểm soát thực thi và rủi ro. Đây là phân công trách nhiệm quyết định, không phải mã MQL4 chạy được hay bảo đảm xử lý kịp thời. Kiểm thử tích hợp thực tế, quyền và hành vi lỗi trước khi dựa vào nó.
8. Giữ nhật ký quyết định qua lần khởi động lại
Ghi giờ quyết định UTC, giờ máy chủ và ánh xạ đã xác minh, phiên bản quy tắc, mã bản chụp cùng giờ nguồn/nhận, phạm vi, giờ nhận và tuổi báo giá, khoảng loại trừ có hiệu lực và lý do kết quả. Giữ cả ứng viên bị từ chối và kiểm tra đã đạt. Nhật ký phải giải thích được việc tạm giữ mà không dựng lại sau này bằng lịch đã sửa đổi.
Sau khởi động lại hoặc kết nối lại, đối soát vị thế, lệnh chờ và yêu cầu chưa giải quyết với nhà môi giới. Chỉ khôi phục trạng thái kiểm chứng được; khởi động lại không có nghĩa tài khoản không có vị thế hay bộ nhớ đệm còn mới. Tránh xử lý lặp cùng ứng viên. Khi trạng thái cần thiết chưa xác định, giữ lệnh mới đến lúc đối soát xong và tiếp tục ứng phó lỗi cùng quản lý đã quy định.
9. Kiểm thử tính đúng trước khi diễn giải backtest
Trước khi đánh giá hiệu quả thị trường, tạo các ca nhỏ cố định với kết quả mong đợi. Bao gồm:
- Đầu phiên được tính, cuối phiên bị loại trừ và khoảng qua nửa đêm.
- Đầu/cuối khoảng loại trừ tin, sự kiện chồng lấn và lịch trì hoãn hoặc thay đổi.
- Dữ liệu lịch thiếu, một phần, sai cấu trúc hoặc ngoài phạm vi, kể cả phản hồi trống chưa xác minh.
- Tuổi dữ liệu đúng giới hạn đã chọn và vừa vượt, cùng tick mới ở mã khác trong khi mã giao dịch vẫn cũ.
- Khởi động lại, đồng hồ nhảy, làm mới thất bại và thay bản chụp bị gián đoạn mà không đặt lại tuổi dữ liệu.
- Lệnh tại nhà môi giới và luồng quản lý khi lệnh mới bị chặn, gồm hủy bị từ chối và không có quyền giao dịch.
Strategy Tester của MT4 không thực thi WebRequest() và không xử lý sự kiện Timer. Kiểm thử logic quyết định dùng chung với dữ liệu đóng băng và ánh xạ giờ lịch sử đã xác minh, qua đường kiểm thử được hỗ trợ. Chỉ phát lại từng bản chụp khi nó đã có thể sẵn có. Bảng sự kiện lịch sử không tự tái tạo việc lấy dữ liệu trực tiếp hay lên lịch định thời. Xem hướng dẫn backtest MT4 để biết giới hạn rộng hơn.
10. Đánh giá lợi ích tách khỏi vận hành đúng
Bộ lọc triển khai đúng có thể loại cả giao dịch thắng lẫn thua. So sánh quy tắc đề xuất với mốc tham chiếu đã công bố, dùng cùng chiến lược, dữ liệu và giả định chi phí. Giữ mọi ứng viên và lý do từ chối, dành dữ liệu giai đoạn sau để kiểm chứng, và tính chi phí thực thi thực tế. Tìm nhiều khung giờ rồi chỉ báo cáo khung thắng có thể gây khớp quá mức với mẫu.
Sau đó quan sát tích hợp thực tế trên demo trong điều kiện dữ liệu bình thường và lỗi. Đo làm mới thất bại, tạm giữ vì dữ liệu cũ, khoảng trống báo giá, chậm quản lý và phản hồi lệnh từ nhà môi giới. Nhật ký rõ cho thấy hệ thống đã làm gì; không chứng minh lợi nhuận tương lai. Trước khi dùng rộng hơn, xác nhận:
- Đặc tả có phiên bản, ánh xạ thời gian và chính sách chọn sự kiện đã được ghi lại.
- Kiểm tra phạm vi và tuổi dữ liệu phân biệt không hạn chế, bị chặn và chưa xác định.
- Ca ranh giới và lỗi cho kết quả mong đợi.
- Kiểm thử lịch sử giữ đúng thời điểm thông tin sẵn có và công bố phần lịch sử thiếu.
- Kiểm tra demo xác minh lấy dữ liệu, khởi động lại, quản lý liên tục và trạng thái lệnh tại nhà môi giới.
- Lợi ích được tuyên bố phải đánh giá riêng với chi phí và dữ liệu sau đó, không dùng số thành tích bịa đặt.
11. Câu hỏi về bộ lọc EA
Lịch không có hạn chế có nghĩa EA nên vào lệnh không?
Không. Lịch đã xác minh không có hạn chế chỉ đạt một phần quyết định. Phiên, chất lượng báo giá, thực thi, rủi ro tài khoản và điều kiện hiện tại của chiến lược vẫn cần kiểm tra. Tin bất ngờ có thể xuất hiện ngoài lịch.
Vì sao tải mới mà trạng thái vẫn chưa xác định?
Phản hồi có thể cũ, không đầy đủ, ngoài phạm vi cần thiết hoặc bị phân tích sai. Giờ nhận không tự xác thực dữ liệu nhà cung cấp. Tiếp tục giữ các lệnh phụ thuộc đến khi kiểm tra cần thiết đạt.
Có thể thử tải tin trực tiếp trong bộ kiểm thử MT4 không?
Bộ kiểm thử theo tài liệu không thực thi WebRequest hay sự kiện Timer. Dùng đầu vào đóng băng, có phiên bản và đường được hỗ trợ để thử logic chung, rồi xác minh riêng việc lấy dữ liệu và lên lịch thật trên demo.
Có nên dùng AutoTrading để tạm dừng khi có tin?
Nút này không chỉ áp dụng cho lệnh mới: yêu cầu tự động dùng trong quản lý cũng có thể bị cấm. Thiết kế ở đây là cổng kiểm soát lệnh mới nội bộ với trách nhiệm quản lý được xác minh riêng, không phải công tắc loại bỏ mọi mức phơi nhiễm.
12. Tài liệu tham khảo và phạm vi
Tài liệu MQL4 chính thức về WebRequest giải thích yêu cầu đồng bộ và giới hạn. Giới hạn của Strategy Tester MT4 mô tả mô phỏng thời gian cùng hàm bên ngoài và sự kiện không được hỗ trợ. Xác minh chức năng của đúng nền tảng và tích hợp bạn dùng, đừng mặc định ví dụ từ nền tảng khác tương thích. Tài liệu được kiểm tra ngày 2026-10-17.
Hướng dẫn này hoàn tất nhóm hướng dẫn phiên/tin bằng khung quy tắc và kiểm chứng. Lịch, bản chụp, tuổi dữ liệu và kết quả là tình huống giảng dạy giả định. Ngưỡng không phải khuyến nghị; không tuyên bố đã chạy EA hay có kết quả giao dịch. Bộ lọc không loại bỏ rủi ro thị trường, thực thi hoặc tài khoản.