| Magic & Comment Python MT5: Tách Cụm 6111/6112 Trước Step | HNDL

Được viết bởi Đặng Trí Thanh vào ngày 04/08/2026 lúc 14:07 | 39 lượt xem

Đặng Trí ThanhĐặng Trí Thanh
Giám đốc Công nghệ · DNT Digital · Hướng Nghiệp Dữ Liệu
Buổi 3 khóa Python Hedging: Magic & Comment chuyên sâu.

Magic & Comment Python MT5: đừng để bot đóng nhầm lệnh người

Magic 6111/6112 + comment schema

Bot hedging Python có Global State và Market Cache rồi vẫn có thể phá tài khoản bằng một lỗi “nhỏ”: không phân biệt lệnh của mình với lệnh của người / bot khác.

Trên MetaTrader 5, hai field quyết định việc đó là magiccomment. Buổi 3 khóa Lập trình Python nâng cao Hedging tự động hóa chốt quy ước: whitelist magic (ví dụ 6111/6112), comment có schema parse được, sync State chỉ nuốt lệnh thuộc bot.

Bài mang tính giáo dục kỹ thuật, không cam kết lợi nhuận.

1. Bridge từ Buổi 1–2

Đã có Buổi 3 thêm
State theo ticket Lọc / gom theo magic
cluster_id = symbol:magic Chuẩn hóa BUY magic / SELL magic
Cache theo symbol Comment mang level/role — không nhét vào cache giá
Lab 2.1 PASS Order send ghi đúng magic + comment

Giá và ATR lấy từ Cache theo symbol. Surplus từng cụm lấy từ State theo magic. Trộn hai việc này là bug kiến trúc.

2. Magic Number — CMND của cụm lệnh

Mỗi position MT5 có magic (int). Bot production chỉ được đụng ticket thuộc whitelist trong BotConfig.

Mô hình 2 magic (kiểu Nhi Quái / PyNhiQuaiBot)

Vai trò Ví dụ Ý nghĩa
BUY cluster 6111 Grid / Surplus phía BUY
SELL cluster 6112 Grid / Surplus phía SELL
@dataclass(frozen=True)
class MagicPolicy:
    buy_magic: int = 6111
    sell_magic: int = 6112

    def owns(self, magic: int) -> bool:
        return magic in (self.buy_magic, self.sell_magic)

Anti-pattern

  1. Magic = 0 cho mọi lệnh
  2. Hard-code 6111 rải 20 file
  3. Lọc chỉ theo symbol, bỏ magic
  4. Sweep đóng toàn bộ vị thế symbol — kể cả lệnh manual

3. Comment — metadata ngắn nhưng phải parse được

Comment MT5 ngắn. Schema classroom của khóa:

NQ|{role}|L{level}|{tag}
NQ|S|L1|GRID
NQ|H|L2|HEDGE
Token Nghĩa
NQ namespace bot
S / H Surplus / Hedge
L{n} X-Level (Buổi 4)
tag GRID / HEDGE…

Parser không được ném exception làm chết vòng tick. Comment hỏng → role="?", level=0, giữ raw để audit.

def build_comment(role: str, level: int, tag: str = "GRID", prefix: str = "NQ") -> str:
    return f"{prefix}|{role.upper()}|L{int(level)}|{tag}"

4. Luồng sync đúng

Magic filter pipeline
positions_get → whitelist → parse comment → cluster theo magic
positions_get()
  → drop magic lạ
  → parse comment → level, role
  → upsert Position
  → rebuild clusters theo symbol:magic

Kết quả: XAUUSD:6111XAUUSD:6112 có net riêng. Ticket magic 9999 (manual) không vào State bot.

5. Order send — ghi đúng từ đầu

request = {
    "action": mt5.TRADE_ACTION_DEAL,
    "symbol": symbol,
    "volume": lot,
    "type": order_type,
    "magic": policy.buy_magic,
    "comment": build_comment("S", level=1, tag="GRID"),
}

Sau lệnh: sync_from_mt5() lại. Đừng tin metadata chỉ nằm trong biến local.

6. Lab Buổi 3 trong folder khóa

Buoi 3.../Bai tap/
├─ starter/comment_schema.py
├─ starter/magic_policy.py
├─ starter/ingest.py
└─ starter/run_assignment.py
cd starter
python run_assignment.py
# PASS - Buoi 3 Magic Comment

Đề chấm buộc: parse đúng, bỏ magic 9999, cluster 6111/6112 không trộn volume.

7. Lỗi thường gặp

Triệu chứng Nguyên nhân Hướng xử lý
Bot đóng lệnh tay Không whitelist magic owns() trước mọi close
Level luôn 0 sau restart Comment không schema / không parse build_comment lúc gửi lệnh
Hai cụm chung một net Gom cluster chỉ theo symbol cluster_id(symbol, magic)
Crash khi comment lạ raise trong parser Fail-soft role=?

8. Bridge Buổi 4–5–8–9

Buổi Dùng field nào
4 · Step & X-Level level từ comment + ATR cache
5 · Surplus & Hedge role S/H + net theo magic
8 · Sweep Chỉ đóng magic thuộc bot
9 · Guard Từ chối nếu magic/comment lệch policy

Đọc thêm: Market Cache Buổi 2 · Lab 2.1

9. FAQ

Một magic cho cả BUY và SELL được không? Được nếu chiến lược đơn giản; khóa này khuyến nghị 6111/6112 để tách cụm độc lập như Nhi Quái.

Comment có thay client_order_id crypto không? Khác sàn khác field. Trên MT5, magic + comment là cặp nhận diện chính trong khóa này.

Có cần MT5 để làm bài tập? Không. Lab dùng payload giả + assert.

10. Kết

Global State nhớ lệnh. Cache nhớ thị trường. Magic & Comment quyết định lệnh nào mới được vào bộ nhớ đó. Buổi 3 khóa Python Hedging tại Hướng Nghiệp Dữ Liệu chốt whitelist + schema trước khi vào toán Step và logic Surplus/Hedge.

Học để vận hành có kiểm soát. Mọi quyết định vốn là trách nhiệm của bạn.

Đặng Trí Thanh

Đặng Trí Thanh

Giám đốc Công nghệ · DNT Digital · Giảng viên HNDL
838 Bài viết
15.4k Người theo dõi
120k+ Lượt đọc

Đặng Trí Thanh — Founder & CTO · Hướng Nghiệp Dữ Liệu - DNT Digital. Chuyên đào tạo và triển khai thực chiến Python, MT5 và hệ thống bot auto trading / IB cho học viên và doanh nghiệp.