Files
Bell-PriceActionWithEma-EA/Experts/EA_ICT_CL
2026-03-10 13:47:42 +07:00
..
2026-03-10 13:47:42 +07:00
2026-03-10 13:47:42 +07:00
2026-03-10 13:47:42 +07:00
2026-03-10 13:47:42 +07:00
2026-03-10 13:47:42 +07:00
2026-03-10 13:47:42 +07:00
2026-03-10 13:47:42 +07:00
2026-03-10 13:47:42 +07:00
2026-03-10 13:47:42 +07:00
2026-03-10 13:47:42 +07:00
2026-03-10 13:47:42 +07:00
2026-03-10 13:47:42 +07:00
2026-03-10 13:47:42 +07:00
2026-03-10 13:47:42 +07:00
2026-03-10 13:47:42 +07:00
2026-03-10 13:47:42 +07:00
2026-03-10 13:47:42 +07:00
2026-03-10 13:47:42 +07:00
2026-03-10 13:47:42 +07:00

EA_ICT_CL Kiến trúc & luồng chạy

File chính: Experts/EA_ICT_CL.mq5
Thư mục module: Experts/EA_ICT_CL/ (các .mqh)

1) Mục tiêu thiết kế

  • EA_ICT_CL.mq5 nên là file “glue”: OnInit/OnDeinit/OnTick/... + gọi hàm module.
  • Mỗi .mqh chỉ gánh một trách nhiệm: config/state/signals/risk/trade/filters/…
  • Migrate từng phần nhỏ để tránh trùng định nghĩa (enum/struct/global) và dễ debug.

2) Luồng chạy tổng thể (theo mô tả hiện tại trong header v4.3)

Bối cảnh timeframe

  • BiasTF (D1): xác định bias (UP/DOWN/SIDEWAY/NONE)
  • MiddleTF (H1): xác định trend + quét FVG thuận xu hướng
  • TriggerTF (M5): xác nhận entry bằng MSS (market structure shift)

State machine

EA đang dùng state machine:

  • EA_IDLE
    • Mục tiêu: tìm/đặt “FVG tốt nhất” (MiddleTF) để theo dõi.
  • EA_WAIT_TOUCH
    • Mục tiêu: chờ giá retrace và touch vào vùng FVG (H1).
  • EA_WAIT_TRIGGER
    • Mục tiêu: khi đã touch FVG, chờ M5 MSS xác nhận đảo chiều theo trend.
    • v4.3: MSS chỉ detect khi state này.
  • EA_IN_TRADE
    • Mục tiêu: quản lý pending/position (trailing/timeout/cleanup tuỳ EA).

Decision flow “từ trên xuống”

  1. D1 Bias
    • Xác định HTFBias (UP/DOWN/SIDEWAY/NONE).
  2. H1 Trend / Swing structure
    • Xác định MarketDir (UP/DOWN/NONE) và các swing gần nhất: h0/h1/l0/l1.
  3. Quét H1 FVG
    • Tạo/duy trì pool FVG (g_FVGPool) tối đa MAX_FVG_POOL.
    • FVG có lifecycle: PENDING → TOUCHED → USED.
  4. Touch FVG
    • Khi bid/ask đi vào vùng gap → touchTime được set, chuyển state sang chờ trigger.
  5. M5 MSS (chỉ khi EA_WAIT_TRIGGER)
    • Nếu H1 UP: bull MSS khi close phá OLD tH0 → entry = tH0, SL = tL0.
    • Nếu H1 DOWN: bear MSS khi close phá OLD tL0 → entry = tL0, SL = tH0.
  6. Lập kế hoạch lệnh (OrderPlan)
    • direction: +1 BUY LIMIT / -1 SELL LIMIT
    • entry, stopLoss, takeProfit, lot
  7. Risk sizing
    • Lot theo %risk và khoảng SL (points).
    • Chặn trade nếu chạm max daily loss (InpMaxDailyLossPct).
  8. Gửi pending limit
    • Gắn magic và comment có fvg_id để trace.

3) Các folder/file module (vai trò + khi nào dùng)

Thư mục: Experts/EA_ICT_CL/

  • Config.mqh

    • Nơi đưa input, enum và hằng số cấu hình.
    • Khi migrate: chuyển dần input ... và các enum khỏi .mq5 sang đây (rồi include).
  • State.mqh

    • Nơi đưa struct contexts (bias/trend/fvg/orderplan/daily risk) + state machine.
    • Khi migrate: chuyển dần các struct, g_* globals sang đây để module nào cũng dùng chung.
  • Utils.mqh

    • Helper thuần: clamp/round/newbar/time formatting…
    • Ưu tiên migrate các hàm nhỏ, không phụ thuộc EA logic (vd MyBarShift cũng có thể đặt vào đây hoặc Market/Indicators).
  • Logging.mqh

    • Chuẩn hoá log bật/tắt theo InpDebugLog.
    • Có thể mở rộng: prefix theo symbol/tf/state, ghi file, debug panel.
  • Market.mqh

    • Helper về symbol specs (digits/point/spread), trade allowed, quote access…
  • Sessions.mqh

    • Helper session/time filter (London/NY theo UTC).
    • Khi migrate: đưa logic “được trade trong giờ nào?” sang đây.
  • Filters.mqh

    • Các bộ lọc: spread, news (nếu có), day-of-week, max trades/day, cooldown…
  • Indicators.mqh

    • Wrapper CopyBuffer/CopyTime, quản lý handles nếu bạn dùng iMA/iATR/…
  • Signals_BOS_FVG_OB.mqh

    • Nơi tập trung logic tín hiệu: BOS/MSS/FVG/OB… và build OrderPlan.
    • Mục tiêu: module này “pure” nhất có thể (input/state snapshot → plan).
  • Risk.mqh

    • Tính lot, normalize volume, kiểm soát daily drawdown.
  • Orders.mqh

    • Chuẩn hoá normalize price, build comment, mapping direction→order type…
  • Trade.mqh

    • Các hàm “side-effect”: OrderSend, modify, cancel, close.
  • Trailing.mqh

    • Trailing/BE/partial close (nếu có).

4) Gợi ý thứ tự migrate (an toàn, ít rủi ro nhất)

Để tránh trùng định nghĩa và lỗi include:

  1. Move helpers: MyBarShift, swing helper functions → Utils.mqh (hoặc tách Swing.mqh nếu bạn muốn).
  2. Move trade wrappers: các đoạn MqlTradeRequest/ResultTrade.mqh + helper normalize → Orders.mqh.
  3. Move risk: tính lot / daily loss → Risk.mqh.
  4. Move filters/sessionSessions.mqh, Filters.mqh.
  5. Cuối cùng mới move types: enums/struct/global sang Config.mqh + State.mqh.

Lưu ý: Chỉ include module nào khi bạn đã chuyển phần tương ứng khỏi .mq5 (để tránh “redefinition”).

5) Quy ước include trong EA_ICT_CL.mq5 (gợi ý)

Khi bắt đầu migrate, thường include theo thứ tự:

  1. Config.mqh
  2. State.mqh
  3. Utils.mqh
  4. Logging.mqh
  5. Market.mqh
  6. Indicators.mqh
  7. Sessions.mqh / Filters.mqh
  8. Risk.mqh
  9. Orders.mqh
  10. Trade.mqh
  11. Signals_BOS_FVG_OB.mqh
  12. Trailing.mqh