| 6 Bài Tập OOP Trên Lớp CCluster — Buổi 6 Grid Multi-Cluster MT5

6 Bài Tập OOP Trên Lớp CCluster — Buổi 6 Grid Multi-Cluster MT5

Bài Tập 5: Cluster Drawdown & Analytics

Grid Bot cơ bảnGrid Bot chuyên nghiệp khác nhau ở một điểm then chốt: OOP + Đa cụm (Multi-Cluster).

Trong Buổi 6 khóa Bot MT5 Nâng cao — Chiến thuật Rải quân (Grid Logic), học viên không chỉ chạy lưới Buy/Sell song song. Toàn bộ logic được đóng gói vào lớp `CCluster`: mỗi cụm tự quản Magic Number, điểm neo P₀, cache lệnh, chốt lời Surplus, khóa Hedge… Cụm nào lo việc cụm đó.

Sau buổi học, học viên thực hành trên `Buoi6_Code.mq5` với 6 bài tập nâng cao — mỗi bài chạm trực tiếp Encapsulation · Constructor · Getter · Dynamic memory trong MQL5.


Vì sao cần Multi-Cluster OOP?

Amateur Professional (Buổi 6)
Buy/Sell dùng chung biến toàn cục 2+ thực thể `CCluster` độc lập
Step cố định Dynamic Step co giãn
Chỉ Basket TP Surplus Harvest từng Step
Restart VPS mất trạng thái Global Variables persist P₀, ResetCount

*”Lưới Buy và lưới Sell chạy song song — nhưng không hề biết đến sự tồn tại của nhau.”*

Đó là tinh thần Encapsulation: mỗi cụm là một module tự quản, EA chỉ điều phối qua vòng lặp `Process()`.


Bài tập 1 — Mảng đối tượng động (Dynamic Cluster Array)

Vấn đề: Khai báo cứng `m_buy_cluster` và `m_sell_cluster` — muốn thêm cụm thứ 3, 4 phải sửa `OnInit()` và `OnTick()` thủ công.

Yêu cầu OOP:

  • Định nghĩa `CCluster* m_clusters[];`
  • Khởi tạo bằng `new` trong `OnInit()`, giải phóng bằng `delete` trong `OnDeinit()`
  • `OnTick()` chỉ cần vòng lặp `for` gọi `CachePositions()` và `Process()`

Kỹ năng: Dynamic memory · tránh memory leak · scale EA không đụng luồng chính.


Bài tập 2 — Panic Sync đa cụm (Cross-Cluster Panic Sync)

Vấn đề: Cụm Buy bị Lockdown nhưng cụm Sell vẫn rải DCA → margin toàn tài khoản cạn nhanh.

Yêu cầu OOP:

  • Cờ toàn cục `g_panic_lockdown`
  • Quét tất cả cụm: nếu bất kỳ cụm nào `IsLocked() == true` → bật panic
  • Trong `Process()`: panic bật → dừng mở DCA mới, vẫn cho chốt Surplus

Kỹ năng: Quản trị rủi ro cấp hệ thống — không phải rủi ro từng lệnh.


Bài tập 3 — Multi-Symbol Cluster

Vấn đề: `CCluster` mặc định giao dịch `_Symbol` của chart — không linh hoạt đa cặp.

Yêu cầu OOP:

  • Thuộc tính `string m_symbol_name;`
  • Constructor: `CCluster(int magic, bool is_buy, string symbol_name);`
  • Thay `_Symbol` bằng `m_symbol_name` trong mọi truy vấn giá và giao dịch
  • EA trên chart EURUSD chạy song song cụm GBPUSD

Kỹ năng: Constructor overload · module hóa theo symbol.


Bài tập 4 — Giá trung bình & Break-Even trên chart

Vấn đề: DCA cần biết điểm hòa vốn — mỗi cụm phải tự tính, không dùng số chung.

Yêu cầu OOP:

  • `GetAveragePrice()` — trung bình trọng số theo volume
  • `GetBreakEvenPrice()` — cộng/trừ commission + swap
  • Tự vẽ/cập nhật `OBJ_HLINE` (xanh nhạt Buy · đỏ nhạt Sell)

Kỹ năng: Getter method · visualization gắn với đối tượng.


Bài tập 5 — Drawdown & Analytics theo cụm

Vấn đề: Backtest/live-test cần đo hiệu suất từng cụm, không chỉ balance chung tài khoản.

Yêu cầu OOP:

  • `m_cluster_peak_equity` — đỉnh vốn riêng từng cụm
  • `GetMaxDrawdown()` — DD cục bộ trong chu kỳ lưới hiện tại
  • `GetProfitFactor()` — lọc lịch sử theo Magic Number của cụm
  • Đẩy số liệu lên Dashboard góc chart

Kỹ năng: Analytics encapsulated · ra quyết định dựa trên số liệu cụm, không nhìn chung balance.


Bài tập 6 — Cooldown độc lập theo cụm

Vấn đề: Cooldown toàn EA (Global Variable chung) — cụm Buy chốt lời nghỉ thì cụm Sell đang kẹt DD cũng bị đóng băng.

Yêu cầu OOP:

  • `datetime m_cooldown_until;`
  • `bool IsInCooldown();` — kiểm tra trong `Process()` của từng cụm
  • Bỏ GV cooldown toàn EA

Kỹ năng: State management per object · tránh side effect chéo cụm.


Tự kiểm tra sau 6 bài tập

# Câu hỏi Pass nếu…
BT1 Thêm cụm thứ 3 có sửa OnTick không? Chỉ sửa input + resize mảng
BT2 1 cụm Lockdown, cụm kia còn DCA? Không — panic sync
BT5 Dashboard hiện DD/PF riêng? Có — theo Magic
BT6 Buy cooldown, Sell vẫn DCA?

Khóa học liên quan

📚 Bot MT5 Nâng cao · Phần 2 — Chiến thuật Rải quân (Grid Logic)
📚 Xây dựng IB bằng Bot Auto Trading — Học phần 2

🔗 huongnghiepdulieu.com


Lưu ý: Giao dịch Forex có rủi ro. Nội dung mang tính học thuật — minh họa kiến trúc MQL5/OOP, không phải khuyến nghị đầu tư hay cam kết lợi nhuận.

*Bạn đã làm tới bài tập mấy? Gửi screenshot Dashboard BT5 để được review.*

Thành ĐT

Thành ĐT

Founder & Chief Technology Officer, HNDL
1.307 Bài viết
15.4k Người theo dõi
120k+ Lượt đọc

Chuyên gia với hơn 10 năm kinh nghiệm trong phát triển hệ thống giao dịch tự động (Trading Bot), Fintech, Mobile App và phân tích dữ liệu tài chính (Quantitative Analysis). Người sáng lập và trực tiếp dẫn dắt các khóa học thực chiến tại Hướng Nghiệp Dữ Liệu.