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.mq5nên là file “glue”:OnInit/OnDeinit/OnTick/...+ gọi hàm module.- Mỗi
.mqhchỉ 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”
- D1 Bias
- Xác định
HTFBias(UP/DOWN/SIDEWAY/NONE).
- Xác định
- H1 Trend / Swing structure
- Xác định
MarketDir(UP/DOWN/NONE) và các swing gần nhất:h0/h1/l0/l1.
- Xác định
- Quét H1 FVG
- Tạo/duy trì pool FVG (
g_FVGPool) tối đaMAX_FVG_POOL. - FVG có lifecycle:
PENDING → TOUCHED → USED.
- Tạo/duy trì pool FVG (
- Touch FVG
- Khi bid/ask đi vào vùng gap →
touchTimeđược set, chuyển state sang chờ trigger.
- Khi bid/ask đi vào vùng gap →
- 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.
- Nếu H1 UP: bull MSS khi close phá OLD
- Lập kế hoạch lệnh (OrderPlan)
direction: +1 BUY LIMIT / -1 SELL LIMITentry,stopLoss,takeProfit,lot
- Risk sizing
- Lot theo
%riskvà khoảng SL (points). - Chặn trade nếu chạm max daily loss (
InpMaxDailyLossPct).
- Lot theo
- Gửi pending limit
- Gắn
magicvà comment cófvg_idđể trace.
- Gắn
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,enumvà hằng số cấu hình. - Khi migrate: chuyển dần
input ...và các enum khỏi.mq5sang đây (rồi include).
- Nơi đưa
-
State.mqh- Nơi đưa
structcontexts (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.
- Nơi đưa
-
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
MyBarShiftcũng có thể đặt vào đây hoặcMarket/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.
- Chuẩn hoá log bật/tắt theo
-
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).
- Nơi tập trung logic tín hiệu: BOS/MSS/FVG/OB… và build
-
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.
- Các hàm “side-effect”:
-
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:
- Move helpers:
MyBarShift, swing helper functions →Utils.mqh(hoặc táchSwing.mqhnếu bạn muốn). - Move trade wrappers: các đoạn
MqlTradeRequest/Result→Trade.mqh+ helper normalize →Orders.mqh. - Move risk: tính lot / daily loss →
Risk.mqh. - Move filters/session →
Sessions.mqh,Filters.mqh. - 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ự:
Config.mqhState.mqhUtils.mqhLogging.mqhMarket.mqhIndicators.mqhSessions.mqh/Filters.mqhRisk.mqhOrders.mqhTrade.mqhSignals_BOS_FVG_OB.mqhTrailing.mqh