Danh mục
Hiệu suất
Độ khó
Cơ bản
Dùng trong
BacktestĐánh giá EA

Backtest

Backtest (kiểm thử lại): mô phỏng các quy tắc giao dịch của một EA trên dữ liệu giá lịch sử để ước lượng chiến lược đó đã hoạt động ra sao trong quá khứ.

còn gọi: kiểm thử lại, mô phỏng lịch sử, kiểm thử chiến lược

Đã cập nhật

Nói đơn giản

Chạy các quy tắc của EA trên lịch sử giá để xem nó đã làm gì. Kết quả ghi lại một mô phỏng chứ không phải một dự báo, và hai thứ đó giống nhau đến đâu hoàn toàn phụ thuộc vào cách bạn dựng mô phỏng.

Vì sao quan trọng

Backtest là bằng chứng duy nhất mà phần lớn EA từng đưa ra, nên biết nó chứng minh được gì và không chứng minh được gì chính là phần lớn công việc đánh giá một EA. Nó loại bỏ một chiến lược với chi phí rẻ và cho thấy các quy tắc khớp với mô tả; thứ nó không làm được là dự đoán, và gần như mọi thương vụ đáng thất vọng đều bắt đầu từ việc đọc nó như thể nó dự đoán được.

  • Nó có thể bị bác bỏ theo cách mà một bài quảng cáo không bao giờ có. Một backtest nêu rõ nguồn dữ liệu, khoảng thời gian và mô hình chi phí, nhờ đó người mua có thể hỏi liệu lần chạy đó có tái lập được không — và một EA từ chối nêu những điều này thì đã nói với bạn một điều gì đó rồi.
  • Đây là nơi thất bại rẻ nhất. Những quy tắc thua lỗ trên lịch sử sẽ không bắt đầu thắng khi vào tài khoản thật, nên một backtest loại bớt ứng viên chỉ với chi phí một buổi tối tính toán.
  • Kết quả của nó là một khoảng, không phải một con số. Cùng bộ quy tắc trên các nguồn dữ liệu, mức spread và ngày bắt đầu khác nhau sẽ cho ra một dải kết quả, và bề rộng của dải đó mới là phát hiện thật sự.

Dùng để kiểm chứng một chiến lược

Dùng ở đâu

  • Sàng lọc một ý tưởng chiến lược trước khi bỏ tiền hoặc bỏ thời gian chạy forward test cho nó.
  • Xác định tần suất giao dịch, thời gian nắm giữ trung bình và chuỗi thua tệ nhất mà người triển khai nên lường trước.
  • Tạo ra các con số công bố trên trang một EA — profit factor, sụt giảm vốn, tỷ lệ thắng — và đó là lý do nguồn gốc của lần chạy là một phần của tuyên bố.
  • Chạy lại một EA sẵn có trên khung dữ liệu mới hơn để kiểm tra xem hành vi của nó đã trôi lệch chưa.

Kết quả đáng tin trông như thế nào

  • Nguồn dữ liệu, khoảng thời gian và mô hình tester đều được nêu rõ, nhờ vậy lần chạy có thể được tái lập thay vì chỉ được tin.
  • Lần chạy mô hình hóa spread và hoa hồng ở mức thực tế thay vì để chúng ở một giá trị cố định lý tưởng.
  • Khung thời gian trải qua nhiều chế độ thị trường: tối thiểu một giai đoạn xu hướng, một giai đoạn đi ngang và một giai đoạn căng thẳng.
  • Không ai tinh chỉnh quy tắc trên chính khung đang được báo cáo, hoặc nếu có thì trang đó trưng ra một khung out-of-sample chưa đụng tới ngay bên cạnh.
  • Số lệnh nằm ở mức hàng trăm, nên các thống kê nổi bật không bị gánh bởi một nhúm giá trị ngoại lai.

Dấu hiệu cảnh báo

  • Một ảnh chụp đường vốn không có nguồn dữ liệu, không có khoảng thời gian và không có số lệnh.
  • Một khung bắt đầu đúng lúc thuận lợi: một EA có bài kiểm tra khởi đầu sau cuộc khủng hoảng gần nhất thì đã tự chọn đề thi cho mình.
  • Tham số được nêu với độ chính xác khó tin, chẳng hạn đường trung bình 37 phiên với mức dừng lỗ 23,7 pip.
  • Một con số chất lượng mô phỏng đến từ khuôn mẫu chứ không từ một lần chạy. Model 0 của MT5 sinh tick từ nến M1; chỉ Model 4 mới phát lại tick đã ghi. Lược đồ phía sau các trang này từng đặt mặc định 99 cho trường đó, nên một lần chạy Model 0 vẫn hiển thị '99% modelling quality, against a 92% minimum' cho đến khi giá trị mặc định ấy bị gỡ vào 2026-08-06.
  • Kết quả chỉ được trình bày trên đúng một công cụ mà tác giả đã tối ưu.

Backtest so với giao dịch thật

  • Mức khớp lệnh quá lạc quan. Tester giả định lệnh đã tới thị trường ở đúng giá mô phỏng; khớp lệnh thật cộng thêm trượt giá, requote và độ trễ, và cả ba đều tốn tiền.
  • Chi phí là tĩnh. Một backtest với spread cố định bỏ qua phần giãn ra quanh tin tức và lúc chuyển phiên, tức đúng những lúc nhiều chiến lược vào lệnh.
  • Thị trường đã xảy ra rồi. Khung kiểm thử không chứa chế độ nào mà chiến lược chưa từng thấy, trong khi giao dịch thật rồi sẽ đưa ra một chế độ như vậy.
  • Hãy chờ đợi profit factor và kỳ vọng khi chạy thật thấp hơn các con số đã kiểm thử. Chênh lệch vừa phải là bình thường; đổi dấu nghĩa là bài kiểm thử đã định giá sai chi phí hoặc quy tắc đã bị gọt theo dữ liệu.
  • Khoảng chênh đó đã được đo ở đây. Trên mười bốn trang EA của trang này, profit factor backtest nằm giữa 1.23 và 1.53, trong khi các khung out-of-sample sau khi đăng dao động từ 0.72 đến 6.43 trên bảy đến 142 lệnh: hai trường hợp dưới 1.0, trong đó có chính trang có backtest tốt nhì nhóm. Mẫu nhỏ như vậy trông đúng như thế, theo cả hai chiều.

Phương pháp kiểm chứng khuyến nghị

  1. 1Chốt mô hình chi phí trước — spread và hoa hồng thực tế — rồi mới chạy, thay vì tinh chỉnh trên mức khớp lý tưởng rồi cộng chi phí vào cuối.
  2. 2Dành riêng một khung chưa đụng tới trước khi tối ưu bất cứ thứ gì, và đừng nhìn vào nó cho tới khi quy tắc đã chốt.
  3. 3Chạy lại trên nguồn dữ liệu thứ hai. Hai nguồn lệch nhau nhiều hơn mức không đáng kể đang nói với bạn rằng kết quả phụ thuộc vào dữ liệu chứ không phải vào quy tắc.
  4. 4Dịch ngày bắt đầu vài tuần rồi chạy lại. Một kết quả chỉ sống sót với đúng một ngày bắt đầu thì không phải là kết quả.

Ví dụ

Một EA, một khung thời gian, bốn lần chạy tester chỉ khác nhau ở mức spread cố định ghi trong tệp thiết lập.

Spread cố định đặt ở 20, 30, 40 và 60 point
bốn báo cáo giống hệt nhau
MD5 của cả bốn tệp báo cáo
471C1CE24EC24E669C20BD2B01EBB8A3
Mỗi tệp 621.050 byte: thiết lập đó không làm dịch chuyển gì cả.

Đo trên GBPJPYm vào 2026-07-31, và đó là lý do trang đó không công bố bất kỳ con số spread nào; một bộ ghi chạy sau đó ngay trong tester cho ra mức trung bình 19,14 point.

Phép tính 20 / 30 / 40 / 60 point → một báo cáo giống nhau tới từng byte

Kết quả Tester của MT5 không có khóa Spread: đó là tàn dư từ MT4, nên mô hình chi phí thực sự có hiệu lực chưa bao giờ là mô hình đã được đặt

Cách diễn giải

Hãy đọc một backtest như một tuyên bố kèm theo điều kiện. Chính các điều kiện đó quyết định bao nhiêu phần trong đó sống sót khi chạm vào một tài khoản thật.

Khoảng Ý nghĩa
Không nêu nguồn dữ liệu lẫn khoảng thời gian Không phải bằng chứng. Không có gì để tái lập và cũng không có gì để phản bác.
Có nêu nguồn, một công cụ duy nhất, khung đã tối ưu Một điểm khởi đầu. Nó cho thấy quy tắc có thể thắng ở đâu đó, và đó là điều yếu nhất mà một backtest có thể cho thấy.
Có nêu nguồn, chi phí thực tế, trải nhiều chế độ thị trường Đáng đọc. Các con số giờ nói về chiến lược chứ không còn nói về cách dựng bài kiểm thử.
Những điều trên cộng thêm một khung out-of-sample chưa đụng tới Bằng chứng mạnh nhất mà riêng một backtest có thể tạo ra: một phần của nó đã không nằm trong tay người tinh chỉnh quy tắc.
  • Hãy hỏi cái gì đã được tối ưu. Mỗi tham số được tinh chỉnh trên khung được báo cáo đều mượn một chút kết quả từ chính dữ liệu đó.
  • Xem số lệnh trước khi xem lợi nhuận. Năm mươi lệnh không đủ để phân biệt một chiến lược với may mắn, dù chúng trông đẹp đến đâu.
  • Một backtest không thể tái lập chỉ là một ảnh chụp màn hình. Hãy coi dòng ghi nguồn gốc là một phần của con số, không phải một chú thích cuối trang.

Các trang EA của mt5depot nêu rõ nguồn dữ liệu, khoảng thời gian và mô hình tester cho mọi lần chạy được công bố, và chỉ 6 trong 30 trang đó có con số chất lượng mô phỏng — 6 trong 18 lần chạy thực hiện trên tick thật. Một cổng kiểm tra khi build sẽ đọc các trang đã xuất bản để 24 trang còn lại không tuyên bố con số ấy.

Sai lầm thường gặp

Đọc backtest như một dự báo

Nó báo cáo điều mà các quy tắc đã làm trên dữ liệu vốn đã tồn tại. Tương lai chứa những điều kiện mà khung kiểm thử không có, đó là lý do kết quả forward kém hơn và khoảng chênh mới là thứ cần lên kế hoạch.

Tối ưu và báo cáo trên cùng một khung

Mỗi tham số được tinh chỉnh đều hấp thụ một phần nhiễu của khung đó, nên kiểm thử trên chính dữ liệu dùng để tinh chỉnh là đang đo việc tinh chỉnh. Kết quả chắc chắn đẹp và chắc chắn không lặp lại.

So sánh hai backtest chạy trong điều kiện khác nhau

Spread khác, nguồn dữ liệu khác, khoảng thời gian khác và mô hình tester khác đều làm dịch chuyển các con số độc lập với chiến lược. Hai con số chỉ so sánh được khi phần dựng phía sau chúng trùng khớp.

Mặc định khung càng dài càng tốt

Một bài kiểm thử mười năm trên dữ liệu nến nội suy có thể nói lên ít hơn hai năm trên tick thật đối với một chiến lược trong ngày, bởi lần chạy dài hơn ấy chưa bao giờ chứa đường đi bên trong nến mà các quy tắc thực sự giao dịch.

Chi tiết

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

Một backtest tốt có đủ để mua một EA không?
Không. Một backtest có thể loại bỏ một chiến lược và có thể cho thấy các quy tắc hoạt động đúng như mô tả, nhưng nó không thể chứng minh rằng lợi thế đó sống sót qua những điều kiện mà khung kiểm thử không chứa. Hãy tìm thêm một khung out-of-sample hoặc một bản ghi forward bên cạnh, và đọc mô hình chi phí trước khi đọc lợi nhuận.
Backtest một EA nên dài bao lâu?
Đủ dài để chứa nhiều chế độ thị trường và đủ số lệnh để thống kê ổn định: trên thực tế là vài năm và vài trăm lệnh với phần lớn chiến lược. Riêng độ dài không phải là tiêu chí: một lần chạy dài trên dữ liệu kém có thể nói lên ít hơn một lần chạy ngắn hơn trên tick thật.
Vì sao kết quả backtest khác nhau giữa các sàn?
Vì lịch sử giá, bản ghi spread và điều kiện giao dịch khác nhau. Chạy cùng bộ quy tắc trên hai nguồn dữ liệu và nhận về kết quả khác biệt đáng kể là một thông tin hữu ích: nó có nghĩa kết quả phụ thuộc vào dữ liệu ngang với phụ thuộc vào chiến lược.