Nội dung này phục vụ mục đích giáo dục, không phải lời khuyên đầu tư, gợi ý EA hoặc hướng dẫn bật robot trên tài khoản thật.

Trả lời ngắn: Sai lầm có thể xảy ra ở cả vòng đời EA: chọn theo quảng cáo, cài file không rõ nguồn, dùng cấu hình sai phiên bản, thử nghiệm sai dữ liệu, cấp quyền quá rộng, bỏ theo dõi hoặc tự chạy lại khi chưa kiểm tra tài khoản.

Cách phòng là yêu cầu bằng chứng và đặt điểm dừng ở từng giai đoạn.

Đọc xong, bạn sẽ hiểu:

  • 12 lỗi nằm ở giai đoạn nào.
  • Vì sao “thử nhỏ” không sửa thiếu evidence.
  • Monitoring/recovery khác chạy được ra sao.
  • Cách làm pre-mortem trước khi attach EA.

1. Sai lầm là failure của lifecycle

a. Bảy giai đoạn

SELECT → INSTALL → CONFIGURE → TEST → RUN → MONITOR → RECOVER

Mỗi stage có input, evidence và stop condition. EA không nên đi tiếp chỉ vì stage trước “không báo lỗi”.

Hình 1 — Mỗi giai đoạn cần bằng chứng riêng; pass trước không tự mở gate sau.

b. Symptom, root cause, control

Ví dụ symptom: EA không mở action. Root cause có thể:

  • signal WAIT;
  • pre-trade BLOCK;
  • AutoTrading off;
  • session closed;
  • init failed;
  • no connection.

Tăng risk/input để “bắt nó chạy” là chữa symptom. Control đúng là log reason, trace lifecycle và sửa root cause.

c. “Thử nhỏ” vẫn có risk loại khác

Size nhỏ giảm một phần market exposure nhưng không giảm malware risk, credential leakage, duplicate actions, wrong-symbol behavior hay operational confusion. Không dùng size để thay source review/test.

d. Evidence ladder không cho vay điểm

Compile pass không bù source mơ hồ. Backtest đẹp không bù logic fail. Demo ổn không bù monitoring chết. Mỗi gate độc lập vì nó kiểm failure mode khác.

Một cách ghi:

SELECT: FAIL | INSTALL: NOT STARTED | CONFIGURE: NOT STARTED

Không ghi tổng 70% rồi đi tiếp. Gate fail đóng các stage sau cho tới khi evidence được sửa.

2. Sai lầm ở Select, Install và Configure

a. #1 Chọn bằng screenshot/equity curve

Screenshot thiếu passport, raw trades, costs, drawdown type và search process. Curve đẹp có thể là selected run.

Stop condition: không có report/log/passport → STOP — EVIDENCE MISSING.

b. #2 Tin tên strategy/AI/low risk

Tên marketing không nói edge, regime, sizing, failure. “AI” cũng không chứng minh model/data/governance.

Control: strategy card EDGE / REGIME / HOLDING / EXECUTION / FAILURE.

c. #3 Cài file không rõ nguồn

File .ex5 vẫn là software chạy trong terminal. Unknown source/version/hash/license behavior là supply-chain risk.

MetaTrader 5 hướng dẫn các nguồn tìm robots nhưng user vẫn phải đánh giá provenance và test. MetaTrader 5 Help — Where to Find Trading Robots

Control: source, vendor identity, version, checksum, change notes, quarantine/test environment; không cấp DLL/WebRequest nếu chưa cần.

d. #4 Copy preset khác version

Tên input giữ nguyên nhưng unit/default/semantics có thể đổi. Preset v1 + EA v2 là configuration drift.

Control: schema/version match, startup effective config, validation.

e. #5 Đoán unit và zero semantics

15 là point/pip/second? 0 là off/invalid/zero thật? Đoán sai có thể tắt control.

OnInit nên validate và trả failure khi input invalid. MQL5 Reference — OnInit

f. #6 Cấp quyền quá rộng

AutoTrading, DLL, WebRequest hoặc file access là permission khác nhau. “EA yêu cầu” chưa phải lý do.

Control: least privilege, allowlist, documented endpoint, no secret in logs.

g. Không đọc journal/init log

EA attach nhưng OnInit fail, handle không tạo hoặc input bị reject. User chỉ nhìn chart rồi nghĩ “market chưa có tín hiệu”.

Control: mỗi startup phải có version, effective config, permission, dependency và INIT_OK/FAIL_REASON. Không có init evidence thì status là unknown.

Hình 2 — Red flag giúp chặn sớm trước khi lỗi biến thành side effect.

3. Sai lầm ở Test, Run, Monitor và Recover

a. #7 Chỉ xem profit, không kiểm logic

EA có thể có profit report dù duplicate, look-ahead hoặc result handling sai.

Control: Given/When/Then cases, expected logs, verify before validation.

b. #8 Tune trên holdout

Mở holdout, chỉnh input rồi chạy lại khiến holdout thành development. Gọi nó “out-of-sample” là sai evidence.

Strategy Tester hỗ trợ single test và optimization; cách phân data/selection thuộc test design. MetaTrader 5 Help — Strategy Testing

Control: freeze design, untouched holdout, search log.

c. #9 Chuyển từ backtest thẳng live

Backtest không test đủ connection, server reject, latency, operational restart và alert. Evidence ladder cần compile → logic → history → holdout → demo/forward → live gate riêng.

Control: không nhảy bậc; mỗi bậc có acceptance criteria.

d. #10 Chạy rồi không monitor

Chart còn mở không chứng minh EA healthy. Cần heartbeat, last event, connection, queue lag, request/result, position reconcile, disk/log và alert delivery.

Control: liveness + correctness monitoring; test alert channel.

e. #11 Auto-resume sau restart

Memory reset nhưng account có position/order. EA mặc định IDLE có thể duplicate.

Control: startup reconcile; unknown state → SAFE/HALT; manual acknowledgement.

f. #12 Không có recovery/runbook

Biết halt nhưng không biết ai xử lý, snapshot ở đâu, reset thế nào. Operator dễ bấm bật lại.

Control: incident card trigger / owner / containment / evidence / recovery.

g. Dùng cùng một account cho test lẫn vận hành

Nhiều EA/manual action cùng account làm ownership mơ hồ. Magic/comment không phải security boundary; close/modify từ công cụ khác vẫn có thể ảnh hưởng.

Control: environment separation, explicit ownership, account-level observer và change window. Khi không tách được, mọi position/order phải map owner hoặc gắn orphan.

h. Không pin version/data

EA/preset/tester/data tự đổi giữa các lần. User so report nhưng không biết drift.

Control: release manifest, hashes, build, data date và change log; khi drift, tạo baseline mới.

4. Bẫy nhận thức và giới hạn

a. Automation bias

Automation bias là xu hướng tin output máy hơn bằng chứng khác. EA chạy đều dễ tạo cảm giác khách quan. Nhưng rule/data có thể sai.

Control: independent checks, visible reason codes, human review cho exceptional state.

b. Recency và outcome bias

Ba tuần lời khiến user tăng confidence; một tuần lỗ khiến đổi preset. Sample ngắn không nói regime distribution.

Outcome bias là đánh giá quyết định chỉ theo kết quả. Risk block đúng nhưng trade sau đó “đáng lẽ lời” vẫn là control đúng.

Control: review process compliance trước outcome.

c. Sunk-cost và escalation

Đã mua EA/đã tune lâu khiến user tiếp tục dù evidence fail. Đây là sunk-cost bias.

Control: pre-defined reject gates và owner không trực tiếp gắn doanh số.

d. Survivorship/selection

Chỉ thấy EA còn được quảng bá; failures biến mất. Chỉ nhìn best presets là selection bias.

Control: hỏi search space, failed runs, full period và raw artifacts.

e. Giới hạn của checklist

Checklist không phát hiện mọi bug, malware hay market regime. Tick đủ ô có thể thành ritual.

Câu chắc chắn: checklist giảm omission trong scope đã viết.

Câu có điều kiện: nếu evidence thật và reviewer độc lập, lifecycle gates tăng reliability — không guarantee.

f. Normalization of deviance

Một alert lặp nhưng “chưa gây loss” dễ bị coi bình thường. Đây là normalization of deviance: lệch chuẩn trở thành thói quen vì hậu quả chưa xuất hiện.

Control: alert budget, aging, owner và escalation. UNKNOWN_RESULT phải giữ severity cho tới reconcile, không tự close vì equity chưa đổi.

g. Hindsight sửa câu chuyện

Sau failure, user có thể nói “EA vốn không dành cho regime này” dù trước đó không có regime rule. Đó là hindsight.

Control: hypothesis/regime/failure được timestamp trước run. Thay đổi sau failure là version mới, không rewrite plan cũ.

5. Checklist và pre-mortem lab

a. Checklist 12 câu

  1. Source/version/hash?
  2. Strategy card đủ?
  3. Permissions tối thiểu?
  4. Preset/schema match?
  5. Unit/range/dependency?
  6. Logic cases pass?
  7. Holdout untouched?
  8. Cost/execution stress?
  9. Monitoring/heartbeat?
  10. Reconcile restart?
  11. Kill/HALT semantics?
  12. Recovery owner/evidence?

b. Pre-mortem

Pre-mortem giả định hệ thống đã fail, rồi hỏi failure nào xảy ra, dấu hiệu sớm, control, evidence và owner.

Hình 3 — Pre-mortem buộc ta thiết kế cách nhìn thấy lỗi trước khi lỗi thật xảy ra.

c. Bài tập 10–15 phút

Dùng giấy/Sheets, không terminal/account/tiền thật.

Mẫu đối chiếu đã điền

Stage Red flag Evidence thiếu Action
Select chỉ screenshot raw report/passport STOP
Install nguồn/hash mơ hồ provenance QUARANTINE
Configure preset khác version schema/version REJECT
Test tune trên holdout untouched sample RESET DESIGN
Run permission rộng least privilege BLOCK
Monitor no heartbeat liveness evidence HALT
Recover auto-resume unknown state reconcile SAFE

Chọn row Recover, viết failure: duplicate action; early sign: internal state empty nhưng account position tồn tại; control: reconcile; owner: operator/system owner.

d. Red-flag register

Thêm severity, detected_at, owner, resolution và evidence link. Một flag chỉ close khi evidence tồn tại, không khi “đã xem”.

Kết quả mong đợi là stop/review queue, không phải quyết định dùng EA.

e. Điểm dừng

Dừng nếu source, passport, permission, holdout, monitoring hoặc recovery thiếu. Không bù bằng size nhỏ.

Trước khi bỏ điểm dừng, người duyệt phải trả lời ba câu: bằng chứng mới là gì, ai kiểm độc lập, và failure cũ đã được tái hiện rồi đóng bằng test nào. Ví dụ, đổi AUTO-RESUME thành SAFE chưa đủ nếu startup test vẫn không dựng lại tình huống account còn position nhưng bộ nhớ EA trống. Khi chưa có artifact trả lời ba câu này, trạng thái vẫn là STOP, kể cả demo đang chạy yên.

Một control cũng có hạn sử dụng. Sau khi đổi EA, preset, broker, symbol specification hoặc quyền terminal, hãy đánh dấu evidence cũ là cần xem lại. Đây không phải làm khó operator; nó ngăn việc dùng một lần pass trong môi trường cũ để bảo lãnh cho hệ thống mới.

6. Tổng kết

a. Năm ý chính

  • Sai lầm EA nằm xuyên lifecycle.
  • Screenshot/tên/preset không thay evidence.
  • Test logic và holdout trước performance.
  • Monitoring/reconcile/runbook là phần của hệ thống.
  • Pre-mortem biến red flag thành control có owner.

b. Câu hỏi tự kiểm tra

  • Vì sao size nhỏ không sửa unknown source?
  • Tune trên holdout làm mất bằng chứng gì?
  • Heartbeat khác chart mở ra sao?
  • Auto-resume cần gate nào?

c. Gợi ý đáp án

Xem gợi ý câu 1

Size chỉ giảm market exposure, không giảm software/permission risk. Xem lại mục 1 và mục 2.

Xem gợi ý câu 2

Holdout không còn độc lập với selection. Xem lại mục 3.

Xem gợi ý câu 3

Heartbeat là liveness evidence; chart mở chỉ là UI state. Xem lại mục 3.

Xem gợi ý câu 4

Reconcile account/internal state rồi manual/recovery approval. Xem lại mục 3 và mục 5.

d. Thuật ngữ cần nhớ

Thuật ngữ Giải thích ngắn
Lifecycle Chuỗi stage từ chọn tới recover.
Provenance Nguồn gốc file/version.
Configuration drift Preset/schema/version không còn khớp.
Least privilege Chỉ cấp quyền tối thiểu cần thiết.
Heartbeat Bằng chứng hệ thống còn sống.
Reconcile Khớp internal với external state.
Pre-mortem Giả định fail để thiết kế control.
Automation bias Tin output máy quá mức.
Outcome bias Đánh giá process chỉ theo kết quả.
Red flag Dấu hiệu cần stop/review.

e. Nguồn tham khảo

Bài trước: Quản trị rủi ro cho EA #13. Bài tiếp theo: Framework xây dựng EA từ Zero đến Hero #15.

Nội dung này phục vụ mục đích giáo dục; không phải lời khuyên đầu tư, đánh giá một EA cụ thể hoặc hướng dẫn live.