Vào ngày 14 tháng 3 năm 2023, EUR/USD đã giảm 180 pips trong 4 giờ sau khi tin tức về sự sụp đổ của SVB được công bố.

Daniel Harrington
Chuyên gia phân tích giao dịch · MT5 specialist
☕ 13 phút đọc
Bạn sẽ học được:
- 1Ảo Ảnh Backtesting: Tại Sao Bài Kiểm Tra Chất Lượng 90% Của Bạn Vô Nghĩa
- 2Overfitting (Quá Khớp): Lý Do Thực Sự Khiến EA Chết Sau 3 Tuần Giao Dịch Trực Tiếp
- 34 Lỗi Thực Thi Không Ai Nói Đến
- 4Vấn Đề Broker (Hầu Hết Nhà Giao Dịch Hoàn Toàn Bỏ Qua Điều Này)
- 5Một EA Có Thể Triển Khai Thực Sự Trông Như Thế Nào
Vào ngày 14 tháng 3 năm 2023, EUR/USD đã giảm 180 pips trong 4 giờ sau khi tin tức về sự sụp đổ của SVB được công bố. Tôi đã chứng kiến ba EA riêng biệt trên thiết bị đầu cuối của mình hoàn toàn mất kiểm soát, một EA đã trung bình giá xuống theo xu hướng, một EA đảo chiều quá sớm, và một EA chỉ... đóng băng. Cả ba đều đã vượt qua các backtest 2 năm với tỷ lệ Sharpe trên 1.8. Ngày hôm đó đã khiến tôi mất tiền thật, và nó buộc tôi phải suy nghĩ lại mọi thứ tôi từng biết về giao dịch tự động. Sự thật là, hầu hết EA MT5 không thất bại vì logic kém. Chúng thất bại vì cách chúng được xây dựng, kiểm tra và triển khai.

Tỷ lệ thắng 92% trong backtest không có ý nghĩa gì khi slippage, spread nới rộng và overfitting tấn công EA của bạn trên thị trường thực tế. Ba trong số các EA của tôi đã bị hỏng trong sự sụp đổ của SVB — tất cả đều có backtest hoàn hảo.
Ảo Ảnh Backtesting: Tại Sao Bài Kiểm Tra Chất Lượng 90% Của Bạn Vô Nghĩa
Mỗi tuần tôi lại thấy ai đó đăng một backtest trên diễn đàn giao dịch với đường cong lợi nhuận (equity curve) mượt mà và tuyên bố EA của họ đã sẵn sàng để giao dịch trực tiếp. Vấn đề không phải là kết quả. Vấn đề là kết quả đó thực sự đang đo lường điều gì.
Strategy Tester của MT5, ngay cả ở chế độ 'Every Tick Based on Real Ticks', cũng không thể tái tạo hành vi spread trực tiếp. Spreads trên EUR/USD trong cơn hoảng loạn SVB mà tôi đã đề cập đã đạt 8-12 pips ở một số broker, trong khi EA được xây dựng và kiểm tra với giả định spread cố định là 1.2 pip. Biến số duy nhất đó đã biến một giao dịch mục tiêu 60-pip thành một vị thế thua lỗ trước khi giá thậm chí còn di chuyển.
Có một cài đặt cụ thể trong Strategy Tester mà hầu hết mọi người bỏ qua: hộp kiểm 'Use date' kết hợp với phần trăm chất lượng mô hình. Nếu bạn đang kiểm tra với chất lượng mô hình 99% nhưng với spread cố định, bạn đang kiểm tra một công cụ giả tưởng. Thị trường thực tế có spread biến đổi, requotes (ít phổ biến hơn trên ECN nhưng vẫn hiện diện), và các đợt tăng độ trễ (latency spikes) mà backtest cục bộ của bạn không bao giờ thấy.
Tôi đã chạy cùng một EA trên cùng một bộ dữ liệu 3 năm với hai cấu hình:
- Spread cố định: 1.5 pips, không có mô hình slippage
- Spread biến đổi sử dụng dữ liệu tick của broker + slippage ngẫu nhiên 1-3 pip
Phiên bản spread cố định cho thấy lợi nhuận hàng năm 34%. Phiên bản spread biến đổi? 11%. Cùng một EA. Cùng một khoảng thời gian. Sự khác biệt là những gì bạn thực sự sẽ trải nghiệm khi giao dịch trực tiếp. Luôn luôn, luôn luôn sử dụng mô hình thực thi 'Random delays' trong Strategy Tester. Nó được ẩn trong cài đặt nhưng đó là thứ gần nhất với thực tế mà nền tảng cung cấp. Bạn có thể tìm thấy nó trong phần Execution trong thuộc tính của tester, đặt nó thành 50-200ms để mô phỏng độ trễ lệnh thực tế.
Đây cũng là nơi công cụ tính kích thước vị thế của bạn trở nên quan trọng trong quá trình kiểm tra: nếu bạn không tính đến spread thực tế vào tính toán rủi ro trên mỗi giao dịch, kích thước vị thế của bạn sẽ sai ngay từ đầu.
Overfitting (Quá Khớp): Lý Do Thực Sự Khiến EA Chết Sau 3 Tuần Giao Dịch Trực Tiếp
Đây là một tuyên bố tôi sẽ cam kết mà không do dự: phần lớn EA của nhà giao dịch cá nhân bị overfitting (quá khớp). Không phải một chút. Mà là rất nhiều.
Overfitting xảy ra khi bạn tối ưu hóa các thông số của EA một cách quá chính xác dựa trên dữ liệu lịch sử đến mức EA đã ghi nhớ quá khứ thay vì học hỏi từ nó. Công cụ tối ưu hóa di truyền của MT5 cực kỳ mạnh mẽ, và cực kỳ nguy hiểm nếu rơi vào tay người không biết cách sử dụng. Tôi đã thấy các nhà giao dịch chạy 50.000 lần tối ưu hóa trên một bộ dữ liệu 12 tháng, chọn bộ thông số có hệ số lợi nhuận (profit factor) cao nhất, và coi đó là xong. Đó không phải là phát triển chiến lược. Đó là khớp đường cong (curve fitting) với các bước bổ sung.
Một bài kiểm tra thực sự cho overfitting là kiểm tra walk-forward. Bạn chia dữ liệu của mình: tối ưu hóa trên 70% đầu tiên, sau đó chạy một bài kiểm tra forward mù trên 30% còn lại. Nếu hệ số lợi nhuận của bạn giảm từ 2.4 xuống 0.8 trong giai đoạn ngoài mẫu (out-of-sample), EA đã bị overfitting. Dừng lại. Đừng giao dịch nó.
Toán học rất quan trọng ở đây. Tập hợp tối ưu hóa của bạn phải nhỏ hơn đáng kể so với bậc tự do của bộ dữ liệu. Một quy tắc thô mà tôi sử dụng: nếu bạn có nhiều hơn một thông số có thể tối ưu hóa trên mỗi 1.000 thanh dữ liệu, bạn đã ở trong vùng nguy hiểm. Một EA với 8 thông số tự do được kiểm tra trên 2.000 thanh dữ liệu 1H không phải là một chiến lược. Đó là một mẫu đã được ghi nhớ.
Tôi đã mắc lỗi này vào năm 2019 với một EA hồi quy trung bình (mean-reversion) trên GBP/USD. Tối ưu hóa rất đẹp trên dữ liệu 2016-2018. Bộ thông số bao gồm 11 biến số. Đi vào giao dịch trực tiếp vào tháng 1 năm 2019 và chịu mức sụt giảm (drawdown) 22% trong 6 tuần trước khi tôi dừng nó. Bài học đó đã đọng lại. Bây giờ tôi coi bất kỳ sự suy giảm hiệu suất walk-forward nào trên 40% là một dấu hiệu không thể chấp nhận. Nếu EA kiếm được 10.000 đô la trên mẫu tối ưu hóa nhưng chỉ 5.000 đô la trên một mẫu walk-forward có kích thước tương đương, điều đó có thể chấp nhận được. Nếu nó kiếm được 10.000 đô la và mất 3.000 đô la trong walk-forward, đó là rác rưởi.
Để tìm hiểu sâu hơn về cách spread và chất lượng thực thi khác nhau theo công cụ, hướng dẫn EUR/USD đáng đọc trước khi bạn cam kết với bất kỳ cặp tiền tệ chính nào làm thị trường chính cho EA của mình.

💡 Mẹo của Winston
Logic code nhận được tất cả sự chú ý.

EA của bạn hoạt động hoàn hảo trên 10 năm backtest — sau đó gặp phải spread, slippage và requotes thực tế. Chào mừng đến với giao dịch trực tiếp.
4 Lỗi Thực Thi Không Ai Nói Đến
Logic code nhận được tất cả sự chú ý. Thực thi thì không. Điều đó thật ngược đời.
Dưới đây là bốn lỗi cấp độ thực thi phổ biến nhất mà tôi đã chẩn đoán trong các EA của khách hàng:
-
Điều kiện tranh chấp sửa đổi lệnh (Order modification race conditions): EA cố gắng sửa đổi stop loss trên cùng một tick mà giá kích hoạt nó. Trong MQL5, nếu bạn gọi
OrderModify()mà không kiểm tra giá trị trả về củaOrderSelect()trước, bạn sẽ gặp lỗi âm thầm, lệnh không được sửa đổi, không có lỗi nào được ghi vào nhật ký của bạn, và rủi ro của bạn giờ đây không được kiểm soát. -
Không tính đến số thập phân của broker: Một số broker báo giá EUR/USD đến 5 chữ số thập phân, một số đến 4. Nếu tính toán stop loss của bạn sử dụng giá trị pip cố định mà không kiểm tra
_Digits, SL của bạn sẽ được đặt gần hơn hoặc xa hơn 10 lần so với dự kiến. Tôi đã thấy điều này xóa sổ tài khoản. -
Bỏ qua
IsTradeAllowed(): Hàm này trả về false trong các sự kiện tin tức ở một số broker, trong thời gian đóng cửa thị trường, và khi tài khoản có vấn đề về margin đang chờ xử lý. Nếu EA của bạn không kiểm tra điều này trước mỗi lần cố gắng đặt lệnh, bạn sẽ có các lệnh vào lệnh thất bại âm thầm trong khi EA nghĩ rằng nó đang trong một giao dịch. -
Logic vào lệnh dựa trên tick trên kết nối chậm: Các EA kích hoạt trên mỗi tick mới hoạt động tốt trên VPS với độ trễ 5ms. Trên kết nối internet tại nhà với độ trễ 80-150ms, tick đã kích hoạt logic vào lệnh của bạn có thể đã cũ 3-4 tick vào thời điểm lệnh của bạn đến broker. Bạn đang mua vào một mức giá không còn tồn tại.
Cách khắc phục cho điểm 4 là chuyển logic vào lệnh từ OnTick() sang OnTradeTransaction() nếu có thể, hoặc thêm một thông số slippage tối đa chấp nhận được và từ chối các lệnh khớp ngoài phạm vi đó. Đó không phải là mã lệnh hào nhoáng. Nhưng đó là sự khác biệt giữa một EA hoạt động hiệu quả và một khoản nợ.
Để đặt lệnh một cách sạch sẽ mà không phải đối phó với các hộp thoại biểu mẫu gây ra độ trễ riêng, tôi sử dụng Drag Trader của Pulsar Terminal khi tôi quản lý vị thế EA bán thủ công, bạn kéo trực tiếp trên biểu đồ và SL/TP cập nhật theo thời gian thực, điều này thực sự nhanh hơn bất kỳ hộp thoại nào khi bạn đang ở trong một vị thế trực tiếp.

Backtest của bạn giả định khớp lệnh hoàn hảo ở mức giá chính xác với spread cố định. Thị trường thực tế có slippage, spread nới rộng trong thời gian tin tức, requotes và khớp lệnh một phần. Không có EA nào miễn nhiễm.
Vấn Đề Broker (Hầu Hết Nhà Giao Dịch Hoàn Toàn Bỏ Qua Điều Này)
EA của bạn không giao dịch thị trường. Nó giao dịch nguồn cấp dữ liệu thị trường của broker của bạn. Sự khác biệt đó cực kỳ quan trọng.
Tôi đã chạy cùng một EA, cùng VPS, cùng cài đặt trên ba broker khác nhau đồng thời trong khoảng thời gian thử nghiệm 6 tuần vào quý 3 năm 2022. Kết quả không hề giống nhau:
- Broker A (ECN, spread trung bình EUR/USD 0.8 pips): +4.2% ròng
- Broker B (STP, spread trung bình 1.8 pips): +1.1% ròng
- Broker C (market maker, spread cố định 2.0 pips): -2.3% ròng
Cùng một EA. Cùng một thị trường. Kết quả hoàn toàn khác nhau, chỉ vì mô hình thực thi và chi phí spread.
Các EA scalping là nhạy cảm nhất với điều này. Một EA nhắm mục tiêu 10 pips với stop loss 5 pips đang hoạt động trên tỷ lệ R:R là 2:1. Thêm 2 pips spread và điều đó trở thành mục tiêu 10 pips với rủi ro hiệu quả 7 pips, gần hơn với 1.4:1. Toán học làm xói mòn hoàn toàn lợi thế. Đây là lý do tại sao các EA scalping kiếm tiền trong backtest lại thất bại một cách nhất quán khi giao dịch trực tiếp, backtest đã sử dụng giả định spread mà không có broker thực tế nào tính phí trong các phiên biến động.
Trước khi triển khai bất kỳ EA nào vào giao dịch trực tiếp, hãy chạy nó trong tối thiểu 3 tuần trên tài khoản demo với broker thực tế mà bạn định sử dụng. Không phải demo của một broker khác. Không phải sim của một quỹ cấp vốn (prop firm) với cách thực thi khác. Broker cụ thể của bạn, loại tài khoản cụ thể của bạn. Kiểm tra nhật ký thực thi trong tab Journal của MT5 sau mỗi giao dịch. Nếu bạn thấy slippage nhất quán 1+ pips trên các lệnh khớp, lợi thế của EA của bạn có lẽ đã biến mất.
Các đánh giá lựa chọn broker như đánh giá IC Markets có thể cung cấp cho bạn một cơ sở để biết thực thi ECN thực tế trông như thế nào.

💡 Mẹo của Winston
Hãy để tôi mô tả những gì tôi tìm kiếm trước khi tôi coi bất kỳ EA nào sẵn sàng cho tiền thật.

Các broker khác nhau, dữ liệu tick khác nhau, spread khác nhau. Một EA được tối ưu hóa cho một broker có thể hoàn toàn thất bại trên một broker khác.
Một EA Có Thể Triển Khai Thực Sự Trông Như Thế Nào
Hãy để tôi mô tả những gì tôi tìm kiếm trước khi tôi coi bất kỳ EA nào sẵn sàng cho tiền thật. Đây không phải là một danh sách kiểm tra bạn in ra và quên đi. Đó là một tiêu chuẩn mà hầu hết các EA không đạt được.
Đầu tiên, backtest phải sử dụng spread biến đổi, độ trễ thực thi ngẫu nhiên và xác thực walk-forward ngoài mẫu (out-of-sample). Sự suy giảm hiệu suất của bài kiểm tra forward nên dưới 40% trên các độ dài dữ liệu tương đương. Nếu bạn backtest 3 năm, hãy walk-forward test 1 năm. Không phải 3 tháng.
Thứ hai, EA cần một bộ ngắt mạch drawdown cứng trong mã. Một cái gì đó như thế này trong MQL5:
double maxDrawdown = 0.10; // 10% max
double startBalance = AccountInfoDouble(ACCOUNT_BALANCE);
if((startBalance - AccountInfoDouble(ACCOUNT_EQUITY)) / startBalance >= maxDrawdown) {
// Close all positions and disable EA
ExpertRemove();
}
Điều này là cơ bản. Tôi liên tục bị sốc khi thấy có bao nhiêu EA sản xuất không có nó.
Thứ ba, chỉ báo ATR nên là một phần của việc xác định kích thước vị thế của EA, không chỉ là logic vào lệnh của nó. Kích thước lot cố định trong một thị trường có biến động thay đổi là một công thức cho rủi ro không nhất quán. ATR(14) trên biểu đồ H1 cung cấp cho bạn một thước đo thời gian thực về mức độ di chuyển của thị trường. Stop loss và kích thước vị thế của bạn nên điều chỉnh theo nó.
Thứ tư, EA phải được kiểm tra trên nhiều chế độ thị trường khác nhau, không chỉ một. Một EA được tối ưu hóa trên thị trường có xu hướng năm 2020-2021 sẽ bị phá hủy trong chế độ thị trường đi ngang, biến động cao năm 2022-2023. Sử dụng ít nhất một năm có xu hướng và một năm biến động mạnh trong bộ dữ liệu của bạn.
Thứ năm, tôi muốn thấy một mô phỏng Monte Carlo được chạy trên kết quả backtest. MT5 không làm điều này một cách tự nhiên, nhưng các công cụ như StrategyQuant hoặc thậm chí một mô phỏng Excel cơ bản sử dụng kết quả giao dịch từng giao dịch của bạn có thể ngẫu nhiên hóa thứ tự thắng và thua của bạn để cho bạn thấy mức drawdown tồi tệ nhất thực tế. Nếu trường hợp xấu nhất được mô phỏng của bạn là 35% nhưng bạn chỉ thoải mái với 15%, EA đó không phù hợp với tài khoản của bạn bất kể mức trung bình trông tốt đến đâu.
Hầu hết các EA thất bại không phải vì ý tưởng đằng sau chúng sai. Chúng thất bại vì quá trình xác thực lười biếng, mã thực thi không được kiểm tra trong điều kiện thực tế, và môi trường broker được giả định thay vì đo lường. Khắc phục ba điều đó và kết quả trực tiếp của bạn sẽ trông gần hơn nhiều so với những gì backtest của bạn đã hứa hẹn.
Tuyên bố miễn trừ trách nhiệm: Bài viết này chỉ dành cho mục đích giáo dục và không cấu thành lời khuyên đầu tư. Giao dịch forex và CFD tiềm ẩn rủi ro thua lỗ đáng kể. Hiệu suất trong quá khứ không phải là chỉ báo cho kết quả tương lai. Luôn tự nghiên cứu và xem xét tình hình tài chính của bạn trước khi giao dịch. Không bao giờ mạo hiểm số tiền bạn không thể để mất.
Bài học của Prof. Winston
Điểm chính:
- ✓Một backtest hoàn hảo không có ý nghĩa gì nếu EA bị overfitting với dữ liệu lịch sử
- ✓Slippage, spread nới rộng và requotes phá hủy các EA chưa từng trải nghiệm chúng trong backtesting
- ✓Dữ liệu tick và tốc độ thực thi của broker của bạn ảnh hưởng trực tiếp đến hiệu suất EA — hãy kiểm tra trên broker thực tế
- ✓Một EA có thể triển khai xử lý các lỗi một cách khéo léo: nó quản lý slippage, có giới hạn drawdown tối đa và ghi lại mọi thứ

❓ Câu hỏi thường gặp
Q1Tôi nên sử dụng bao nhiêu dữ liệu để backtest một EA MT5 trước khi coi nó là hợp lệ?
Tối thiểu, 3 năm dữ liệu tick bao gồm các điều kiện thị trường khác nhau, ít nhất một giai đoạn xu hướng mạnh và một giai đoạn đi ngang/biến động mạnh. Đối với các EA có hơn 5 thông số có thể tối ưu hóa, tôi sẽ đẩy lên 5 năm. Tuy nhiên, con số quan trọng không phải là số năm, mà là tỷ lệ giữa số lượng thông số và số thanh dữ liệu được kiểm tra. Hơn một thông số tự do trên mỗi 1.000 thanh dữ liệu đã là một dấu hiệu đỏ cho overfitting. Đối với các EA scalping trên biểu đồ M5, 3 năm có thể cung cấp đủ thanh dữ liệu, nhưng bạn cần xác minh rằng chất lượng dữ liệu tick từ lịch sử của broker của bạn thực sự đầy đủ, các khoảng trống trong dữ liệu tick sẽ làm cho kết quả của bạn trông sạch hơn thực tế.
Q2Tại sao EA của tôi hoạt động tốt trên tài khoản demo nhưng lại thất bại trên tài khoản thực với cùng một broker?
Điều này phổ biến hơn mọi người thừa nhận. Tài khoản demo ở hầu hết các broker sử dụng một mô hình thực thi hơi khác so với tài khoản thực, cụ thể là, các lệnh khớp trên demo thường sạch hơn và nhanh hơn với spread chặt hơn trong các giai đoạn thanh khoản thấp. Một số broker cũng định tuyến các lệnh demo và thực qua các cơ sở hạ tầng khác nhau. Cách để kiểm tra điều này là chạy cả hai tài khoản đồng thời trong 2-4 tuần và so sánh giá khớp từng giao dịch. Nếu các lệnh khớp trực tiếp của bạn liên tục tệ hơn demo 0.5-1 pip, đó là sự khác biệt về mô hình thực thi và nó là thật. Nó sẽ tích lũy chống lại bạn qua hàng trăm giao dịch. Cũng nên kiểm tra xem tài khoản thực của bạn là STP so với tài khoản demo là ECN, điều này xảy ra nhiều hơn các broker muốn quảng cáo.
Q3Một EA đã thất bại trên một cặp tiền tệ có thể hoạt động trên một cặp khác không?
Đôi khi có, nhưng bạn phải xác thực lại hoàn toàn trên công cụ mới, đừng cho rằng các thông số sẽ chuyển giao. Các cặp tiền tệ khác nhau có các hồ sơ biến động, hành vi spread và mô hình thanh khoản dựa trên phiên giao dịch khác nhau. Một EA được xây dựng dựa trên hành vi của EUR/USD trong phiên London có thể hoàn toàn sai đối với GBP/JPY, cặp tiền có các đợt biến động mạnh riêng trong thời gian chồng chéo phiên Á/London. Bạn sẽ cần tối ưu hóa lại (cẩn thận, không overfitting) trên dữ liệu của cặp tiền mới, chạy một bài kiểm tra walk-forward mới, và lý tưởng nhất là demo nó trong 4-6 tuần trên broker thực tế. Logic cơ bản có thể chuyển đổi. Các giá trị thông số cụ thể gần như chắc chắn sẽ không.
Q4Thời gian kiểm tra forward tối thiểu là bao lâu trước khi đưa EA vào tài khoản thực?
Tôi sử dụng 100 giao dịch hoàn thành làm mức tối thiểu, không phải một khoảng thời gian. Các khoảng thời gian có thể gây hiểu lầm vì một thị trường chậm có thể chỉ cho bạn 40 giao dịch trong 3 tháng trong khi một thị trường nhanh có thể cho bạn 200 giao dịch. Bạn cần một mẫu có ý nghĩa thống kê về quá trình ra quyết định thực tế của EA của bạn. Nếu EA của bạn trung bình 5 giao dịch mỗi tuần, đó là 20 tuần giao dịch demo trước khi bạn xem xét giao dịch trực tiếp, khoảng 5 tháng. Tôi biết điều đó có vẻ lâu. Nhưng nó ngắn hơn việc phục hồi từ một tài khoản bị cháy. Điều khác tôi kiểm tra là liệu kết quả kiểm tra forward có nằm trong khoảng tin cậy Monte Carlo từ backtest hay không. Nếu drawdown của kiểm tra forward vượt quá phân vị thứ 95 của mô phỏng Monte Carlo của bạn, điều gì đó đã thay đổi trên thị trường và EA cần được đánh giá lại trước khi giao dịch trực tiếp.
Bài viết này hữu ích thế nào?
Nhấp vào ngôi sao để đánh giá
Bình luận
Đi trước thị trường
Nhận phân tích thị trường hàng tuần, chiến lược giao dịch và mẹo MT5. Không spam, hủy đăng ký bất cứ lúc nào.

Về tác giả
Daniel Harrington
Chuyên gia phân tích giao dịch
Daniel Harrington là chuyên gia phân tích giao dịch với bằng MScF (Thạc sĩ Khoa học Tài chính) chuyên về quản lý tài sản và rủi ro định lượng. Với hơn 12 năm kinh nghiệm trong thị trường forex và phái sinh, anh ấy đề cập đến tối ưu hóa nền tảng MT5, chiến lược giao dịch thuật toán và những hiểu biết thực tế cho nhà giao dịch cá nhân.
Tải Pulsar Terminal
Tất cả các công cụ tính này được tích hợp trong Pulsar Terminal với dữ liệu thời gian thực từ tài khoản MT5 của bạn.
Tải Pulsar TerminalBạn cũng có thể thích

Cảnh báo rủi ro
Giao dịch các công cụ tài chính tiềm ẩn rủi ro đáng kể và có thể không phù hợp với tất cả nhà đầu tư. Hiệu suất trong quá khứ không đảm bảo kết quả trong tương lai. Nội dung này chỉ mang tính chất giáo dục và không nên được coi là lời khuyên đầu tư. Hãy luôn tự nghiên cứu trước khi giao dịch.

