Mục lục (8)
Backtest là kiểm tra một chiến lược giao dịch trên dữ liệu giá quá khứ: áp dụng đúng quy tắc của chiến lược lên biểu đồ cũ để xem nếu giao dịch như vậy thì kết quả ra sao (tỷ lệ thắng, lãi lỗ trung bình, mức sụt giảm lớn nhất). Backtest giúp loại bỏ chiến lược kém trước khi mất tiền thật. Nhưng kết quả backtest không đảm bảo tương lai: chiến lược bị chỉnh thông số cho khớp quá khứ thường thất bại khi gặp dữ liệu mới, và backtest không có trượt giá hay áp lực tâm lý như giao dịch thật.
| Cách backtest | Phù hợp với | Ưu điểm | Hạn chế |
|---|---|---|---|
| Thủ công trên biểu đồ | Price action, SMC, mô hình nến | Không cần lập trình | Chậm, dễ “nhìn thấy trước” tương lai |
| Bar Replay trên TradingView | Mọi chiến lược nhìn biểu đồ | Che phần tương lai, chạy từng nến | Vẫn phải ghi chép tay; dữ liệu khung nhỏ giới hạn theo gói |
| Strategy Tester trên MT5 | EA, chiến lược viết thành code | Nhanh, hàng nghìn lệnh, có báo cáo | Cần code; dễ tối ưu quá mức |
1. Backtest là gì? Khác forward test thế nào?
Backtest là kiểm tra một chiến lược giao dịch trên dữ liệu giá quá khứ: áp dụng đúng quy tắc của chiến lược lên biểu đồ cũ để xem nếu đã giao dịch như vậy thì tỷ lệ thắng, lãi lỗ và mức sụt giảm ra sao. Forward test thì chạy chiến lược trên thị trường đang diễn ra.
- Backtest: chạy chiến lược trên dữ liệu quá khứ. Nhanh, kiểm tra được nhiều năm trong vài giờ.
- Forward test: chạy chiến lược trên thị trường đang diễn ra nhưng bằng tài khoản demo hoặc vốn rất nhỏ. Chậm hơn nhưng gần thực tế hơn.
- Giao dịch thật: bước cuối, khi cả hai bước trên đều ổn.
Quy định của CFTC (Mỹ) về việc trình bày kết quả mô phỏng nêu rõ giới hạn của mọi backtest: đó không phải giao dịch thật, có thể đánh giá sai tác động của thanh khoản, thường được xây dựng nhờ nhìn lại quá khứ, và không ai đảm bảo tài khoản thật sẽ đạt kết quả tương tự.
2. Chuẩn bị trước khi backtest
Viết quy tắc ra giấy, rõ đến mức người khác làm theo cũng ra cùng kết quả. “Mua khi thấy giá đẹp” không backtest được. Ví dụ một bộ quy tắc backtest được:
- Chỉ mua khi giá khung H4 nằm trên đường MA 200.
- Chờ giá hồi về vùng cầu H4 chưa bị chạm lại.
- Vào lệnh khi xuất hiện nến nhấn chìm tăng trên H1 trong vùng.
- Dừng lỗ dưới mép xa của vùng 5 pip; chốt lời ở 2R (gấp 2 lần khoảng dừng lỗ).
- Rủi ro 1% mỗi lệnh; không vào lệnh trong 30 phút trước và sau tin mạnh.
Chọn phạm vi kiểm tra: cặp tiền, khung thời gian, giai đoạn. Nên gồm cả lúc thị trường có xu hướng và lúc đi ngang, cả giai đoạn biến động mạnh. Tính cả chi phí: spread, hoa hồng, và nếu giữ lệnh qua đêm thì cả phí swap.
3. Cách backtest thủ công bằng Bar Replay trên TradingView
Backtest thủ công dễ mắc lỗi lớn nhất: bạn đã nhìn thấy giá sau đó chạy thế nào, nên vô tình chọn điểm vào “đẹp”. Bar Replay của TradingView giải quyết việc này bằng cách giấu phần biểu đồ tương lai:
- Mở biểu đồ cặp tiền, bấm nút Bar replay (biểu tượng tua lại) trên thanh công cụ phía trên.
- Chọn điểm bắt đầu: rê chuột lên biểu đồ, bấm vào ngày giờ muốn bắt đầu (hoặc chọn ngày đầu tiên có dữ liệu, hoặc một nến ngẫu nhiên). Phần sau điểm đó bị ẩn.
- Bấm Forward để đi từng nến (phím tắt Shift + mũi tên phải), hoặc Play để chạy liên tục với tốc độ tùy chọn.
- Mỗi khi đủ điều kiện, ghi lệnh vào bảng tính như thể đang giao dịch thật, rồi chạy tiếp để xem kết quả.
Lưu ý: lệnh đặt trong chế độ Replay (kể cả Paper Trading) vẫn khớp theo giá thời gian thực, nên hãy ghi chép tay. Dữ liệu khung nhỏ (M1, M5) xem được bao xa tùy gói tài khoản TradingView; nếu điểm bắt đầu quá xa, biểu đồ báo không có dữ liệu.
Bảng ghi chép mẫu (mỗi lệnh một dòng; có thể dùng luôn mẫu nhật ký giao dịch Excel của SINVEST):
| Ngày | Cặp | Hướng | Giá vào | Dừng lỗ | Chốt lời | Kết quả (R) | Ghi chú, ảnh chụp |
|---|---|---|---|---|---|---|---|
| 12/03 | EURUSD | Mua | 1.1652 | 1.1630 | 1.1696 | +2 | Vùng cầu H4, nhấn chìm H1 |
| 19/03 | EURUSD | Mua | 1.1711 | 1.1689 | 1.1755 | −1 | Tin mạnh làm thủng vùng |
Số liệu trong bảng là ví dụ minh họa.
4. Backtest EA bằng Strategy Tester trên MT5
Với chiến lược đã viết thành EA, MT5 có sẵn Strategy Tester (mở trong menu View):
- Chọn EA, cặp tiền, khung thời gian, giai đoạn kiểm tra, số vốn ban đầu và đòn bẩy.
- Chọn chế độ mô phỏng giá (Modelling):
- Every tick based on real ticks: dùng tick thật sàn đã lưu, chính xác nhất. Lần đầu tải dữ liệu có thể mất nhiều thời gian.
- 1 minute OHLC: chỉ dùng 4 giá (mở, cao, thấp, đóng) của mỗi nến M1, nhanh hơn nhưng kém chính xác.
- Open prices only: chỉ chạy ở giá mở của mỗi nến, nhanh nhất, chỉ nên dùng để thử sơ bộ.
- Chạy trên tài khoản và loại tài khoản giống tài khoản sẽ dùng thật, để spread và hoa hồng trong kết quả sát thực tế.
- Chạy và đọc báo cáo: lợi nhuận ròng, profit factor, mức sụt giảm lớn nhất, số lệnh.
Strategy Tester còn có chức năng tối ưu hóa (thử hàng nghìn bộ thông số để tìm bộ cho lợi nhuận cao nhất). Đây là công cụ mạnh nhưng cũng là đường ngắn nhất dẫn tới tối ưu quá mức (xem mục 6).
5. Đọc kết quả backtest
| Chỉ số | Ý nghĩa | Cần để ý |
|---|---|---|
| Số lệnh | Cỡ mẫu | Dưới khoảng 50 lệnh thì kết quả rất dễ do may rủi |
| Tỷ lệ thắng | % lệnh có lãi | Đọc cùng tỷ lệ lời/lỗ, không đọc riêng |
| Lãi, lỗ trung bình (R) | Lệnh thắng, thua trung bình bằng bao nhiêu lần mức rủi ro | Xem tỷ lệ lời/lỗ |
| Kỳ vọng mỗi lệnh | Tỷ lệ thắng × lãi TB − tỷ lệ thua × lỗ TB | Phải dương sau khi trừ chi phí |
| Profit factor | Tổng lãi ÷ tổng lỗ | Trên 1 mới có lãi |
| Sụt giảm lớn nhất | Mức giảm từ đỉnh vốn xuống đáy | Xem drawdown; có chịu được không? |
| Chuỗi thua dài nhất | Số lệnh thua liên tiếp | Tâm lý có chịu nổi không? |
Ví dụ (số liệu giả định): backtest quy tắc ở mục 2 được 120 lệnh, thắng 48 lệnh (40%), lệnh thắng trung bình +2,1R, lệnh thua −1R.
| Chỉ số | Cách tính | Kết quả |
|---|---|---|
| Kỳ vọng mỗi lệnh | 0,4 × 2,1R − 0,6 × 1R | +0,24R |
| Profit factor | (48 × 2,1) ÷ (72 × 1) | Khoảng 1,4 |
| Trừ chi phí | Dừng lỗ trung bình 20 pip, spread và hoa hồng khoảng 1 pip mỗi lệnh: 1 ÷ 20 = 0,05R | +0,19R mỗi lệnh |
| Tổng 120 lệnh | 120 × 0,19R | Khoảng +23R, tức khoảng +23% với rủi ro 1% (chưa tính lãi kép) |
Chỉ riêng chi phí đã lấy đi khoảng 1/5 lợi nhuận. Với chiến lược dừng lỗ ngắn (scalping), chi phí còn ăn mòn mạnh hơn nhiều.
6. Những bẫy khi backtest
Minh họa của SINVEST.
- Tối ưu quá mức (overfitting): thử thật nhiều bộ thông số rồi chọn bộ đẹp nhất. Nghiên cứu của Bailey, Borwein, López de Prado và Zhu (2014) chứng minh chỉ cần thử một số lượng không lớn các cấu hình là đã dễ dàng có được kết quả backtest rất đẹp; càng thử nhiều, xác suất backtest bị “khớp giả” càng cao, và chiến lược như vậy có thể thua khi gặp dữ liệu mới. Cách phòng: giữ lại một phần dữ liệu (ví dụ 30% gần nhất) không đụng tới khi xây dựng, chỉ dùng để kiểm tra cuối; ít thông số thì tốt hơn nhiều thông số.
- Nhìn thấy trước tương lai: vẽ vùng, đường xu hướng sau khi đã thấy giá chạy; dùng giá đóng cửa của nến chưa đóng. Dùng Bar Replay và chỉ quyết định khi nến đã đóng.
- Bỏ qua chi phí: spread, hoa hồng, swap, trượt giá lúc ra tin.
- Mẫu quá nhỏ: 15 lệnh thắng 10 chưa nói lên điều gì.
- Chỉ chọn giai đoạn thuận lợi: chiến lược theo xu hướng backtest đúng năm có xu hướng mạnh sẽ trông rất tốt.
- Đổi quy tắc giữa chừng: thấy thua là sửa quy tắc rồi backtest lại từ đầu trên cùng dữ liệu, thực chất cũng là tối ưu quá mức.
Tổng quan của Park và Irwin (2007) về 95 nghiên cứu phân tích kỹ thuật cũng cho thấy nhiều kết quả “có lãi” bị ảnh hưởng bởi cách chọn dữ liệu và kiểm định. Đây là lý do mọi kết quả backtest, của bạn hay người bán EA, đều cần nghi ngờ trước.
7. Sau khi backtest: forward test rồi mới giao dịch thật
- Forward test trên demo theo đúng quy tắc, đủ vài chục lệnh. So sánh kỳ vọng, tỷ lệ thắng với backtest.
- Giao dịch thật với vốn nhỏ (tài khoản cent hoặc số vốn chấp nhận mất), giữ rủi ro mỗi lệnh như khi kiểm tra, xem quy tắc 2%.
- Theo dõi độ lệch: nếu kết quả thật kém hẳn backtest, tìm nguyên nhân (chi phí, khớp lệnh, tâm lý, hay chiến lược bị tối ưu quá mức) trước khi tăng vốn.
Nếu đang chuẩn bị thi quỹ, backtest cũng giúp bạn ước tính chuỗi thua và mức sụt giảm có thể gặp để chọn rủi ro mỗi lệnh phù hợp với giới hạn lỗ ngày và lỗ tổng. Xem quản lý vốn khi thi quỹ.
Theo ESMA, 74–89% tài khoản khách hàng cá nhân thua lỗ khi giao dịch CFD. Backtest kỹ không xóa được rủi ro này, nhưng giúp bạn biết chiến lược của mình có lợi thế thật hay chỉ là may mắn.
Nội dung mang tính giáo dục, không phải khuyến nghị đầu tư. Giao dịch CFD có đòn bẩy rủi ro cao, bạn có thể mất toàn bộ số vốn.
Câu hỏi thường gặp
Backtest là gì?
Backtest là kiểm tra một chiến lược giao dịch trên dữ liệu giá quá khứ: áp dụng đúng quy tắc của chiến lược lên biểu đồ cũ để xem kết quả nếu đã giao dịch như vậy, gồm tỷ lệ thắng, lãi lỗ trung bình và mức sụt giảm lớn nhất.
Backtest bao nhiêu lệnh là đủ?
Không có con số chuẩn, nhưng dưới khoảng 50 lệnh thì kết quả rất dễ do may rủi. Nên kiểm tra từ 100 lệnh trở lên, trải qua nhiều giai đoạn thị trường khác nhau (có xu hướng, đi ngang, biến động mạnh).
Backtest trên TradingView có miễn phí không?
Bar Replay có trên TradingView, nhưng độ sâu dữ liệu khung thời gian nhỏ (M1, M5) phụ thuộc gói tài khoản. Nếu điểm bắt đầu quá xa so với giới hạn của gói, biểu đồ sẽ báo không có dữ liệu.
Nên backtest thủ công hay tự động?
Chiến lược dựa vào nhận định biểu đồ (price action, SMC) thường phải backtest thủ công bằng Bar Replay. Chiến lược có quy tắc rõ ràng có thể viết thành EA và backtest tự động trên MT5, nhanh hơn và kiểm tra được nhiều lệnh hơn, nhưng dễ tối ưu quá mức.
Kết quả backtest có tin được không?
Chỉ tin có điều kiện. Backtest không có trượt giá, áp lực tâm lý và thường được xây dựng nhờ nhìn lại quá khứ. Kết quả đáng tin hơn khi chiến lược có ít thông số, được kiểm tra trên dữ liệu không dùng để tối ưu, đã trừ chi phí, và cho kết quả tương tự khi chạy demo.
Nguồn tham khảo
- TradingView Support: Bar Replay, how and why to test a strategy in the past
- MetaTrader 5 Help: Strategy Testing (chế độ mô phỏng giá: Every tick based on real ticks, 1 minute OHLC, Open prices only)
- Bailey, Borwein, López de Prado, Zhu (2014): Pseudo-Mathematics and Financial Charlatanism, The Effects of Backtest Overfitting on Out-of-Sample Performance, Notices of the AMS
- CFTC, 17 CFR § 4.41: giới hạn của kết quả giao dịch mô phỏng (Cornell LII)
- Park và Irwin (2007): What Do We Know About The Profitability Of Technical Analysis?, Journal of Economic Surveys
- ESMA: biện pháp can thiệp sản phẩm với CFD (74–89% tài khoản cá nhân thua lỗ)
Nội dung chỉ nhằm chia sẻ kiến thức, không phải lời khuyên đầu tư. Giao dịch forex và CFD có rủi ro mất vốn cao.
Viết bởi
SINVEST
Group Facebook
Đảo Trader - Cùng anh em vào bờ
Nhóm công khai · 25,2K thành viên Hỏi đáp, chia sẻ kinh nghiệm giao dịch cùng anh em trader Việt.
Tham gia group