Một báo cáo backtest MT5 là tuyên bố về một tập lệnh cụ thể được tạo ra trên một lịch sử giá cụ thể. Gần như mọi cách đọc sai đều bắt nguồn từ việc đánh rơi một nửa câu đó. Hệ số lợi nhuận ở đầu báo cáo bị đọc như thể nó là thuộc tính của expert advisor. Nó là thuộc tính của hai thứ khác: tổng thể lệnh mà báo cáo đã phủ, và chuỗi tick mà trình kiểm thử được cho ăn.
Bài viết này là thứ tự đọc dẫn tới một quyết định. Báo cáo đã mặc định những gì trước khi in ra bất cứ thứ gì, chỉ số nào trả lời câu hỏi nào, mỗi con số nói dối bạn ở chỗ nào, và mỗi cách đọc bảo bạn phải đổi cái gì. Quy trình để tạo ra một báo cáo là công việc khác — cách chạy backtest đi hết phần đó từ đầu tới cuối.
| Điều kiện kiểm thử | |
|---|---|
| ID thí nghiệm | EXP-REPORT-READING-001 |
| Thí nghiệm gốc | EXP-BACKTEST-RUNBOOK-001 |
| Nguồn | data/run-manifests/*.json → results, ledger_recomputed, shadow_runs |
| Tổng thể | all 23 runs published on mt5depot at the time of derivation |
| Bản build MT5 | 6090 and 6140 |
| Mô hình | Every tick generated from M1 bars (Model 0) and Every tick based on real ticks (Model 4) |
| Tài khoản | 10,000 USD deposit on all 23 runs |
| Kiểm chứng lần cuối | 2026-08-26 |
Mọi con số bên dưới đều đến từ một backtest, và cả 23 lần chạy đều mang phán quyết PASS — đó là những lần chạy đã vượt qua cổng kiểm duyệt phát hành. Điều đó khiến đây là một tập những cái sống sót, nên không có gì ở đây nói được rằng một backtest đạt với tần suất bao nhiêu. Nó nói cho bạn biết một báo cáo đã đạt trông ra sao khi nhìn từ bên trong.
Thiết lập: báo cáo đã mặc định những gì trước khi in ra một con số
Khối Settings ở đầu một báo cáo MT5 không phải là phần dẫn nhập. Đó là danh sách các giả định mà mọi con số bên dưới thừa hưởng, và sáu trong số chúng quyết định phần còn lại có đáng đọc hay không. Tên nhà môi giới và bản build nằm ngay trên dòng tiêu đề của chính báo cáo — của chúng tôi đọc ra Exness-MT5Trial5 (Build 6090).
| Trường trong Settings | Nó thật sự cố định điều gì | Bản ghi của chúng tôi có gì |
|---|---|---|
Symbol: / Period: | Các chế độ thị trường mà kết quả chỉ là một mẫu của chúng | 22 lần chạy bắt đầu từ tháng 1/2019; cairn bắt đầu từ tháng 6/2021 |
| Model (cách sinh tick) | Tick bên trong mỗi cây nến được tạo ra như thế nào | Model 0 (sinh từ nến M1) ở 12 lần chạy, Model 4 (tick thật) ở 11 lần |
Initial Deposit: | Mẫu số của mọi tỷ lệ phần trăm trên trang | 10.000 USD ở cả 23 lần |
| Spread | Khoản chi phí bị trừ khỏi mỗi chân lệnh | Đo được ở đúng 1 trong 23 — số còn lại thừa hưởng mức mà lịch sử giá mang theo |
| Commission | Một khoản chi phí mà trình kiểm thử chỉ áp dụng nếu bạn tự đặt | 0 ở cả 23 lần |
Inputs: | Toàn bộ các thiết lập đã tạo ra kết quả này | Được đối chiếu với báo cáo ở mọi lần chạy |
Danh sách Inputs: là dòng mà người ta hay bỏ qua, và nó lại chính là thứ khiến một báo cáo tái lập được: đó là tập đầy đủ các giá trị bạn sẽ phải nhập lại để lấy về đúng trang đó.
Hai dòng trong bảng trên đáng dừng lại một chút. Một dòng hoa hồng bằng 0 không có nghĩa là hoa hồng đã bị bỏ qua. Nó có nghĩa là không khoản nào bị thu trên symbol đã kiểm thử. Đó là hai mệnh đề khác nhau, và chỉ bản ghi của lần chạy mới cho bạn biết cái nào áp dụng. Và một mức spread không được đo không phải là một mức spread bằng 0: ở 22 trong 23 lần chạy của chúng tôi, trường đó bỏ trống vì không có bộ ghi nhận nào chạy song song với bài kiểm thử. Mỗi chân lệnh đơn giản là lấy đúng mức spread mà lịch sử M1 mang theo. Chỉ tidewell-slack nêu được mức trung bình của chính nó, ở 19,14 point.
Có một cái bẫy về tên gọi thuộc về chỗ này. Trường mà các hướng dẫn cũ gọi là chất lượng mô phỏng được MT5 in ra dưới tên History Quality:, trong khối Results, ngay cạnh Bars:, Ticks: và Symbols:. Tìm chữ “modelling quality” trong một báo cáo Build 6090 sẽ không ra gì cả. Trong hồ sơ của chính chúng tôi, con số này chỉ có mặt ở 2 trong 23 manifest, bởi nó được giữ lại khi báo cáo gốc có nêu — đó là thuộc tính của những bản ghi này, chứ không phải một phép đo xem MetaTrader in nó thường xuyên tới đâu. Trên thực tế, điều đó nghĩa là bạn không thể dùng nó làm bộ lọc cho các báo cáo mà bạn không tự tạo ra. Nguồn dữ liệu tick mới là câu hỏi nằm bên dưới nó, và câu hỏi đó thì luôn trả lời được: hãy hỏi lần chạy đã dùng lịch sử nào.
Đọc báo cáo, từng chỉ số một
Hãy đọc trang đó theo thứ tự sau. Đây cố tình không phải thứ tự mà MetaTrader in ra, bởi hai lý do loại bỏ rẻ nhất lại nằm ở cuối báo cáo.
- Đọc
Settingstrước tiên. Mô hình,Initial Deposit:, spread và hoa hồng. Mọi tỷ lệ phần trăm bên dưới đều thừa hưởng chúng, và một lần chạy có spread không được đo không phải là một lần chạy không có spread. - Đọc
Total Trades:trước mọi tỷ số. Một tỷ số và cỡ mẫu của nó là một dữ kiện, không phải hai. Hãy viết số lệnh ngay cạnh tỷ số. - Hỏi xem con số đầu báo cáo phủ những lệnh nào. Nếu có danh sách lệnh công bố kèm theo, hãy kiểm tra tổng của nó có khớp với
Total Trades:không. Một trong 23 báo cáo của chính chúng tôi thì không khớp. - Đọc
Equity Drawdown Maximal:, đừng đọc dòng balance, và ghi lại xem bạn đã lấy con sốMaximalhayRelative— chúng là hai dòng riêng biệt. - Tìm ra lịch sử giá. Nhà môi giới nào, nguồn nào, giai đoạn nào. Đây chính là trường đã làm đổi một phán quyết trong hồ sơ của chúng tôi; mô hình tick thì không.
Dưới đây là toàn bộ cách đọc gói trong một cái bảng, dùng đúng những nhãn mà báo cáo in ra. Cột “Trong tập của chúng tôi” là những gì mỗi chỉ số đã thể hiện qua 23 lần chạy đã công bố. Nó hơn hẳn một dải giá trị trong sách giáo khoa, bởi nó được đo trên đúng loại báo cáo mà bạn đang cầm trên tay.
| Nhãn trong báo cáo | Câu hỏi nó trả lời | Trong tập của chúng tôi | Dấu hiệu cảnh báo |
|---|---|---|---|
Total Trades: | Có bao nhiêu bằng chứng | Từ 108 tới 4.725 mỗi lần chạy | Dưới ~100; một tỷ số trên 20 lệnh là tin đồn |
Profit Factor: | Lãi gộp chia cho lỗ gộp (hệ số lợi nhuận) | Từ 1,22 tới 1,59 trên cả 23 lần | Trên ~2,0 với một cửa sổ ngắn; hãy xem Total Trades: trước đã |
Profit Trades (% of total): | Tỷ lệ thắng — hình dạng của phân phối, không phải dấu của nó | Từ 30,80% tới 82,27%, tất cả đều có lãi | Được trích một mình, không có hệ số lợi nhuận đi kèm |
Total Net Profit: | Số tiền kiếm được, trước khi có bối cảnh | Từ 386,05 tới 28.687,43 USD trên cùng mức nạp 10.000 USD | Được trích mà thiếu Initial Deposit: và số năm |
Balance Drawdown Maximal: | Cú lõm sâu nhất tính trên lệnh đã đóng (sụt giảm tối đa) | Từ 0,67% tới 18,24% | Được trích trong khi dòng equity nằm ngay cùng trang |
Equity Drawdown Maximal: | Cú lõm sâu nhất tính cả vị thế đang mở | Sâu hơn dòng balance ở 23 trên 23 lần | Bị bỏ qua — đây mới là con số mà mức ký quỹ của bạn sống trên đó |
Expected Payoff: | Kết quả trung bình mỗi lệnh, tính bằng tiền | Không được mang theo trong manifest của chúng tôi | Bị đọc như một dự báo thay vì một số trung bình |
Recovery Factor: / Sharpe Ratio: | Lợi nhuận trên mỗi đơn vị đau đớn, theo hai cách | Không được mang theo trong manifest của chúng tôi | Bị đem so giữa những báo cáo có số lệnh khác nhau |
History Quality: | Chuỗi tick có phân giải nổi mức cắt lỗ của bạn không | Được nêu ở 2 trong 23 lần | Vắng mặt và nguồn dữ liệu cũng không rõ |
Có hai quy ước trong khối đó khiến người ta vấp ngay từ trước khi bắt đầu diễn giải bất cứ điều gì.
Total Trades: và Total Deals: là hai phép đếm khác nhau. Trong MetaTrader 5, một vòng khứ hồi là hai deal — một vào, một ra — nên một báo cáo hiện Total Trades: 50 sẽ hiện Total Deals: 100 ngay cạnh, và các lần đóng từng phần sẽ thêm deal mà không thêm trade. Hãy đọc các tỷ số theo số trade, tuyệt đối không theo số deal.
Có sáu dòng sụt giảm, chứ không phải một. Báo cáo in ra Absolute, Maximal và Relative cho cả balance lẫn equity. Tệ hơn nữa, số tiền và tỷ lệ phần trăm đổi chỗ cho nhau giữa hai trong số đó: Balance Drawdown Maximal: 36.84 (0.37%) đặt số tiền lên trước, còn Balance Drawdown Relative: 0.37% (36.84) đặt tỷ lệ phần trăm lên trước. Hai báo cáo có thể cùng trích “0.37%” và “36.84” từ hai dòng kề nhau mà đang nói về cùng một sự kiện — hoặc về hai sự kiện khác nhau.
Phần còn lại của khối Results — Z-Score:, AHPR:, GHPR:, LR Correlation:, LR Standard Error:, Margin Level: cùng các tương quan MFE/MAE — mô tả hình dạng của đường cong vốn hơn là kích thước của nó. Không thứ nào trong đó cứu nổi một báo cáo có số lệnh quá nhỏ, và không thứ nào trong đó sống sót qua một lần đổi lịch sử giá tốt hơn hệ số lợi nhuận. Hãy đọc nó sau năm bước ở trên, hoặc đừng đọc.
Hai trong số các dòng chỉ số gây ra phần lớn thiệt hại trong thực tế, nên hãy đọc chúng cùng nhau thay vì lần lượt.
Lãi ròng cần cả mẫu số lẫn cuốn lịch của nó. Cả 23 lần chạy của chúng tôi đều xuất phát từ cùng 10.000 USD, điều này khiến chúng so sánh được với nhau một cách bất thường. Vậy mà chúng vẫn trải từ 0,51% tới 57,38% mỗi năm. Đầu thấp mới là chỗ đáng học. orrery đọc ra hệ số lợi nhuận 1,46 với mức sụt giảm tối đa 0,67% — cặp số đẹp nhất trong cả danh mục. Nó kiếm được 386,05 USD qua 7,58 năm. Chẳng có gì trong báo cáo đó là gian dối cả. Nó đang trả lời một câu hỏi khác với câu mà phần lớn người đọc tưởng mình đang hỏi.
Tỷ lệ thắng và hệ số lợi nhuận gần như độc lập với nhau ở đây. Trên 23 lần chạy đã công bố, tương quan giữa chúng là 0,37. Phần lớn những gì quyết định một EA có kiếm được tiền hay không, vì thế, là vô hình đối với dòng tỷ lệ thắng. nautical thắng 30,80% số lệnh và cho hệ số lợi nhuận 1,22; gyre thắng 82,27% và cho 1,59. Cả hai đều có lãi, và hai tỷ lệ thắng cách nhau 51 điểm.
Hệ số lợi nhuận mà báo cáo không cho bạn thấy
Đây là phần không báo cáo nào cho bạn thấy, và cũng là lý do chúng tôi viết được bài này từ dữ liệu của chính mình. Mọi lần chạy đã công bố đều giữ nguyên danh sách lệnh đã đóng đầy đủ, nên mỗi báo cáo tách được làm đôi. Có lát cắt mà EA đã được chọn ra trên đó — cửa sổ phát triển mà quyết định phát hành được kiểm duyệt dựa vào. Rồi có những lệnh xảy ra sau khi nó lên sàn, những lệnh mà không có gì được chọn dựa trên chúng. Hai mươi trong 23 lần chạy của chúng tôi công bố cả hai lát cắt; ba lần còn lại hoàn toàn không có lát cắt sau phát hành.
| EA | Lát cắt phát triển | Lát cắt sau phát hành | Đầu báo cáo |
|---|---|---|---|
orrery | 1,28 (195 lệnh) | 6,43 (15 lệnh) | 1,46 (210 lệnh) |
windrose | 1,31 (101 lệnh) | 3,58 (7 lệnh) | 1,38 (108 lệnh) |
cairn | 1,48 (4.583 lệnh) | 1,64 (142 lệnh) | 1,48 (4.725 lệnh) |
gyre | 1,55 (136 lệnh) | — (5 lệnh, không lệnh nào thua) | 1,59 (141 lệnh) |
tessera | 1,28 (624 lệnh) | 0,88 (21 lệnh) | 1,27 (645 lệnh) |
zerqon | 1,53 (232 lệnh) | 0,72 (21 lệnh) | 1,43 (253 lệnh) |
Hãy đọc cột đầu và cột cuối của dòng orrery cùng nhau. Đầu báo cáo nói 1,46; giai đoạn mà EA thật sự được chọn ra thì nói 1,28; khác biệt nằm ở 15 lệnh — 7% bản ghi — chạy ở hệ số lợi nhuận 6,43. Đọc dòng zerqon theo đúng cách đó thì nó đi ngược chiều: 1,53 trên lát cắt phát triển, 0,72 trên 21 lệnh kể từ đó, và một con số đầu báo cáo 1,43 giấu cả hai.
Trên 20 lần chạy có công bố cả hai lát cắt, con số đầu báo cáo đẹp hơn lát cắt phát triển ở 14 lần và xấu hơn ở 6 lần. Ba lần còn lại bị để ra ngoài một cách có chủ ý: khi chỉ có một lát cắt, con số đầu báo cáo và con số phát triển của chúng phủ đúng cùng một tập lệnh, nên khác biệt giữa hai con số hoàn toàn không phải hiệu ứng tổng thể — đó là chính phần làm tròn hai chữ số thập phân của báo cáo khi đặt cạnh danh sách lệnh được tính lại. almanac in ra 1.52 ở chỗ danh sách lệnh tính lại ra 1,5153. Áp đúng ngưỡng làm tròn đó lên 20 lần chạy thì 13 trong số chúng vẫn còn một khoảng cách mà phép làm tròn không giải thích nổi, 8 trong số đó đi theo chiều tâng bốc.
Sự bất đối xứng đó không phải một vụ bê bối. Một con số đầu báo cáo trải qua hai giai đoạn sẽ bị kéo về phía giai đoạn nào may mắn hơn. Nhưng nó có nghĩa là con số đầu báo cáo không bao giờ là con số để đem đối chiếu với một tuyên bố về hành vi tương lai.
Những cái bẫy: các con số này đánh lừa bạn ra sao
Kiểu hỏng nằm dưới cả năm cái trên đều là một: một báo cáo là phép đo trên một tổng thể, và mọi chỉ số trên trang đều âm thầm thừa hưởng đúng cái tổng thể mà trình kiểm thử được chỉ vào.
Cải thiện: mỗi cách đọc bảo bạn đổi cái gì
Mỗi vòng lặp đổi một thứ, và mỗi lần đọc lại đúng ba con số: số lệnh, hệ số lợi nhuận và mức sụt giảm theo equity. Thứ tự dưới đây xếp theo chi phí — các phép kiểm tra rẻ trước, bởi hai trong số chúng thường xuyên kết thúc luôn cuộc điều tra.
- Nếu số lệnh nhỏ, hãy kéo dài giai đoạn — đừng động vào tham số. Một hệ số lợi nhuận dựng trên chưa tới khoảng 100 lệnh sẽ xê dịch vì một cửa sổ dài hơn nhiều hơn là vì bất kỳ thiết lập nào bạn có thể chỉnh. Lần chạy công bố nhỏ nhất của chúng tôi có 108 lệnh, và đó cũng là lần chạy mà chúng tôi trích các tỷ số một cách thận trọng nhất.
- Nếu con số đầu báo cáo và lát cắt phát triển bất đồng, hãy đọc lại chỉ trên lát cắt phát triển. Đó mới là con số mà các thiết lập được chọn dựa vào. Đó cũng là con số để đem so với bất kỳ ứng viên nào khác.
- Nếu sụt giảm theo equity nằm cao hơn hẳn sụt giảm theo balance, hãy tính khối lượng theo con số equity. Khoảng cách đó cho bạn biết EA ôm bao nhiêu vị thế trong cùng một nhịp chuyển động. Bản ghi của lần chạy chrysalis nói thẳng: tới bảy vị thế cùng lúc.
- Nếu báo cáo đến từ dữ liệu của người khác, hãy chạy lại nó trên một nguồn thứ hai trước mọi việc khác. Phép kiểm tra này có tác động đo được lớn nhất trong cả tập của chúng tôi, và nó lại là cái người ta chạy sau cùng.
Thứ thật sự làm xê dịch các con số: nguồn dữ liệu, không phải mô hình tick
Một trong các EA của chúng tôi được chạy lại có chủ đích để tách riêng hai biến đó, và bản ghi lần chạy gán nhãn cho từng lượt chạy bóng theo đúng thứ mà nó cô lập.
Lần chạy tidewell-slack | Đổi gì | Số lệnh | Hệ số lợi nhuận | Sụt giảm tối đa | Chất lượng lịch sử | Phán quyết |
|---|---|---|---|---|---|---|
| Đã công bố | Lịch sử M1 của Exness, Model 0 | 303 | 1,35 | 9,92% | 99% | PASS |
| Bóng — cô lập nguồn dữ liệu | Lịch sử Dukascopy, Model 0 | 351 | 1,13 | 18,18% | 99% | FAIL |
| Bóng — cô lập tick thật | Lịch sử Dukascopy, Model 4 | 345 | 1,11 | 18,20% | 100% | FAIL |
Hãy đọc nó như hai thí nghiệm riêng biệt. Chỉ đổi lịch sử giá — từ dòng một sang dòng hai, cùng mô hình tick — đã đưa hệ số lợi nhuận từ 1,35 xuống 1,13, làm mức sụt giảm gần như tăng gấp đôi, và lật phán quyết từ đạt sang trượt. Chỉ đổi mô hình tick trên lịch sử mới đó — từ dòng hai sang dòng ba — làm hệ số lợi nhuận xê dịch 0,02 và mức sụt giảm xê dịch 0,02 điểm. Còn chất lượng lịch sử đọc ra 99% và 100% ở hai lần chạy đã trượt, tức là chính cái trường mà phần lớn người ta dùng để sàng lọc lại xuất sắc suốt từ đầu tới cuối.
Một EA thứ hai chỉ về cùng hướng đó từ một góc khác. kestrel-hover được công bố trên tick thật của Dukascopy ở hệ số lợi nhuận 1,33 với mức sụt giảm 7,11%, còn lượt chạy bóng của nó trên lịch sử M1 của Exness ở Model 0 đọc ra 1,30 và 6,76% — cả nguồn lẫn mô hình đều đổi cùng lúc, mà kết quả gần như không nhúc nhích. Sự ổn định giữa các nguồn dữ liệu là điều có thể xảy ra. Chỉ là nó không phải thứ mà một báo cáo đơn lẻ chứng minh được.
Quy tắc thực dụng: một báo cáo chỉ là bằng chứng mang đi được đúng tới mức mà lịch sử giá của nó mang đi được. Chạy lại trên một nguồn thứ hai tốn của bạn một buổi tối. Trong hồ sơ của chúng tôi, đó là phép kiểm tra duy nhất trong bài này từng làm đổi một quyết định.
Bước tiếp theo: từ một bản báo cáo tới một quyết định
Đọc báo cáo cho tốt là bước thứ hai trong bốn bước. Trình tự là backtest → đọc → phân tích walk-forward → demo, và mỗi bước loại bỏ một kiểu sai khác nhau. Một báo cáo sống sót qua cả bốn bước đã xứng đáng có một vị thế nhỏ; một báo cáo sống sót qua hai bước đầu thì mới xứng đáng được kiểm thử thêm.
- Hãy luyện tập trên những bản ghi đầy đủ. Mỗi mục trong danh mục EA đã công bố đều mang theo danh sách lệnh đã đóng đầy đủ và manifest chạy của nó, nên bạn có thể tự tính lại con số đầu báo cáo và thấy chính xác những lệnh nào đã tạo ra nó. Đó là bài tập duy nhất khiến cách đọc này ngấm lại.
- Nếu một con số đẩy bạn quay về với chiến lược thay vì với bài kiểm thử, thì Builder là nơi bản thân quy tắc được thay đổi. Dò tìm trên không gian thiết lập lại là một công việc khác nữa, được nói tới trong tối ưu hóa tham số.
- Trước khi tính khối lượng dựa trên một con số sụt giảm bạn vừa đọc, quản lý rủi ro cho người dùng EA sẽ biến nó thành một mức nạp và một khối lượng lot.
- Cách chúng tôi tạo ra, chấm điểm và ghi lại tất cả những điều này được nêu trong phương pháp kiểm thử của chúng tôi.
Kết quả quá khứ trong một trình kiểm thử không phải là dự báo, và không lần chạy nào ở trên là một lời hứa về 12 tháng tới. Ý nghĩa của việc đọc một báo cáo cho đúng nhỏ hơn và hữu ích hơn một lời tiên đoán. Nó cho bạn biết điều gì đã được chứng minh, và điều gì thì mới chỉ được in ra.