Cách backtest EA trên MT5: hướng dẫn từng bước
By FXNook Lab team
Để backtest EA trên MT5, nhấn Ctrl+R để mở Strategy Tester, chọn EA, mã giao dịch, khung thời gian và khoảng ngày, đặt mô hình tick rồi nhấn Start. EA cần được biên dịch thành công và tester cần có dữ liệu lịch sử phù hợp. Kết quả cho biết EA đã xử lý dữ liệu quá khứ theo những thiết lập đó ra sao; nó không xác nhận EA sẽ hoạt động giống vậy trong tài khoản thật hoặc tương lai.
Cách backtest EA trên MT5 nhanh nhất
Mở View > Strategy Tester hoặc nhấn Ctrl+R. Trong phần cài đặt, chọn Expert Advisor, Symbol, Period, khoảng ngày cần chạy, mô hình mô phỏng, số tiền nạp ban đầu và đòn bẩy. Nhấn Start để chạy; bật Visual mode nếu muốn quan sát các lệnh trên biểu đồ trong lúc kiểm thử.
EA MT5 cần có tệp đã biên dịch dạng .ex5 và xuất hiện trong danh sách Expert Advisors của tester. Nếu bạn có tệp nguồn .mq5, mở nó trong MetaEditor và nhấn F7 để biên dịch. Khi MetaEditor báo lỗi biên dịch, hãy sửa lỗi trước; tester không thể chạy một phiên bản EA chưa được tạo thành công.
Trước khi nhấn Start, xác nhận các thiết lập phù hợp với câu hỏi bạn muốn kiểm tra. Để so sánh hai lần chạy, giữ nguyên ngày, symbol, timeframe, mô hình tick, vốn và đầu vào của EA, chỉ thay đổi một yếu tố mỗi lần. Nếu thay nhiều thiết lập cùng lúc, bạn sẽ khó biết yếu tố nào làm kết quả khác đi.
Chuẩn bị EA và dữ liệu trước khi chạy
- Chọn đúng EA MT5. Trong Navigator, mở mục Expert Advisors và tìm tên EA. Nếu vừa thêm hoặc biên dịch lại nhưng chưa thấy chương trình, làm mới danh sách hoặc khởi động lại terminal. Đảm bảo bạn đang chọn bản dành cho MT5, không phải tệp MQL4 dành cho MT4.
- Chọn đúng mã giao dịch. Dùng Symbol tương ứng với mã EA được thiết kế để xử lý, kể cả hậu tố hoặc tiền tố của broker nếu có. Một EA có thể kiểm tra tên symbol, kích thước hợp đồng hoặc giới hạn khối lượng. Chọn mã khác có thể khiến EA không phát tín hiệu hoặc làm các giả định trong báo cáo không còn phù hợp.
- Khớp timeframe với logic EA. Nếu EA đọc nến M15, hãy bắt đầu với Period M15. Một số EA lấy dữ liệu từ nhiều khung thời gian hoặc có input riêng để chọn timeframe chỉ báo; trong trường hợp đó, hãy đọc phần mô tả và các input. Period của tester vẫn là thông tin quan trọng, đặc biệt nếu mã dùng timeframe hiện tại của biểu đồ.
- Chọn ngày và chuẩn bị lịch sử. Bật Use date, nhập ngày bắt đầu và ngày kết thúc, rồi để MT5 tải dữ liệu khi được yêu cầu. Thời gian tải phụ thuộc vào symbol, khoảng ngày và dữ liệu có sẵn. Nếu thiếu lịch sử hoặc khoảng kiểm tra quá ngắn, EA có thể chưa gặp đủ các điều kiện cần để đánh giá.
- Đọc đầu vào và giả định tài khoản. Mở tab Inputs để xem lot, stop loss, giờ giao dịch, bộ lọc spread và các tham số khác. Đặt vốn ban đầu, tiền tệ tài khoản và đòn bẩy theo giả định bạn muốn mô phỏng. Số dư, mức ký quỹ hoặc giới hạn khối lượng không phù hợp có thể khiến lệnh bị từ chối.
Nếu EA giả định một loại tài khoản cụ thể, hãy đọc tài liệu hoặc mã nguồn trước khi chạy. Chẳng hạn, cách EA quản lý vị thế và lệnh có thể dựa vào việc tài khoản cho phép giữ nhiều vị thế hay chỉ một vị thế theo symbol. Cũng nên xem liệu EA có điều kiện chỉ giao dịch trong một phiên, giới hạn số lệnh hoặc yêu cầu mức spread tối đa hay không.
Ghi lại giá trị input đã dùng, thay vì chỉ lưu ảnh chụp báo cáo. Việc này giúp tái tạo lần chạy và so sánh phiên bản EA một cách nhất quán. Đừng thay đổi tham số chỉ để làm kết quả có vẻ thuận lợi hơn mà không ghi nhận lý do và cấu hình mới.
Chọn chế độ kiểm thử và thiết lập quan trọng
Strategy Tester có nhiều cách mô phỏng chuyển động giá. Tên và vị trí một số lựa chọn có thể thay đổi đôi chút theo bản MT5, nhưng điều cốt yếu là mức chi tiết của dữ liệu so với logic EA. Nếu EA xử lý điều kiện trong nến, lệnh chờ hoặc trailing stop, mô phỏng chỉ dựa trên giá mở cửa có thể không thể hiện đúng thời điểm các mức giá được chạm.
| Thiết lập | Khi nào dùng | Điểm cần lưu ý |
|---|---|---|
| Every tick based on real ticks | Dùng khi cần kiểm tra chi tiết với dữ liệu tick thực có sẵn cho symbol và giai đoạn đó. | Phụ thuộc vào mức độ sẵn có của tick lịch sử và thường tốn thời gian hơn. Tick lịch sử không tái tạo mọi yếu tố khớp lệnh của tài khoản thật. |
| Every tick | Phù hợp để kiểm tra EA phản ứng với các thay đổi giá trong nến, như điều kiện intrabar hoặc quản lý lệnh theo tick. | Tester tạo tick mô phỏng từ dữ liệu lịch sử; lựa chọn này không đồng nghĩa với phát lại tick thực. Kết quả có thể khác chế độ real ticks. |
| 1 minute OHLC | Dùng để chạy nhanh hoặc kiểm tra sơ bộ EA mà logic có thể được xem xét theo các mức Open, High, Low, Close của nến phút. | Không mô phỏng đầy đủ thứ tự giá bên trong mỗi phút. EA nhạy với diễn biến trong nến có thể cho kết quả khác đáng kể. |
| Open prices only | Dùng cho kiểm tra sơ bộ khi EA ra quyết định ở đầu nến mới và không cần mô phỏng chi tiết từng tick. | Không thích hợp để đánh giá logic cần phản ứng giữa nến, stop động hoặc lệnh có thể được kích hoạt trong nến. |
| Execution delay | Dùng thiết lập không trễ cho lượt kiểm tra logic cơ bản; chọn độ trễ mô phỏng nếu muốn xem EA phản ứng thế nào với độ trễ giả định. | Độ trễ trong tester không thay thế dữ liệu thực về thanh khoản, trượt giá hoặc điều kiện khớp lệnh của broker. |
| Deposit, tiền tệ và đòn bẩy | Đặt theo giả định tài khoản cần mô phỏng, nhất là khi EA dùng khối lượng phụ thuộc vào vốn. | Các giá trị này ảnh hưởng đến ký quỹ, khả năng mở lệnh và cách thể hiện mức giảm vốn bằng tiền hoặc phần trăm. |
| Spread | Đối chiếu spread mà dữ liệu tester sử dụng với bộ lọc spread trong EA. | Không mặc định tester đang dùng mức spread cố định giống tài khoản thật. Cách mô phỏng phụ thuộc vào dữ liệu và symbol. |
Với lần chạy đầu, chọn khoảng thời gian vừa đủ để xác nhận EA khởi tạo và có thể xử lý dữ liệu. Sau đó chạy một giai đoạn dài hơn với mô hình phù hợp, nhất là khi EA dùng điều kiện trong nến. Nếu so sánh hai mô hình tick, xem sự khác biệt như một cách tìm hiểu độ nhạy của EA với mô phỏng, không phải chọn chế độ tạo ra báo cáo đẹp hơn.
Chạy một backtest mẫu trong Strategy Tester
Quy trình dưới đây dùng EURUSD trên M15 làm ví dụ thao tác. Hãy thay symbol, timeframe và khoảng ngày theo logic EA của bạn. Tên cặp tiền chỉ minh họa cách điền trường, không phải lựa chọn giao dịch được khuyến nghị.
- Nhấn Ctrl+R để mở Strategy Tester. Ở trường Expert, chọn EA MT5 đã biên dịch.
- Ở Symbol, chọn EURUSD hoặc mã tương ứng của broker. Đặt Period là M15 và bật Use date để điền ngày bắt đầu, kết thúc.
- Chọn mô hình tick. Nếu có dữ liệu tick thực phù hợp và cần kiểm tra chi tiết, chọn Every tick based on real ticks. Nếu dữ liệu đó không có, chọn mô hình phù hợp khác và ghi lại lựa chọn.
- Đặt Deposit, tiền tệ tài khoản và đòn bẩy theo giả định cần thử. Mở Inputs để rà soát các giá trị đầu vào; lưu cấu hình nếu muốn dùng lại.
- Bật Visual mode nếu cần quan sát thời điểm EA mở hoặc đóng lệnh trên biểu đồ. Nếu chỉ cần chạy nhanh và đọc báo cáo, để chế độ này tắt.
- Nhấn Start. Theo dõi tiến trình và tab Journal để nhận biết lỗi khởi tạo, cảnh báo dữ liệu hoặc thông báo trong lúc EA chạy.
Visual mode hữu ích khi cần đối chiếu tín hiệu với nến và tìm thời điểm EA bỏ qua hoặc thực hiện một giao dịch. Nó không làm dữ liệu lịch sử chính xác hơn và có thể khiến lượt chạy lâu hơn. Khi tìm lỗi, thử một khoảng ngắn trước; sau khi hiểu hành vi, chạy khoảng đầy đủ với cùng cấu hình để xem báo cáo.
Đọc biểu đồ, Journal và báo cáo kết quả
Khi lượt chạy hoàn tất, xem các trang kết quả trong Strategy Tester. Tùy phiên bản MT5, bạn có thể thấy các tab như Backtest, Graph, Results hoặc Journal. Trước tiên, xác nhận tester đã dùng đúng EA, symbol, timeframe, ngày và input; sau đó mới diễn giải các chỉ số.
- Số giao dịch: cho biết EA có mở giao dịch trong giai đoạn đó hay không và tần suất ra sao. Không có lệnh chưa chắc là lỗi; EA có thể không gặp điều kiện vào lệnh.
- Profit và Expected Payoff: mô tả kết quả quá khứ theo cách tính của báo cáo. Chúng phụ thuộc vào dữ liệu, chi phí và giả định kiểm thử, nên không thể dùng riêng lẻ để dự báo.
- Drawdown: xem mức giảm tuyệt đối, tối đa và tương đối nếu báo cáo hiển thị. Đối chiếu con số với đường vốn và danh sách giao dịch để hiểu mức giảm kéo dài bao lâu và xuất hiện ở giai đoạn nào.
- Profit factor: thể hiện tỷ lệ giữa tổng lợi nhuận của giao dịch thắng và tổng lỗ của giao dịch thua trong báo cáo. Chỉ số này không cho biết đầy đủ độ ổn định theo thời gian, thời lượng drawdown hoặc khả năng khớp lệnh bên ngoài tester.
- Graph: xem đường balance và equity nếu có. Đường vốn tăng không đều, sụt sâu hoặc phụ thuộc vào một vài giao dịch lớn là lý do để mở danh sách lệnh và tìm hiểu kỹ hơn.
- Journal: tìm lỗi và cảnh báo về việc khởi tạo EA, tải dữ liệu, đọc chỉ báo, gửi lệnh hoặc xử lý lệnh. Dòng thông báo cụ thể thường giúp xác định nguyên nhân nhanh hơn việc suy đoán từ đường vốn.
Một con số đẹp không chứng minh EA đáng tin cậy. Kết quả có thể thay đổi khi dùng giai đoạn, dữ liệu, spread hoặc mô hình tick khác. Việc thử nhiều đầu vào trên cùng một đoạn rồi chỉ giữ cấu hình tốt nhất cũng có thể khiến EA khớp quá sát với dữ liệu đã dùng để điều chỉnh.
Nếu EA không mở lệnh hoặc backtest thất bại
| Triệu chứng | Nguyên nhân thường gặp | Cách kiểm tra |
|---|---|---|
| EA chạy xong nhưng không có giao dịch | Không có tín hiệu trong khoảng ngày; input, giờ giao dịch, bộ lọc spread, symbol hoặc timeframe không phù hợp. | Xem tab Inputs và Journal, xác nhận symbol, timeframe, ngày; thử khoảng dài hơn. Visual mode có thể giúp nhìn xem điều kiện của EA có được thỏa mãn hay không. |
| Không thấy EA trong danh sách | EA chưa biên dịch, nằm sai thư mục hoặc Navigator chưa được làm mới. | Mở tệp trong MetaEditor, nhấn F7 và xử lý lỗi biên dịch. Đảm bảo EA MT5 nằm trong thư mục Experts rồi làm mới Navigator. |
| Thiếu hoặc không có dữ liệu | Lịch sử cho symbol, khoảng ngày hoặc mô hình tick chưa được tải đầy đủ. | Kiểm tra tên symbol và ngày, cho terminal tải lịch sử nếu được yêu cầu, rồi thử lại. Thu hẹp giai đoạn để tìm phần dữ liệu bị thiếu. |
| EA không khởi tạo hoặc Journal báo lỗi | Lỗi trong OnInit, input không hợp lệ, dữ liệu chỉ báo chưa sẵn sàng hoặc EA dựa vào thứ tester không cung cấp. | Đọc dòng lỗi đầu tiên, rà điều kiện khởi tạo và thử input hợp lệ. Với chỉ báo MQL5, xem EA có tạo handle và lấy đủ dữ liệu bằng CopyBuffer hay không. |
| Lệnh bị từ chối | Khối lượng sai bước, thiếu ký quỹ, mức stop không hợp lệ theo symbol hoặc giả định tài khoản không phù hợp. | Đối chiếu Journal với thông số symbol, khối lượng tối thiểu/tối đa/bước lot, vốn và đòn bẩy. Kiểm tra EA có xử lý kết quả gửi lệnh hay chỉ gửi mà không đọc phản hồi. |
| Kết quả khác nhiều giữa hai lượt chạy | Khác mô hình tick, ngày, input, vốn, spread hoặc dữ liệu đã tải. | So sánh cấu hình và Journal của hai lượt. Chạy lại cùng thiết lập trước khi kết luận có lỗi trong EA. |
EA có thể biên dịch thành công nhưng không bao giờ chạy đến nhánh gửi lệnh. Với EA dùng chỉ báo MQL5, mã thường cần tạo handle phù hợp, lấy dữ liệu bằng CopyBuffer và xử lý trường hợp chưa có đủ bar hoặc chưa sao chép được dữ liệu. Nếu bỏ qua các điều kiện này, EA có thể không có tín hiệu dù tester vẫn chạy.
Đọc điều kiện chiến lược cùng với input. Ví dụ, EA chỉ giao dịch trong một phiên nhất định nhưng khoảng ngày kiểm thử lại quá ngắn, hoặc bộ lọc spread loại bỏ mọi tín hiệu trong dữ liệu đang dùng. Nếu cần xử lý lỗi theo tình huống, xem các cách sửa lỗi MT5 Strategy Tester và bài vì sao EA MT5 không vào lệnh.
Kiểm tra độ tin cậy và tránh kết luận sai
- Tách giai đoạn phát triển và kiểm định. Dùng một phần dữ liệu để sửa EA hoặc chọn tham số, rồi đánh giá cấu hình đã chốt trên một giai đoạn khác chưa dùng để điều chỉnh. Tránh liên tục thay input dựa trên kết quả của chính giai đoạn kiểm định.
- Thử nhiều giai đoạn thị trường. Chạy thêm các khoảng ngày khác nhau thay vì chỉ chọn một đoạn có báo cáo thuận lợi. Ghi lại ngày, symbol, timeframe, mô hình tick và input cho mỗi lượt.
- Giữ thiết lập nhất quán khi so sánh. Khi so hai phiên bản EA, dùng cùng dữ liệu, vốn, đòn bẩy, input và mô hình. Thay một yếu tố mỗi lần để xác định nguyên nhân tạo ra khác biệt.
- Đối chiếu với điều kiện dự kiến. Xem spread, giới hạn khối lượng, mức stop và loại tài khoản mà EA giả định. Tester không tái tạo hoàn toàn độ trễ, thanh khoản và mọi điều kiện khớp lệnh của một tài khoản thực.
- Đọc giao dịch riêng lẻ. Lưu cấu hình, xem danh sách lệnh và tìm hiểu liệu tổng kết quả có phụ thuộc vào vài giao dịch hiếm hay không. Điều này giúp nhận ra một báo cáo tổng hợp có thể che khuất các giai đoạn giảm vốn hoặc hành vi không mong muốn.
Backtest hữu ích để kiểm tra EA có chạy theo logic dự kiến, phát hiện lỗi và quan sát hành vi trên dữ liệu lịch sử. Nhưng kết quả còn phụ thuộc vào dữ liệu và cách mô phỏng; kết quả lịch sử hoặc kết quả đã kiểm thử không bảo đảm kết quả giao dịch tương lai.
Nếu EA cần sửa trước khi kiểm thử, FXNook AI Code Lab là workspace cho EA và indicator MT4/MT5, với các chức năng xây dựng, chuyển đổi, sửa và kiểm tra mã. Bước tiếp theo là ghi lại cấu hình, chạy EA trong Strategy Tester, đọc Journal để xử lý lỗi rồi thử một giai đoạn dữ liệu khác với cùng thiết lập.
Câu hỏi thường gặp
Backtest EA trên MT5 có cần bật AutoTrading không?
Không. Strategy Tester chạy EA trong môi trường kiểm thử riêng, nên không cần bật nút AutoTrading trên thanh công cụ để EA giao dịch trong backtest. Nếu không có lệnh, hãy xem điều kiện chiến lược, input, dữ liệu và Journal.
Nên chọn chế độ Every tick hay 1 minute OHLC khi backtest MT5?
Chọn Every tick, hoặc Every tick based on real ticks khi dữ liệu phù hợp có sẵn, nếu EA phụ thuộc vào biến động giá bên trong nến, stop hoặc lệnh chờ. 1 minute OHLC hữu ích cho lần chạy sơ bộ nhanh, nhưng không thể hiện đầy đủ thứ tự giá trong mỗi phút.
Vì sao EA không mở lệnh trong Strategy Tester của MT5?
EA có thể không gặp tín hiệu trong khoảng ngày đã chọn, hoặc input, symbol, timeframe, giờ giao dịch hay bộ lọc spread đang ngăn lệnh. Lỗi khởi tạo, thiếu dữ liệu chỉ báo, khối lượng không hợp lệ hoặc thiếu ký quỹ cũng có thể là nguyên nhân; Journal và Visual mode giúp phân biệt các trường hợp.
Questions
Backtest EA trên MT5 có cần bật AutoTrading không?
Không cần bật AutoTrading để EA giao dịch trong Strategy Tester, vì tester chạy EA trong môi trường kiểm thử riêng. Nếu EA không có lệnh, hãy xem điều kiện vào lệnh, thiết lập đầu vào, dữ liệu lịch sử và thông báo trong Journal.
Nên chọn chế độ Every tick hay 1 minute OHLC khi backtest MT5?
Dùng Every tick hoặc Every tick based on real ticks khi EA xử lý biến động trong nến, stop hoặc lệnh chờ; chế độ real ticks cần có dữ liệu tương ứng. 1 minute OHLC phù hợp để chạy sơ bộ nhanh, nhưng không mô phỏng đầy đủ thứ tự giá trong từng phút.
Vì sao EA không mở lệnh trong Strategy Tester của MT5?
Có thể EA không gặp tín hiệu trong giai đoạn đã chọn, hoặc symbol, timeframe, input, giờ giao dịch hay bộ lọc spread đang chặn lệnh. EA cũng có thể gặp lỗi khởi tạo, thiếu dữ liệu chỉ báo, khối lượng không hợp lệ hoặc thiếu ký quỹ; xem Journal để tìm thông báo cụ thể.