Trong bài viết này
Sau khi đọc bài này…
- Phân biệt độ phủ phút có tick thật và tỷ phần bản ghi thật.
- Kiểm tra hướng mảng, thời điểm thông tin và chi phí của tester.
- Thử bộ lọc UTC/ICT đúng biên thay vì dựa tên hàm.
Tra cứu thuật ngữ ngay trong bài
Backtesting (kiểm thử dữ liệu lịch sử) Giá Bid và Ask Spread — chênh lệch Ask và Bid Phí hoa hồng giao dịch Drawdown (sụt giảm từ đỉnh) Tỷ lệ thắngBacktest có lãi vẫn có thể khác xa giao dịch thật khi dữ liệu, mô hình thực hiện hoặc cách chọn tham số thiếu thực tế. Bài hướng dẫn các chế độ MT4/MT5, chi phí và kiểm tra ngoài mẫu để chẩn đoán khác biệt.
MT4 và MT5 Strategy Tester khác gì?
Strategy Tester chạy EA trên lịch sử ở cả hai nền tảng. MT5 hỗ trợ nhiều mã và phân phối các lượt tối ưu giữa agent, không nghĩa một lần chạy EA tự dùng mọi lõi. MT4 cũng có tối ưu di truyền nhưng tester chuẩn không thực hiện lệnh trên mã khác mã đang thử. Cộng báo cáo riêng không tái tạo vốn chung danh mục. Lưu build, EA biên dịch, đầu vào, đặc tả mã và giả định tài khoản. Dữ liệu MT4 tải từ History Center có thể khác lịch sử server broker. Độ dài lịch sử hoặc nhãn khung không tự xác định phù hợp. Xem MT4 cơ bản và đặc điểm MT5.
Nhiều tick không nghĩa nhiều phút có tick
Trước khi so phần trăm chất lượng dữ liệu, xác định đang đếm khoảng thời gian hay từng bản ghi.
Cuộn ngang để xem trọn sơ đồ →
Cuộn ngang để xem hết sơ đồ.
Giả định: Ba phút dài bằng nhau, mỗi phút có nến một phút. 10,10 và 80 là toàn bộ mẫu có kiểm soát; phút ba chỉ có bản ghi tạo ra. Không đánh giá một feed hoặc backtest thực.
Mẫu có ba nến phút đầy đủ. Hai phút có 10 tick thật mỗi phút. Phút thứ ba có nến nhưng không tick thật; ví dụ tạo 80 bản ghi tại đây. Mẫu cuối có 100 bản ghi.
Độ phủ phút có tick thật = 2/3≈66.67%; tỷ phần bản ghi thật = 20/100=20%. Thêm nhiều bản ghi trong cùng một phút đổi mẫu số thứ hai nhưng không thêm phút lịch sử. Hai tỷ lệ không thay thế nhau và không chứng minh lợi thế chiến lược.
MetaQuotes — tick thật và tick được tạo mô tả tạo tick khi có nến phút nhưng không có tick tương ứng. Con số 80 được đặt cho bài toán, không phải giá trị báo cáo tester. Cả hai thước đo là của bài, không định nghĩa trường Modelling Quality.
Chế độ mô phỏng và dữ liệu lịch sử
MT4 có Open prices only, Control points và Every tick: dùng lịch sử nến và đường giá được tạo; Control points là ước lượng sơ bộ. MT5 thêm tick broker ghi lại và 1 minute OHLC. Stop trong nến có thể quan trọng dù tín hiệu ngày; quy tắc chỉ hoạt động lúc mở nến có thể đơn giản hóa sau kiểm tra giới hạn. Trong MT5, nến phút thiếu tick thật có thể được điền tick tạo. Spread tick thật có thể đổi trong phút; tick tạo dùng spread gán cho nến phút.
Kiểm tra độ phủ đúng mã và kỳ. Nhập tick bên ngoài vào MT4 cần quy trình tương thích, có thể cần file test tạo riêng/phần mềm khác; nến HST không tự bảo đảm mô phỏng tick thật. Phần trăm chất lượng không chứng minh thực hiện thực tế. MT5 cần kiểm tra tick thật và phần thay bằng tick tạo.
Spread, hoa hồng, swap và trễ
Kiểm tra spread, hoa hồng, tài trợ và độ trễ theo sản phẩm/tài khoản. MT4 chuẩn cộng spread đã chọn vào lịch sử Bid; mặc định lấy spread đầu lần test, không tái tạo toàn đường spread lịch sử. EUR/USD giả định năm chữ số: 12 point×0.00001=1.2 pip với pip 0.0001. MT5 cho phí tài khoản/tùy chỉnh: xem thu lúc vào, ra hay cả hai và đối chiếu một lệnh khép kín. Chế độ lợi nhuận theo pip bỏ hoa hồng, swap và kiểm soát ký quỹ. Mô phỏng trễ là kịch bản, không tái tạo mọi thanh khoản/mức khớp.
Ba bẫy cần phân biệt
Look-ahead bias là dùng thông tin chưa có tại thời điểm quyết định. Tham chiếu timeseries shift 0 chỉ nến hiện tại, còn thay đổi trong mô phỏng. Lúc 10:15, đỉnh đã đạt của nến H1 bắt đầu 10:00 có sẵn, đỉnh cuối giờ chưa có. Quy tắc dùng nến giờ đóng phải đợi. Không đổi mọi 0 thành 1: phát hiện nến mới hoặc quy tắc giá hiện tại đúng cũng bị đổi. Kiểm tra timestamp, số phần tử trả về và hướng đánh chỉ số từng đầu vào.
Giả định CopyRates thành công, bốn close từ cũ đến hiện tại là 100,101,102,103. Mảng động as_series=false: rates[1].close là 101, close cuối đã đóng là rates[2].close=102. Với as_series=true, rates[1].close là 102. Quy tắc “close cuối đã đóng>101.5” đúng, nhưng đọc nhầm rates[1] ở mảng thường sẽ loại. Đây là nhầm nến cũ, chưa phải bằng chứng dùng tương lai. Không đánh chỉ số như đã nhận đủ bốn khi hàm trả ít hơn.
Overfitting có thể xảy ra khi tìm lặp chọn nhiễu thuận lợi. Tỷ lệ thắng, profit factor cao hoặc drawdown thấp riêng lẻ không chứng minh lỗi đó. Survivorship bias là loại khỏi tập thử các mã/tài khoản đã có trong quá khứ nhưng sau biến mất. Dựng tập theo những gì có ở từng ngày; không có mức phóng đại 30–50% phổ quát được xác minh.
Đọc báo cáo và kiểm tra walk-forward
Đọc kết quả ròng, số giao dịch, drawdown và giả định phí cùng nhau. Mô hình gốc tài khoản PLN ban đầu 10.000, lãi đã đóng 500 cho balance 10.500; lỗ mở 700 còn equity 9.800 trước phí/thay đổi khác. Balance giấu phần phơi nhiễm đó. Ngưỡng profit factor hoặc Sharpe không chứng nhận chiến lược. Kiểm tra độ nhạy, tách dữ liệu đánh giá thật sự và lưu báo cáo/nhật ký.
Walk-forward đánh giá các bộ tham số đã đóng băng lần lượt trên kỳ sau. So lợi suất năm hóa cùng cơ sở và chuỗi giao dịch ngoài mẫu theo thời gian. WFE riêng không chứng minh vững hoặc nhận diện curve-fit; lợi suất trong mẫu 0/âm còn làm khó diễn giải. Xem phân tích walk-forward.
Ngoài mẫu dùng quy tắc cố định trên dữ liệu không tham gia lần tìm tham số tương ứng. Đó vẫn là mô phỏng với giả định dữ liệu/thực hiện, không là kết quả tài khoản thật tương lai đã xác minh.
Giới hạn và công cụ thay thế
Strategy Tester đánh giá quy tắc được mã hóa theo dữ liệu/mô hình của nó. Phán đoán thủ công cần tiêu chí ghi lại và quy trình replay trước khi so, không tự là không thể kiểm thử. Chọn công cụ khác nếu đầu vào/cơ chế cần thiết không biểu diễn được, kiểm tra tài liệu và điều khoản dữ liệu. So sánh Forex Tester xem quy trình replay khác; cách backtest đúng trình bày phương pháp chung, và thư viện thực hành mở rộng bối cảnh.
TimeGMT của tester xác nhận bộ lọc UTC không?
Trong tester MT5, TimeGMT bằng TimeTradeServer mô phỏng. So hai hàm trong cùng test không khôi phục lịch chênh server với UTC. Nhận diện từng trục giờ, kiểm tra đổi trên đầu vào rõ ràng. “Luôn trừ hai giờ” không ghi được thay đổi giờ server.
Hai đồng hồ bằng nhau chưa xác nhận offset
Cuộn ngang để xem hết sơ đồ.
Mô hình cho phép từ 12:00 UTC gồm đầu đến 13:00 không gồm cuối. Quyết định 12:00 UTC nằm trong cửa sổ. Với UTC+2 đã khai báo, cùng lúc đọc 14:00; coi 14 là UTC sẽ loại nhầm. +2 chỉ thuộc ví dụ này. Thử đúng biên cuối, đổi ngày và từng chuyển offset của lịch thực được ghi rõ.
Hai đồng hồ tester bằng nhau chứng minh bộ lọc khi chạy thật không?
Không. Hai hàm bằng nhau trong mô phỏng không chứng minh bộ lọc ngoài đời tương đương. Dùng UTC rõ ràng, offset theo ngày có tài liệu và thử biên khoảng. Tên hàm không xác định múi giờ broker.
Kiểm tra CSV trước lần chạy sau
Chuẩn bị năm cột timestamp,open,high,low,close với offset rõ. Ở công cụ CSV kiểm tra độ phủ, nhập thời điểm mở nến đầu/cuối dự kiến và khoảng nến. Mẫu M1 tổng hợp 08:00–08:11 có 12 dòng nhưng chỉ 8 timestamp hợp lệ khác nhau: 4 vị trí trống, 2 dòng lặp và 1 nhóm OHLC xung đột. Lưu báo cáo, xét chỗ thiếu theo phiên sản phẩm. OHLC đủ không chứng minh đủ tick ghi thật; công cụ không chèn giá hoặc xác nhận mô hình thực hiện tester.
Kiểm tra ICT tách khỏi đồng hồ server
Mô hình thời gian độc lập, không offset của broker thực: 12:00 UTC=19:00 ICT, còn server UTC+2 đọc 14:00. Cửa sổ 12:00≤UTC<13:00 tương ứng 19:00≤ICT<20:00. Đúng biên 20:00 ICT phải loại; dùng≤ ở cả hai đầu sẽ nhận thừa quyết định tại biên cuối. Thử tối thiểu 18:59, 19:00, 19:59, 20:00 ICT rồi lưu kết quả. Offset server có thể đổi theo lịch riêng; ICT vẫn UTC+7.
Đổi đúng trục giờ và đúng dấu so sánh; hai hàm đồng hồ bằng nhau chưa kiểm tra được việc này. 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.
Bước thực hành tiếp theo
- Chọn dữ liệu có nguồn cho đúng mã/ngày. MT4 kiểm tra nến,mô phỏng và file FXT ngoài; MT5 kiểm tra tick thật và thay thế. Lưu nguồn,múi giờ,kỳ thiếu và thiết lập; tên chế độ không tự xác nhận phù hợp.
- Đặt phí và trễ theo môi trường thử. Dùng giả định tài khoản có tài liệu rồi thử điều kiện xấu hơn; không áp 7 USD/lot hoặc phạt pip cố định cho mọi broker.
- Có thể dùng bốn năm chọn tham số rồi năm sau thử cố định nếu hợp chiến lược. So năm hóa cùng cơ sở, không chẩn đoán curve-fit chỉ vì WFE<0.5. Xem số mẫu,chế độ,phí và giữ đánh giá cuối chưa đụng tới.
- Rà lúc mỗi giá/chỉ báo có sẵn. Chỉ đổi index 0 sang nến đã đóng nếu chiến lược cần vậy. So timestamp tín hiệu và lệnh; thay đổi kết quả 30% không tự chứng minh look-ahead.
Kiểm tra mức độ hiểu bài
Bài tập: khoảng 2 phút.
Xem đáp án và giải thích
Không thêm phút có tick thật. Thước đo này đếm phút, không đếm bản ghi.
Câu hỏi khác
Modelling Quality 99% khác 90% thế nào?
Thiết lập MT5 tester theo thứ tự nào?
Tránh look-ahead trong MQL5 thế nào?
Backtest thủ công hay tự động?
TimeGMT bằng giờ server xác nhận bộ lọc UTC chưa?
Nguồn và kiểm chứng
- www.metatrader4.com
Nguồn tham khảo cho nội dung; xem phạm vi và giả định được nêu trong bài.
- docs.mql4.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.
- 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.
- 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.mql5.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.
