Backtesting trong MT4 và MT5 — hướng dẫn thực hành 2026

Xác minh lần cuối: · Nội dung luôn có giá trị
Cảnh báo rủi ro · YMYL Bài viết này chỉ mang tính giáo dục và không phải là lời khuyên đầu tư. Giao dịch trên thị trường Forex tiềm ẩn rủi ro mất vốn cao — ESMA cho biết từ 74% đến 89% tài khoản nhà đầu tư bán lẻ thua lỗ. Giao dịch ký quỹ ngoại hối dành cho cá nhân không được cấp phép tại Việt Nam; hãy tham khảo ý kiến chuyên gia tài chính được cấp phép trước khi đưa ra bất kỳ quyết định nào.

Chris hoàn thành Expert Advisor đầu tiên của mình vào tháng 1 năm 2024. Anh mở Strategy Tester với cài đặt mặc định và nhìn đường vốn leo từ 10.000 lên 47.000 euro trong ba năm — tỷ lệ thắng 78%. Năm tháng sau, tài khoản thực của anh chỉ còn 7.200 euro. Khoảng cách giữa kiểm thử ngược (backtesting) và thực tế xuất phát từ ba sai lầm trong quá trình thực hành: dữ liệu kém chất lượng, tham số mô phỏng không thực tế, và chỉ tối ưu hóa một lần thay vì áp dụng phương pháp walk-forward.

MT4 và MT5 Strategy Tester — điểm khác biệt thực sự

Cả hai nền tảng đều chạy Expert Advisor trên dữ liệu lịch sử thông qua Strategy Tester, nhưng cơ chế vận hành quyết định kết quả có đáng tin cậy hay không. MT4 chạy đơn luồng (single-threaded): một kiểm thử ngược năm năm trên khung M15 mất từ hai đến mười phút, và việc tối ưu hóa qua hàng trăm tổ hợp tham số có thể kéo dài hơn hai ngày. MT5 phân phối công việc trên nhiều lõi CPU và hỗ trợ kiểm thử đa cặp tiền tệ ngay trên nền tảng — một danh mục ba cặp chính chạy tuần tự trên MT4, nhưng song song trên MT5. Điểm khác biệt thứ hai là dữ liệu: MT4 tải lịch sử từ History Center (thường chỉ hai đến ba năm gần nhất), còn MT5 tải dữ liệu tick từ nhà môi giới (broker). Với khung M30 trở lên, sự chênh lệch này không quá nghiêm trọng; nhưng với trader scalping trên M5, đây là vực thẳm. Bạn có thể tìm hiểu thêm về các công cụ giao dịch trong phần nền tảng giao dịch Forex.

Chế độ mô phỏng và chất lượng dữ liệu lịch sử

Strategy Tester cung cấp ba cấp độ mô phỏng nến (nến Nhật / candlestick). Open prices only chỉ sử dụng giá mở cửa — nhanh, nhưng vô dụng cho giao dịch trong ngày (intraday). Control points tái tạo mức High và Low bằng cách nội suy từ khung thời gian nhỏ hơn, bị giới hạn ở mức chất lượng mô phỏng 90% trong MT4. Every tick trong MT4 xây dựng đường đi bên trong mỗi nến từ bộ dữ liệu OHLC; còn chế độ "Every tick based on real ticks" trong MT5 đọc lịch sử tick thực từ broker — đây là chế độ duy nhất cho kết quả đáng tin cậy trên khung thời gian dưới H1.

Dukascopy Bank tại Geneva cung cấp miễn phí lịch sử tick từ năm 2003 cho hầu hết các cặp tiền tệ chính, chỉ số và hàng hóa. Bạn tải xuống qua JForex Historical Data Downloader và chuyển đổi sang định dạng HST của MT4 bằng công cụ miễn phí FX Blue Quant Data Manager hoặc phần mềm trả phí Tickstory (30–50 USD). Chất lượng mô phỏng sau đó sẽ nhảy lên 99%. Trong MT5, bạn chọn "Every tick based on real ticks"; nếu broker không cung cấp dữ liệu tick, MT5 sẽ tự động chuyển sang chế độ tổng hợp và kết quả kiểm thử nghi vấn không kém gì MT4 với cài đặt mặc định.

Tham số mô phỏng — spread, hoa hồng, swap, trượt giá

Theo mặc định, Strategy Tester giả định spread hiện tại và hoa hồng bằng không, điều này với chiến lược scalping tạo ra sự khác biệt giữa lợi nhuận trên giấy và thua lỗ thực tế. Hãy đặt spread (chênh lệch giá) khớp với tài khoản thực của bạn (0,8 đến 1,5 pip trên EUR/USD tại broker ECN, nhân với 1,5 trong điều kiện xấu). Hoa hồng ECN thường là 7 USD/lot; nếu không tính khoản này, một chiến lược kiếm 5 pip có thể cho hệ số lợi nhuận (profit factor) 1,6 trong kiểm thử nhưng chỉ 0,9 trong thực tế. Phí qua đêm (swap / rollover) đối với các lệnh giữ từ hai đến bảy ngày có thể ăn mòn 20–30% lợi nhuận hàng năm. Trượt giá (slippage) không được mô phỏng, nhưng 5–20 pip trong đợt công bố NFP là chuyện thường; mức điều chỉnh thực tế là cộng thêm 1,5 pip trên mỗi lệnh thua và trừ đi 1 pip trên mỗi lệnh thắng.

Ba bẫy phổ biến phá hỏng kết quả kiểm thử

Look-ahead bias là việc vô tình sử dụng trong mã chiến lược thông tin không có sẵn tại thời điểm ra quyết định — tức là "nhìn trộm tương lai". Trong MQL4/MQL5, lỗi này thường xuất hiện khi tham chiếu đến nến hiện tại bằng chỉ số (index) 0. Nến đó vẫn đang hình thành, nên kiểm thử biết mức High và Low cuối cùng của nó, còn trader thực thì không. Quy tắc: mọi lần đọc dữ liệu đều dùng index 1 trở lên. Muốn tìm hiểu sâu hơn về lập trình EA, bạn có thể xem phần thực hành giao dịch.

Overfitting (khớp thái quá) là hệ quả của việc tối ưu hóa quá mức — trader chạy Strategy Tester qua hàng nghìn tổ hợp tham số, chọn kết quả tốt nhất và ngưỡng mộ một đường vốn trông cực kỳ mượt mà, thực chất là khớp với nhiễu ngẫu nhiên (noise) của dữ liệu. Dấu hiệu cảnh báo: sụt giảm vốn (drawdown) dưới 5%, profit factor trên 3,5, tỷ lệ thắng trên 75% qua 200 giao dịch, đường vốn không có đợt điều chỉnh nào kéo dài hơn hai tuần — khi tất cả xuất hiện cùng nhau, đó là tín hiệu báo động. Survivorship bias (thiên lệch sống sót) là việc chỉ kiểm thử các cặp tiền tệ còn tồn tại đến ngày nay; một danh mục exotic được kiểm thử chỉ trên những cặp "vẫn còn được broker niêm yết" có thể thổi phồng kết quả lên 30–50% (USD/TRY sau năm 2018 và EUR/CHF sau tháng 1 năm 2015 là những ví dụ rất đáng suy nghĩ).

Đọc hiểu báo cáo và walk-forward như liều thuốc chữa curve-fitting

Cả hai nền tảng đều tạo báo cáo với tám đến mười chỉ số, nhưng phần lớn trader chỉ xem ba cái: lợi nhuận ròng, tỷ lệ thắng, drawdown — vậy là chưa đủ. Profit factor trên 1,5 là ổn, trên 2 là tốt, trên 3,5 là đáng ngờ. Chỉ số Sharpe gần 1,0 là chấp nhận được, từ 1,5 đến 2,5 là rất tốt, trên 3 cần kiểm tra curve-fitting. Drawdown tối đa trong ngày nên dưới 25%. Số lượng giao dịch tối thiểu 100, lý tưởng là 500. Chất lượng mô phỏng phải đạt 99%.

Walk-forward là phương pháp luận mà Robert Pardo trình bày trong cuốn sách kinh điển năm 2008 và vẫn là tiêu chuẩn tại các quỹ giao dịch theo hệ thống ngày nay. Chia lịch sử thành dữ liệu in-sample (bốn năm) và out-of-sample (một năm), tối ưu hóa tham số chỉ trên dữ liệu in-sample, chạy chiến lược với tham số cố định trên dữ liệu out-of-sample, rồi dịch chuyển cửa sổ tiến lên một năm và lặp lại. Kết quả OOS tổng hợp là cách tiệm cận tốt nhất với hiệu quả tài khoản thực. Chỉ số WFE (lợi nhuận OOS chia lợi nhuận IS) trên 0,5 cho thấy chiến lược vững chắc; từ 0,3 đến 0,5 là curve-fitting ở mức vừa phải; dưới 0,3 là gương phản chiếu lòng tự ái của trader. Bạn có thể tìm hiểu thêm về phân tích kỹ thuật làm nền tảng cho việc xây dựng chiến lược.

“Mục đích toàn bộ của phân tích walk-forward là để lộ ra hiệu quả thực tế của một chiến lược giao dịch trong thời gian thực với tiền thật — mà không phải thực sự giao dịch với tiền thật trong thời gian thực.” — Robert Pardo, 2008

Giới hạn của MT4/MT5 và khi nào cần dùng công cụ khác

Strategy Tester có những giới hạn cố hữu: mô hình thực thi đơn giản hóa, bộ tối ưu hóa của MT4 gặp khó khăn khi vượt vài trăm tổ hợp tham số, báo cáo không bao gồm phân tích độ ổn định tham số hay Monte Carlo. Với các chiến lược price action dựa trên phán đoán chủ quan, Strategy Tester có thể hoàn toàn vô dụng vì những quy tắc như vậy không thể diễn đạt hoàn toàn bằng code. Khi MT4/MT5 không đáp ứng đủ nhu cầu, bạn có thể chuyển sang Forex Tester 5 (khoảng 300 USD) hoặc Python với thư viện backtrader. Góc nhìn chiến lược sâu hơn có tại xưởng thực hành của trader trên ForexMechanics.

Bước tiếp theo — ba bước thực hành ngay hôm nay

  1. Tải dữ liệu tick từ Dukascopy cho cặp EUR/USD trong năm năm gần nhất và nhập vào MT4 qua FX Blue Quant Data Manager hoặc Tickstory; trong MT5, chọn chế độ "Every tick based on real ticks" và xác nhận rằng broker của bạn cung cấp lịch sử tick — nếu thiếu bước này, mọi kiểm thử ngược intraday tiếp theo đều là số liệu thống kê không đáng tin cậy.
  2. Mở EA của bạn trong Strategy Tester, nhập spread (chênh lệch giá) khớp với tài khoản thực (thường 1,2 pip trên EUR/USD tại broker ECN), thêm hoa hồng 7 USD/lot và mức phạt trượt giá (slippage) 1,5 pip cho lệnh thua, trừ 1 pip cho lệnh thắng, rồi chạy một lần kiểm thử qua năm năm và so sánh kết quả với lần trước.
  3. Chia năm năm dữ liệu thành bốn năm in-sample và một năm out-of-sample; tối ưu hóa tham số chỉ trên cửa sổ in-sample, đóng băng bộ tham số tốt nhất và chạy một lần kiểm thử trên dữ liệu out-of-sample — nếu WFE dưới 0,5, chiến lược bị curve-fit và cần đơn giản hóa logic, không phải chạy thêm một vòng tối ưu hóa nữa.
  4. Rà soát mã nguồn EA, tìm mọi lần gọi iCustom, iHigh, iLow, CopyClose hoặc CopyRates với index 0, thay thế bằng index 1, rồi chạy lại kiểm thử; nếu kết quả chênh lệch hơn 30%, chiến lược đang sống nhờ look-ahead bias và logic vào lệnh cần được viết lại từ đầu.
Jarosław Wasiński
Giới thiệu tác giả

Jarosław Wasiński

Tổng biên tập MyBank.pl · Nhà phân tích tài chính và thị trường

Nhà phân tích và chuyên gia thực hành độc lập với hơn 20 năm kinh nghiệm trong lĩnh vực tài chính. Người sáng lập và tổng biên tập cổng thông tin MyBank.pl hoạt động từ năm 2004. Phân tích cơ bản thị trường ngoại hối và kinh tế vĩ mô từ năm 2007. Viết từ góc độ thị trường toàn cầu, chú trọng khung pháp lý quốc tế. Nội dung mang tính giáo dục; giao dịch Forex ký quỹ không được cấp phép cho nhà đầu tư cá nhân tại Việt Nam.

Nguồn và tài liệu tham khảo

  1. MetaQuotes MetaTrader 5 — Testing Trading Strategies · oficjalna pomoc MT5: tryby modelowania, parametry symulacji, optymalizacja www.metatrader5.com ↗
  2. MetaQuotes MQL5 Reference — Testing Trading Strategies · dokumentacja MQL5: tryby ticków, ograniczenia funkcji testera www.mql5.com ↗
  3. MetaQuotes MetaTrader 4 — Strategy Testing · oficjalna pomoc MT4: modeling quality, raporty Strategy Tester www.metatrader4.com ↗
  4. Dukascopy Bank SA Historical Data Export · darmowe dane tickowe od 2003 r. dla 99 procent modeling quality www.dukascopy.com ↗

Câu hỏi thường gặp

Chất lượng mô phỏng 99% khác gì so với 90% trong MT4?

Chất lượng mô phỏng (modelling quality) là tỷ lệ phần trăm hiển thị ở góc trên bên phải của báo cáo MT4 Strategy Tester, cho biết simulator tái tạo chính xác đến mức nào chuyển động giá bên trong mỗi nến Nhật (candlestick). 90% là mức tối đa có thể đạt được với dữ liệu mặc định tải từ broker qua History Center — MT4 nội suy phần bên trong của nến từ bốn điểm (Open-High-Low-Close), vì vậy một kiểm thử ngược trên M15 giả định một đường đi bên trong nến mà nó không bao giờ xác minh. 99% yêu cầu dữ liệu tick thực được nhập từ nguồn bên ngoài — thường là API miễn phí của Dukascopy hoặc Tickstory có trả phí. Sự khác biệt thực tế rất lớn: một chiến lược scalping nhắm 5 pip có thể cho tỷ lệ thắng 70% và lợi nhuận hàng năm 30% trên dữ liệu 90%, nhưng cùng giai đoạn đó với chất lượng 99%, tỷ lệ thắng sụp xuống 52% và đường vốn nằm ngang. Lý do rất đơn giản — thiếu dữ liệu tick bên trong mỗi nến che khuất thời điểm mà lệnh cắt lỗ (stop loss) đáng lẽ đã bị kích hoạt trước khi giá quay lại mục tiêu chốt lời (take profit). Quy tắc ngón tay cái: nếu chiến lược của bạn hoạt động trên M30 trở lên với take profit xa hơn 30 pip, khoảng cách 90% so với 99% không đến mức quyết định. Nếu bạn scalping hoặc giao dịch dưới M15, bất cứ thứ gì dưới 99% đều là ảo tưởng. MT5 giải quyết hoàn toàn vấn đề này với chế độ "Every tick based on real ticks" — với điều kiện broker cung cấp lịch sử tick, mà hầu hết các broker ECN uy tín đều làm.

Cách cấu hình MT5 Strategy Tester từng bước như thế nào?

Đây là trình tự cần tuân theo mỗi lần để không bỏ sót bất kỳ cài đặt nào một cách âm thầm. Bước một: mở Strategy Tester bằng Ctrl+R hoặc qua View → Strategy Tester. Bước hai: trong trường Expert, chọn EA đã biên dịch thành file .ex5. Bước ba: chọn symbol từ danh sách — lý tưởng là cùng cặp tiền bạn đang giao dịch trên tài khoản demo hoặc thực. Bước bốn: đặt timeframe giống hệt với khung thời gian chiến lược dùng trong môi trường thực tế. Bước năm: xác định phạm vi ngày. Tối thiểu năm năm, mười năm là lý tưởng — đủ dài để bao gồm ít nhất một chu kỳ tăng, một đợt điều chỉnh và một sự kiện khủng hoảng (tháng 3 năm 2020, tháng 2 năm 2022, tháng 10 năm 2023 là các mốc tham chiếu hữu ích). Bước sáu: chọn chế độ mô phỏng — "Every tick based on real ticks" để có kết quả đáng tin cậy, "Every tick" để lặp lại nhanh hơn, "1 minute OHLC" chỉ cho lần quét tham số đầu tiên. Bước bảy: số dư ban đầu và loại tiền tệ khớp với tài khoản thực. Bước tám: đòn bẩy (leverage) — phải giống hệt cài đặt tài khoản thực của bạn; tại Liên minh châu Âu, ESMA giới hạn đòn bẩy cho khách hàng bán lẻ ở mức 1:30, nhưng quy định này không áp dụng tại Việt Nam — giao dịch ngoại hối/CFD bán lẻ qua broker nước ngoài không được cấp phép tại Việt Nam theo quy định của Ngân hàng Nhà nước Việt Nam (NHNN); nếu bạn vẫn sử dụng broker nước ngoài, hãy ý thức rõ rủi ro pháp lý và tài chính, và dùng đòn bẩy thực tế trên tài khoản của bạn. Bước chín: trong tab Settings, đặt Optimisation thành Disabled cho một lần chạy đơn lẻ, Slow complete algorithm cho vòng lặp walk-forward đầu tiên, Fast genetic cho không gian tham số lớn hơn. Bước mười: nhấn Start và theo dõi. Khi MT5 tải lịch sử lần đầu tiên, quá trình này có thể mất từ hai đến hai mươi phút tùy thuộc vào độ dài giai đoạn và số lượng công cụ. Khi hoàn tất, bạn có quyền truy cập vào tab Backtest (đường vốn), tab Trades (danh sách lệnh) và tab Graph (diễn biến số dư). Xuất báo cáo sang HTML qua nhấp chuột phải → Save as Report và lưu trữ trong thư mục dự án chiến lược.

Look-ahead bias là gì và làm thế nào để tránh nó trong MQL5?

Look-ahead bias là việc vô tình sử dụng trong mã chiến lược thông tin không có sẵn tại thời điểm ra quyết định — tức là nhìn trộm vào tương lai. Trong MQL5, lỗi này thường xuất hiện ở ba nơi. Thứ nhất: tham chiếu đến nến Nhật hiện tại chưa đóng bằng index 0 thay vì 1 trong iCustom và các lệnh gọi tương tự. Index 0 vẫn đang hình thành — High, Low và Close của nó thay đổi theo từng tick, vì vậy điều kiện vào lệnh dựa trên lần đọc đó sử dụng giá trị cuối cùng của nến trong kiểm thử trong khi trader thực không thể thấy chúng thêm mười lăm đến ba mươi phút nữa. Thứ hai: sử dụng iHigh(symbol, period, 0) hoặc iLow(symbol, period, 0) khi tính cắt lỗ (stop loss) — kiểm thử biết mức cực đại của toàn bộ nến, trader thực thì không. Thứ ba: đồng bộ hóa dữ liệu từ nhiều khung thời gian mà không kiểm tra xem nến H4 đã đóng trước nến M15 mà chiến lược vào lệnh hay chưa. Phát hiện: nếu đường vốn của bạn mượt một cách đáng ngờ (drawdown dưới 5%, profit factor trên 3,5, tỷ lệ thắng trên 75% qua 200 giao dịch), hãy để EA đó chạy trên tài khoản demo một tháng. Chênh lệch hiệu suất 50% hầu như luôn chỉ ra look-ahead bias đâu đó trong mã. Sửa lỗi: luôn đọc chỉ báo và lịch sử giá tại index 1 trở lên (nến đã đóng), xác minh điều kiện thoát lệnh thông qua CopyClose hoặc CopyRates với đối số thời gian đóng nến rõ ràng, và kiểm tra đồng bộ hóa khung thời gian bằng SymbolInfoInteger(symbol, SYMBOL_TIME).

Kiểm thử ngược thủ công hay tự động — cái nào có ý nghĩa hơn?

Cả hai đều có vai trò, nhưng ở các giai đoạn khác nhau trong quy trình làm việc. Kiểm thử ngược thủ công (xem từng nến một trong công cụ phát lại như TradingView Bar Replay hoặc chức năng bước từng nến của MT5) là công cụ phù hợp cho trader tùy ý (discretionary) hoạt động dựa trên price action và không thể hoặc không muốn đưa quy tắc của mình vào code. Nó giúp xây dựng cảm nhận về biến động, nhịp điệu thị trường và thời điểm một setup bắt đầu trông hấp dẫn. Nhược điểm là tính chủ quan, không có khả năng tái hiện (lần xem lại thứ hai cùng giai đoạn cho kết quả khác) và tốn nhiều thời gian — hai trăm giao dịch trên M15 mất ba mươi đến năm mươi giờ làm việc cẩn thận. Kiểm thử ngược tự động qua Strategy Tester yêu cầu chiến lược tồn tại dưới dạng Expert Advisor — mọi quy tắc vào lệnh, thoát lệnh và quản lý rủi ro phải được diễn đạt bằng toán học, không có chỗ cho "cảm giác thị trường". Phần thưởng là khả năng tái hiện (kết quả giống hệt nhau mỗi lần trên dữ liệu giống nhau), ý nghĩa thống kê (5.000 giao dịch chỉ trong một buổi tối) và các chỉ số khách quan. Nhược điểm là không thể nắm bắt được phán đoán về mẫu biểu đồ dựa trên tùy ý, vì vậy các chiến lược price action dựa trên trực giác lọt qua mạng lưới này. Con đường vàng: bắt đầu với kiểm thử ngược thủ công một trăm giao dịch để hiểu thị trường và cách tiếp cận của chính bạn. Nếu kết quả đáng khích lệ, hãy hình thức hóa các quy tắc thành EA và chạy qua Strategy Tester tự động với walk-forward — bước đó tách biệt trực giác thực sự khỏi những ký ức khớp với đường cong lịch sử. Trực giác thuần túy thua hệ thống cơ học khoảng chín mươi phần trăm thời gian trong mẫu thực tế mười hai tháng. Để hiểu rõ hơn về nền tảng tâm lý của việc tuân thủ hệ thống, hãy xem phần quản lý rủi ro trong giao dịch.

Tìm hiểu sâu hơn · hướng dẫn đầy đủ