Trang chủ > Blog > Thiết kế log cho EA: tái hiện sự cố sau khi xảy ra

Vận hành EADebug

Thiết kế log cho EA: tái hiện sự cố sau khi xảy ra

Đăng: 2026-11-12Thờ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 (6)
  1. Kết luận: EA không có log thì sự cố xảy ra cũng không thể kiểm chứng
  2. Vì sao cần 3 loại log
  3. Giá trị quyết định: không lưu số thì không phân biệt được với "tình cờ"
  4. Lý do bỏ qua: log dễ bị bỏ sót nhất, nhưng quan trọng nhất
  5. Khớp lệnh: ghi lại những gì xảy ra bên ngoài EA
  6. Mỗi dòng ghi gì: ví dụ cách viết
  7. Quy trình kiểm tra dành cho người vận hành
  8. Giới hạn và lưu ý
  9. Tóm tắt

Kết luận: EA không có log thì sự cố xảy ra cũng không thể kiểm chứng

Xin nêu kết luận trước. Log của EA tối thiểu nên ghi ra mỗi loại một dòng cho 3 thứ: "giá trị dùng để quyết định", "lý do không vào lệnh" và "kết quả khớp lệnh". Có đủ 3 thứ này, bạn có thể tái hiện sau đó cả những giao dịch ngoài dự kiến lẫn những lần "không có gì xảy ra". Ngược lại, nếu thiếu, dù bị lỗ hay số lệnh vẫn là 0, bạn cũng không phân biệt được nguyên nhân nằm ở logic của EA, ở thị trường hay ở phía broker.

Chúng tôi cũng phát triển EA, và đã có lúc log giúp ích rất nhiều, nhưng cũng có lúc log thiếu nên không bao giờ tìm ra nguyên nhân. Bài viết này sẽ tổng hợp, từ góc nhìn người vận hành, thế nào là một "log tố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 cần 3 loại log

Một lần ra quyết định của EA, nói đại khái, diễn ra theo chuỗi: "tính giá trị → xét điều kiện → đặt lệnh → khớp lệnh". Để xác định sau này đã lệch so với dự kiến ở bước nào, bạn cần có ghi chép của từng bước.

Loại logVí dụ nội dungCâu hỏi trả lời được
Giá trị quyết địnhThời điểm nến đã đóng, giá trị chỉ báo, ngưỡng, spread"Vì sao lại vào lệnh ở đó?"
Lý do bỏ quaĐiều kiện nào khiến bỏ qua (ngoài giờ, spread vượt mức, đã có vị thế...)"Vì sao không vào lệnh?"
Khớp lệnhGiá yêu cầu, giá khớp, slippage, return code, số ticket"Lệnh có được thực hiện đúng như mong muốn không?"

Giá trị quyết định: không lưu số thì không phân biệt được với "tình cờ"

Log chỉ ghi "phát sinh tín hiệu mua" thì không giúp được nhiều. Nếu không biết giá trị chỉ báo lúc đó cách ngưỡng bao xa, bạn không thể nói điều kiện chỉ vừa đủ thỏa hay đã thỏa rõ ràng. Ngoài ra, hãy luôn ghi lại cả việc quyết định được đưa ra trên nến nào (thời điểm nến đã đóng).

Lý do bỏ qua: log dễ bị bỏ sót nhất, nhưng quan trọng nhất

Phần lớn EA chỉ ghi log khi đã vào lệnh. Thế nhưng câu hỏi gặp nhiều nhất trong lúc vận hành lại là "sao EA chẳng vào lệnh nào". Nếu log có lý do bỏ qua, bạn có thể kiểm tra xem đó là việc bỏ qua đúng theo thiết kế, hay do cài đặt sai hoặc do lệch giờ server.

MEGAMAX DONCHIAN của chúng tôi, trong forward test trên tài khoản demo Exness, tính đến ngày 11/11/2026 có 0 lệnh. Chúng tôi vẫn chưa xác nhận được lý do bỏ qua, và sẽ không suy đoán ở đây. Tuy nhiên, trong tình huống như vậy, có hay không có log lý do bỏ qua sẽ làm công sức kiểm tra chênh nhau rất nhiều. 0 lệnh không có nghĩa là kết quả kém, nhưng khi chưa đọc log thì cũng chưa thể khẳng định đó là "bỏ qua bình thường".

Khớp lệnh: ghi lại những gì xảy ra bên ngoài EA

Lệnh bị từ chối, hay đã khớp nhưng slippage lớn, là vấn đề tách biệt với logic của EA. Nếu lưu lại return code và giá khớp, bạn có thể tách bạch vấn đề của EA với vấn đề của broker hay đường truyền.

Mỗi dòng ghi gì: ví dụ cách viết

Chúng tôi gom một lần quyết định vào một dòng, theo định dạng cố định để dễ tìm kiếm về sau.

[EVAL] bar=2026.11.10 14:00 sig=BUY val=1.234 th=1.200 spread=18 -> ENTRY
[SKIP] bar=2026.11.10 15:00 reason=SPREAD spread=45 max=30
[FILL] ticket=123456 req=152.340 fill=152.346 slip=6 ret=10009

Các điểm cần lưu ý khi viết:

  • Đặt thẻ loại (EVAL / SKIP / FILL) ở đầu dòng để dùng grep hoặc tìm kiếm là lọc ra được
  • Ghi thời điểm của "nến đã đóng dùng để quyết định" (mặc định là giờ server)
  • Lý do ghi bằng mã cố định chứ không viết thành câu (SPREAD, TIME, POSITION...)
  • Không ghi theo từng tick, chỉ ghi vào đúng khoảnh khắc ra quyết định

Nếu ghi theo từng tick, log sẽ phình rất lớn trong thời gian ngắn, làm đầy ổ đĩa và khiến những dòng quan trọng bị chìm. Nguyên tắc cơ bản là "một lần khi nến đóng".

Quy trình kiểm tra dành cho người vận hành

Nếu bạn là người dùng EA, kiểm tra theo thứ tự sau sẽ nhanh tìm ra nguyên nhân hơn.

  1. Trong tab "Chuyên gia" (Experts) của MT5, xác nhận EA có đang ghi log của chính nó
  2. Tìm dòng EVAL tại thời điểm xảy ra giao dịch ngoài dự kiến, xem giá trị quyết định và ngưỡng
  3. Với giai đoạn không có lệnh, xem các dòng SKIP và đếm xem lý do nào xuất hiện nhiều nhất
  4. Ở dòng FILL, kiểm tra chênh lệch giữa giá yêu cầu và giá khớp, cùng return code
  5. Đối chiếu thời gian với tab "Lịch sử thao tác" (ghi chép phía broker)

Để rà soát cài đặt, xem Cách cài đặt EA; để dựng môi trường chạy liên tục, xem thêm Thông tin VPS.

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

Log không phải vạn năng. Xin nói thẳng như vậy.

  • Điều không được ghi trong log thì không thể biết. Những hiện tượng nhà phát triển không lường trước sẽ không được ghi lại ngay từ đầu.
  • Log không phải lúc nào cũng đúng. Nếu bản thân đoạn code ghi log có lỗi, giá trị sai sẽ được ghi lại.
  • Không biết được quyết định giao dịch hay hay dở. Log chỉ cho biết "có chạy đúng thiết kế hay không", chứ không cho biết thiết kế đó có thắng được hay không.
  • Ghi quá nhiều cũng gây sự cố. Log khổng lồ chiếm dung lượng, và người đọc cũng dễ bỏ sót.
  • Ý nghĩa của log khác nhau giữa backtest, tài khoản demo và tài khoản thật. Trong tester, slippage và việc bị từ chối lệnh không được tái hiện giống thực tế, nên khi so sánh log khớp lệnh hãy lưu ý sự khác biệt về môi trường.

Tóm tắt

  • Log ghi mỗi loại một dòng cho 3 thứ: "giá trị quyết định", "lý do bỏ qua", "khớp lệnh"
  • Log lý do bỏ qua là thứ dễ bị bỏ sót nhất, nhưng hữu ích nhất khi tìm nguyên nhân "EA không chạy"
  • Quy ước sẵn thẻ và mã lý do thì sau này có thể tìm kiếm và đếm được
  • Chỉ ghi một lần mỗi khi nến đóng, không ghi theo từng tick
  • Log chỉ cho biết "có chạy đúng thiết kế hay không"; thắng được hay không cần một bước kiểm chứng khác

Các kinh nghiệm vận hành MT5 khác được tổng hợp tại Kiến thức EA & 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