Trang chủ > Blog > Chốt lời một phần + trailing stop: điểm dễ lỗi

MQL5Phát triển EA

Chốt lời một phần + trailing stop: điểm dễ lỗi

Đăng: 2026-11-11Thời gian đọc: khoảng 3 phút
⏱ Bài viết này phản ánh thông tin tại thời điểm đăng. Các số liệu hiệu suất EA (PF, DD, lợi nhuận hàng năm) thay đổi theo giao dịch thực và việc kiểm chứng lại — hãy xem thông tin mới nhất trên các trang EA. Xem kết quả EA mới nhất →
Mục lục (5)
  1. Kết luận: thứ dễ hỏng là "việc truyền trạng thái", không phải logic
  2. Vì sao kết hợp lại dễ hỏng
  3. Không thể dựa vào "trí nhớ" của EA để biết khối lượng còn lại
  4. Lot phải "làm tròn xuống", không phải làm tròn thường
  5. Chỉ ghi SL ở một nơi duy nhất
  6. Danh sách kiểm tra khi triển khai và xác nhận
  7. Giới hạn và lưu ý
  8. Tóm tắt

Kết luận: thứ dễ hỏng là "việc truyền trạng thái", không phải logic

Chốt lời một phần và trailing stop, nếu dùng riêng lẻ thì đều không phải xử lý khó. Lỗi chỉ xuất hiện khi áp cả hai lên cùng một vị thế. Theo kinh nghiệm phát triển của chúng tôi, vấn đề gần như tập trung vào 3 chỗ sau:

  1. Quản lý khối lượng còn lại: EA không "nhớ" được mình đã chốt một phần hay chưa
  2. Bước lot: khối lượng đóng không khớp lot tối thiểu hoặc bước lot của broker
  3. Thứ tự đặt lại SL: chốt một phần, dời SL về điểm hòa vốn và trailing ghi đè lên nhau

Cả ba đều khó lộ ra khi backtest, và thường chỉ bị phát hiện khi chạy thực tế.

So sánh nhà môi giới khuyên dùng →

🎁 Tải EA miễn phí

📧 Khóa học email miễn phí (8 email) + gói 13 chỉ báo MT5 dành riêng cho người đăng ký

* Quyền riêng tư được bảo vệ nghiêm ngặt. Bạn có thể hủy đăng ký bất cứ lúc nào.

Vì sao kết hợp lại dễ hỏng

Không thể dựa vào "trí nhớ" của EA để biết khối lượng còn lại

Trên MT5, khi chốt một phần thì ticket của vị thế không đổi, chỉ có POSITION_VOLUME giảm đi. Nếu chỉ dùng một biến bool để lưu trạng thái "đã chốt một phần", giá trị này sẽ mất khi EA khởi động lại, VPS kết nối lại hoặc đổi khung thời gian. Ở tick đầu tiên sau đó, EA lại chốt một nửa vị thế còn lại thêm lần nữa — đây là sự cố điển hình.

Cách chúng tôi xử lý là dùng HistorySelectByPosition() để lần theo lịch sử khớp lệnh của vị thế đó, rồi so sánh khối lượng mở ban đầu với khối lượng còn lại để xác định đang ở giai đoạn chốt nào. Cờ lưu trong bộ nhớ chỉ đóng vai trò hỗ trợ.

Lot phải "làm tròn xuống", không phải làm tròn thường

Chia đôi 0.03 lot được 0.015. Với tài khoản có bước lot 0.01, nếu làm tròn thông thường sẽ đóng 0.02 lot, tức là bán ra nhiều hơn dự kiến. Khối lượng đóng cần được làm tròn xuống theo SYMBOL_VOLUME_STEP, đồng thời phải kiểm tra khối lượng còn lại sau khi đóng có lớn hơn hoặc bằng SYMBOL_VOLUME_MIN hay không. Vị thế 0.01 lot vốn không thể chia nhỏ, nên nếu không quy định rõ trong thiết kế là "không chốt một phần" hay "đóng toàn bộ", EA sẽ liên tục trả về lỗi.

Chỉ ghi SL ở một nơi duy nhất

PositionModify() là hàm chỉ định SL và TP cùng lúc. Nếu xử lý trailing truyền giá trị 0 cho TP thì TP sẽ biến mất. Ngoài ra, nếu bước dời SL về điểm hòa vốn sau khi chốt một phần và bước kéo SL của trailing chạy riêng rẽ trong cùng một tick, bên ghi sau sẽ thắng. Kết quả là SL đã được nâng lên điểm hòa vốn có thể bị hạ xuống lại.

Thứ tự mà chúng tôi áp dụng như sau:

  • Gửi lệnh chốt một phần → chọn lại vị thế và kiểm tra khối lượng còn lại
  • Tính cả hai ứng viên: SL hòa vốn và SL trailing
  • Chỉ dời theo hướng "có lợi hơn SL hiện tại" (lệnh mua thì lấy giá cao hơn, lệnh bán thì lấy giá thấp hơn)
  • Kiểm tra stop level và freeze level, rồi truyền lại giá trị TP hiện tại và chỉ sửa lệnh đúng 1 lần

Danh sách kiểm tra khi triển khai và xác nhận

Hạng mục cần kiểm traTriệu chứng khi hỏngCách kiểm tra
Giai đoạn chốt một phần có được xác định từ lịch sử khớp lệnh khôngChốt một phần hai lần sau khi khởi động lạiGắn lại EA khi đang chạy và theo dõi thay đổi khối lượng còn lại
Khối lượng đóng có được làm tròn xuống theo bước lot khôngĐóng nhiều hơn dự kiến hoặc phát sinh lỗiMở lệnh với lot tối thiểu rồi xem log
Đã quy định cách xử lý khi chia nhỏ ở lot tối thiểu chưaLệnh đóng thất bại ở mỗi tickThử với 0.01 lot
SL có bị lùi về hướng bất lợi khôngBị đóng lỗ sau khi đã đặt SL hòa vốnTheo dõi diễn biến SL theo thời gian trong log
Việc sửa SL có làm mất TP khôngChốt lời không hoạt độngXem ô TP của vị thế sau khi sửa
Khi chốt một phần thất bại, SL có được giữ nguyên khôngKhối lượng còn lại và SL lệch giả địnhĐặt lệnh ngay trước lúc thị trường đóng cửa để cố tình gây lỗi
Có đang chạy trên tài khoản netting khôngBị gộp với vị thế của EA khácKiểm tra loại tài khoản

Ở góc độ người dùng, cách kiểm tra nhanh nhất là chạy bằng lot tối thiểu trên tài khoản demo và xem hành vi có thay đổi hay không khi gắn lại EA giữa chừng. Các thiết lập cơ bản được tổng hợp trong Hướng dẫn cài đặt EA.

Giới hạn và lưu ý

Strategy Tester khớp lệnh tức thời và gần như không bao giờ xảy ra tình huống chỉ một phần của lệnh được khớp. Vì vậy, các lỗi liên quan đến chốt lời một phần hầu như không hiện ra trong số liệu backtest. Thành thật mà nói, sự khác biệt về phương thức khớp lệnh (filling mode) trên tài khoản thực và hành vi khi requote chỉ có thể kiểm chứng riêng với từng broker.

Thêm chốt lời một phần cũng không đồng nghĩa với hiệu suất tốt hơn. Với các EA theo xu hướng có tỷ lệ thắng thấp và dựa vào một số ít khoản lãi lớn để nâng đỡ toàn bộ kết quả (ví dụ DONCHIAN ENGINE có tỷ lệ thắng 34.5% trong backtest), việc giảm khối lượng đúng lúc lợi nhuận đang kéo dài có thể làm kỳ vọng giảm xuống. Biên độ dao động lãi lỗ sẽ nhỏ lại, nhưng đổi lại mất đi điều gì thì phải kiểm chứng riêng cho từng EA. Chúng tôi cũng chưa kiểm tra được hết mọi tổ hợp.

Khi tự bổ sung chốt lời một phần vào một chiến lược như DONCHIAN ENGINE, hãy lưu ý rằng kết quả kiểm chứng ban đầu sẽ không còn áp dụng nguyên vẹn nữa.

Tóm tắt

  • Khi kết hợp chốt lời một phần và trailing, thứ dễ hỏng là "việc truyền trạng thái" chứ không phải logic
  • Giai đoạn chốt một phần nên được xác định từ lịch sử khớp lệnh và khối lượng còn lại, không dựa vào cờ trong bộ nhớ
  • Làm tròn lot xuống theo bước lot và kiểm tra khối lượng còn lại không thấp hơn lot tối thiểu
  • Gom việc sửa SL về một chỗ, chỉ dời theo hướng có lợi và không làm mất TP
  • Backtest khó phát hiện lỗi, nên hãy thử gắn lại EA trên tài khoản demo
  • Chốt lời một phần làm biên độ lãi lỗ nhỏ lại, nhưng cũng có thể làm giảm kỳ vọng

Những lưu ý khác khi triển khai được tổng hợp tại Kiến thức EA và MT5.

📧 Khóa học email miễn phí (8 email) + gói 13 chỉ báo MT5 dành riêng cho người đăng ký

* Quyền riêng tư được bảo vệ nghiêm ngặt. Bạn có thể hủy đăng ký bất cứ lúc nào.

Bạn có câu hỏi về EA hay Forex?

Bạn có thể đăng câu hỏi trên diễn đàn giao dịch Nattzy (đăng ký miễn phí). Không nhất thiết liên quan đến bài viết này — cài đặt EA, chọn sàn môi giới, v.v. đều được.

Hỏi trên Nattzy ↗

Bình luận & câu hỏi