HyperICT
Expert Advisor chỉ đọc cấu trúc thị trường HTF (Higher Timeframe): swing H0–L1, Key Level, vùng cung/cầu (Order Block), trạng thái Pullback / CHoCH / Continue. Không đặt lệnh.
Phiên bản hiện tại: 0.11
Mục lục
- Cấu trúc thư mục
- Logic nghiệp vụ
- Mô tả từng file
- Luồng chạy (pipeline)
- Cài đặt & sử dụng
- Tham số input
- Trạng thái hiển thị
- API mở rộng
- Giới hạn & hướng phát triển
- Map spec → module
Cấu trúc thư mục
MQL5/
├── Experts/
│ └── HyperICT.mq5 ← EA chính (OnInit / OnTick)
│
└── Include/
└── HyperICT/
├── README.md ← tài liệu này
├── Types.mqh ← enum, struct
├── Config.mqh ← input
├── FibValidator.mqh ← Fib 0.382 (chỉ tiên quyết)
├── SwingEngine.mqh ← pivot, snapshot, roll swing
├── KeyLevels.mqh ← Key LV1/L2, OB, body break
├── Classifier.mqh ← 7+ trạng thái trend
├── UpdateEngine.mqh ← §1.4 CHoCH / Continue
├── StateMachine.mqh ← pipeline điều phối
├── Draw.mqh ← vẽ chart
└── Panel.mqh ← panel góc chart
Include trong code: #include <HyperICT/TênFile.mqh>
Logic nghiệp vụ
Điều kiện tiên quyết (chỉ lúc xác định trend)
| Xu hướng | Cấu trúc | Fib |
|---|---|---|
| Bull | HH-HL (H0>H1 và L0>L1) |
Sóng hồi H1→L0 ≥ 38.2% sóng L1→H1 |
| Bear | LH-LL | Cùng công thức Fib |
- Fib fail → state
BULL/BEAR (Fib pending)— không coi là Neutral. - Neutral chỉ khi không đủ 4 swing hoặc cấu trúc không HH-HL / LH-LL.
Swing H0, H1, L0, L1 (ghép theo leg — không lấy 2 đỉnh + 2 đáy tách rời)
Trên HTF, pivot được gán sao cho Key LV1 tạo ra Key LV2 (đúng thứ tự thời gian):
| Bias | Key LV1 | Key LV2 | Cách gán |
|---|---|---|---|
| Bear | H0 = Key LV1 (đỉnh trước L0) | L0 = Key LV2 | Thời gian: H1 → L1 → H0 → L0 |
| Bull | L0 = Key LV1 (đáy trước H0) | H0 = Key LV2 | Thời gian: L1 → H1 → L0 → H0 |
Gán pivot: từ L0/H0 gần nhất, lùi từng bước tới pivot cũ kề (không nhảy tới đỉnh/đáy xa hơn).
- Đỉnh/đáy hình thành sau Key LV2 (ví dụ đỉnh nhỏ sau L0 trong bear) không gán là H0 — thuộc
newH0/UpdateEngine§1.4. - Khóa snapshot khi bot chạy — chỉ đổi khi phá Key (§1.4).
Key Level (§1.2)
| Bias | Key LV1 | Key LV2 | Vùng cung | Vùng cầu |
|---|---|---|---|---|
| Bull | L0 | H0 (= đỉnh cao nhất L0→H0) | L0 → high nến đỏ OB | H0 → low nến xanh OB |
| Bear | H0 | L0 | (đối xứng) | (đối xứng) |
- Phá Key = thân nến (
max/minopen–close) trên bar HTF đã đóng (shift 1). - Phá Key LV1 → tín hiệu CHoCH.
- Phá Key LV2 → tín hiệu Trend Continue.
Trạng thái trend (§1.1)
| State | Điều kiện chính |
|---|---|
| Bull Pullback | Fib OK + giá giữa L0–H0 |
| Bull CHoCH | Body phá dưới L0, hoặc đang xử lý §1.4 CHoCH |
| Bull Continue | Body phá trên H0 / đang tạo newH0 |
| Bear Pullback / CHoCH / Continue | Đối xứng |
| Neutral | Không phân loại được cấu trúc |
Cập nhật sau phá Key (§1.4) — không quét lại full history
Xác nhận đỉnh/đáy mới: dùng InpSwingRange (pivot đủ N nến mỗi bên). Không dùng Fib trong giai đoạn này.
Bull Continue (phá H0)
- P1: Body phá H0 → track
newH0(nến xanh, high cao hơn),newL0(đáy impulse). - P2: Hồi đủ →
IsConfirmedSwingHigh(newH0)→ roll:H0→H1,L0→L1,newH0→H0,newL0→L0.
Bull CHoCH (phá L0)
- P1: Track
newL0(low thấp hơn). - P2:
IsConfirmedSwingLow(newL0)hoặc hồi lên đủInpSwingRange(swing high sau đáy) → khóanewL0, vào phase 3 (không kéonewL0nữa). - P3 case 1: Phá lên H0 →
newH0confirm → roll bull (L1giữ). - P3 case 2: Body phá xuống
newL0đã khóa → tracknewH0(confirm) → tracknewL02(confirm tuần tự) → roll bear.
Bear Continue / CHoCH: đối xứng với bull.
Mô tả từng file
Experts/HyperICT.mq5
- Entry point: khởi tạo
HtfContext, gọiStateMachine,Draw,Panel. OnTick: logic HTF chỉ khi nến HTF mới; vẽ rectangle cập nhật mỗi tick.- Export:
HyperICT_GetState()cho EA khác.
Types.mqh
ENUM_STRUCT_BIAS,ENUM_HTF_STATE,ENUM_UPDATE_EVENT,ENUM_UPDATE_PHASE.SwingPoint,SwingSet,OrderBlockZone,KeyLevelPair,UpdateContext,HtfContext.- Không chứa logic tính toán.
Config.mqh
- Toàn bộ
input: HTF, swing range, lookback, Fib ratio, màu vẽ, debug. - Prefix object chart:
HICT_.
FibValidator.mqh
IsPullbackValid()— H1→L0 vs L1→H1 ×InpFibMinRatio.- Chỉ dùng cho tiên quyết trend (và tính lại sau roll swing).
SwingEngine.mqh
IsSwingHigh/IsSwingLow,CollectSwings,PickLastTwo.LockInitialSnapshot,ClassifyStructure(HH-HL / LH-LL).IsConfirmedSwingHigh/Low— xác nhận pivot sau phá Key.RollBullContinue,RollBullChochCase1/2,RollBearContinue, …
KeyLevels.mqh
- Body break above/below.
FindSupplyOB/FindDemandOB.BuildKeyLevels,PriceBetween(Pullback zone).
Classifier.mqh
Evaluate()→ một trong cácENUM_HTF_STATE.- Ưu tiên: đang
update.phase→ CHoCH/Continue; sau đó Fib pending; sau đó Pullback/break.
UpdateEngine.mqh
DetectBreakEvents— phá Key LV1/L2.ProcessBullContinueBuild,ProcessBullChochBuild,ProcessBullChochResolve, …OnHtfBarClose— gọi mỗi nến HTF mới.
StateMachine.mqh
Init()→ lock snapshot +RefreshDerived.OnChartEvent()→IsNewHtfBar→UpdateEngine→ Fib + Key + Classifier.
Draw.mqh
- Label H0–L1, newH0/newL0/newL02.
- Rectangle Key LV1/L2 (kéo tới thời điểm hiện tại).
Panel.mqh
- Label góc trái: structure, Fib, state, Key prices, phase update.
Luồng chạy (pipeline)
flowchart TD
A[OnInit] --> B[SwingEngine.LockInitialSnapshot]
B --> C[RefreshDerived: Fib + Key + Classify]
C --> D[Draw + Panel]
E[OnTick] --> F{Nến HTF mới?}
F -->|Không| G[Draw refresh rect]
F -->|Có| H[UpdateEngine.OnHtfBarClose]
H --> I[RefreshDerived]
I --> G
G --> J[Panel update]
Cài đặt & sử dụng
- Copy
Experts/HyperICT.mq5và thư mụcInclude/HyperICT/vào terminal MT5. - MetaEditor → mở
HyperICT.mq5→ F7 compile. - Kéo EA lên chart (symbol cần đủ lịch sử HTF).
- Khuyến nghị: mở chart cùng symbol; HTF logic đọc
InpHtf(mặc định H1) dù chart có thể M15/M5. - Bật
InpDebug = trueđể xem log[HyperICT]và[HyperICT/Update]trong tab Experts.
Gợi ý tinh chỉnh
| Triệu chứng | Thử |
|---|---|
| Init fail / không đủ swing | Giảm InpSwingRange hoặc tăng InpSwingLookback |
| Pivot confirm chậm | Giảm InpSwingRange |
| Pivot nhiễu | Tăng InpSwingRange |
| Fib mãi pending | Kiểm tra sóng H1→L0 trên chart H1 |
Tham số input
| Input | Mặc định | Ý nghĩa |
|---|---|---|
InpHtf |
H1 | Timeframe cấu trúc |
InpSwingRange |
3 | Nến mỗi bên pivot; confirm đỉnh/đáy §1.4 |
InpSwingLookback |
400 | Số nến quét lúc lock ban đầu |
InpFibMinRatio |
0.382 | Tiên quyết pullback (chỉ lúc lock trend) |
InpDrawSwings |
true | Label H0–L1 |
InpDrawZones |
true | Rectangle Key LV |
InpDrawPanel |
true | Panel trạng thái |
InpDebug |
false | Log chi tiết |
Trạng thái hiển thị
| Panel text | Ý nghĩa |
|---|---|
BULL PULLBACK |
Bull hợp lệ, giá trong L0–H0 |
BULL (Fib pending) |
HH-HL nhưng hồi chưa đủ 38.2% |
BULL CHoCH |
Phá L0 hoặc đang update CHoCH |
BULL CONTINUE |
Phá H0 / đang tạo đỉnh mới |
BEAR … |
Đối xứng |
NEUTRAL |
Cấu trúc không rõ |
Khi đang update: dòng Update: evt=… phase=… | swingR=….
API mở rộng
// Trong HyperICT.mq5 — có thể #include Types từ EA khác nếu cần enum
ENUM_HTF_STATE HyperICT_GetState();
Trả về ctx.state hiện tại. EA khác có thể đọc sau khi HyperICT chạy trên cùng chart (cần thiết kế thêm export nếu muốn đọc swing/Key từ bên ngoài).
Giới hạn & hướng phát triển
Đã có
- HTF structure, Key LV, OB đơn giản, 7+ states, snapshot lock, §1.4 incremental update với swing confirm.
Chưa có
- Đặt lệnh, quản lý risk, session filter.
- LTF entry (MSS, FVG, …).
- OB mitigation filter chuẩn ICT.
- Vẽ trên chart HTF tách biệt (hiện dùng
ChartID()đang mở). - Alert / push notification.
Hướng phát triển gợi ý
- Test & harden
UpdateEnginetrên lịch sử (Strategy Tester visual). - Module
LTFtách riêng, đọcHyperICT_GetState(). - Cải thiện
FindSupplyOB/FindDemandOB. - Export struct
HtfContextqua global hoặc file cho indicator.
Map spec → module (tóm tắt)
| Spec | Module |
|---|---|
| Tiên quyết Fib + HH-HL | FibValidator, SwingEngine |
| §1.1 States | Classifier, Panel |
| §1.2 Key + OB | KeyLevels, Draw |
| §1.3 Vẽ | Draw |
| §1.4 CHoCH/Continue | UpdateEngine, SwingEngine |
| Pipeline | StateMachine |
| Input | Config |
| Data model | Types |
Tài liệu đồng bộ với HyperICT v0.11. Khi đổi logic, cập nhật comment đầu từng file .mqh và README này.