| Buổi 14 IB Bot — Engine Copy Trading dưới 100ms & Guard System

Được viết bởi thanhdt vào ngày 17/07/2026 lúc 06:08 | 5 lượt xem


Buổi 14 — Engine Copy Trading dưới 100ms

Phần 5 — Telegram, Copy Trading & Web Dashboard, buổi thứ hai trong ba buổi. Buổi 13 đã có Telegram báo cáo PnL, alert Drawdown và phễu Investor Pass — khách nhìn thấy bot master chạy trước khi tin tưởng. Buổi 14 chuyển sang hành động thực thi: engine copy lệnh từ tài khoản Master sang một hoặc nhiều tài khoản Client với độ trễ mục tiêu dưới 100ms và lớp Guard ngắt copy khi mất kết nối hoặc vượt ngưỡng rủi ro.

Bài này ghi lại nội dung lớp Buổi 14 (Syllabus) để học viên ôn và làm bài tập trước Buổi 15 (Web Dashboard FastAPI — 100+ khách).

Buổi này làm gì — và không làm gì

Làm Không làm
Kiến trúc Master → Client copy Dashboard web tập trung (Buổi 15)
Đo và tối ưu latency copy Partner Area / tier Silver (Buổi 16)
Lot sizing theo Balance từng client Autorebates backcom (Buổi 21)
Guard: mất mạng, DD riêng client Landing page mới (Buổi 19)
Demo copy 2 tài khoản demo Scale 10 khách pilot (Buổi 18)

Deliverable cuối buổi: demo copy ít nhất một lệnh từ master sang client trên hai tài khoản demo; log latency trung bình dưới 100ms (đo trên VPS cùng region); Guard ngắt copy khi mô phỏng mất kết nối; bảng cấu hình lot ratio theo balance cho 2 client giả.

1. Vì sao copy trading cần latency dưới 100ms

Copy trading IB không phải «share tín hiệu Telegram». Khách trial kỳ vọng lệnh master và lệnh client gần như đồng thời — đặc biệt trên XAU, crypto CFD hoặc tin tức nhanh. Trễ vài giây có thể khiến:

  • Client vào giá lệch so với master → khách hỏi «sao bot của em khác anh»
  • Slippage tích lũy → PnL client không tương quan với báo cáo Telegram Buổi 13
  • IB mất uy tín trước khi scale

Mục tiêu < 100mskỹ thuật vận hành OPC, không phải cam kết lợi nhuận. Con số đo trên cùng VPS / cùng datacenter với broker; copy qua internet xa có thể cao hơn — lớp dạy cách đo và giảm bottleneck, không copy mù con số từ slide.

Thành phần ảnh hưởng latency Ghi chú
EA master phát hiện lệnh mới OnTradeTransaction nhanh hơn poll PositionsTotal mỗi tick
Kênh truyền Master → Copier File pipe / socket local < HTTP qua internet
Client EA nhận và OrderSend Giảm logic trước khi gửi — Guard tách bước
Broker execution Không kiểm soát — chỉ đo end-to-end

2. Kiến trúc Master — Client

2.1. Vai trò từng tài khoản

Vai trò Terminal Nhiệm vụ
Master VPS chính Chạy IB Bot hedging — nguồn lệnh thật
Client VPS cùng máy hoặc máy peer Nhận signal copy — không tự phân tích thị trường
Ops Telegram / dashboard sau Giám sát — không can thiệp từng lệnh tay

Master không gửi password client. Client login độc lập; copier chỉ nhận intent: symbol, side, volume (đã scale), magic, comment tag.

2.2. Luồng sự kiện (tóm tắt)

Master: OnTradeTransaction (DEAL_ADD / ORDER_ADD)
    → Serialize signal {ts, symbol, side, vol_master, ticket_ref}
    → Publish (socket / named pipe / shared memory)
Client: Subscribe
    → Guard pre-check (connected? DD OK? duplicate?)
    → Scale volume theo balance ratio
    → OrderSend với magic client
    → Ack + log latency_ms

Buổi 14 ưu tiên một kênh local trên cùng VPS (hai terminal MT5) — đạt latency thấp nhất cho lab. Buổi 15 mở rộng giám sát nhiều client qua FastAPI.

2.3. Contract signal (JSON minh hoạ)

{
  "schema": 1,
  "event_id": "m-20260717-00142",
  "symbol": "XAUUSD",
  "side": "BUY",
  "volume_master": 0.10,
  "master_ticket": 123456789,
  "master_magic": 10021,
  "ts_master_ms": 1721184000123
}

event_id idempotent — client đã xử lý thì bỏ qua, tránh duplicate khi master retry publish.

3. Copy latency — đo và tối ưu

3.1. Cách đo trên lớp

  1. Master ghi ts_master_ms khi emit signal
  2. Client ghi ts_client_recv_ms khi nhận, ts_client_sent_ms sau OrderSend
  3. latency_ms = ts_client_sent_ms - ts_master_ms

Chạy 20 lệnh demo — lấy median và p95. Deliverable: screenshot log hoặc file CSV.

3.2. Checklist giảm latency

  • [ ] Hai terminal cùng VPS, cùng region broker
  • [ ] Copier chạy OnTimer 50–100ms hoặc socket blocking read — không sleep 1s
  • [ ] Không gọi Telegram / WebRequest trong hot path copy
  • [ ] Volume scale tính trước — bảng ratio cache theo client id
  • [ ] Symbol client đã subscribe Market Watch — tránh delay subscribe lần đầu

3.3. Khi không đạt 100ms

Triệu chứng Hướng xử lý
Median > 200ms Kiểm tra sleep trong client EA; chuyển socket
Chỉ lệnh đầu chậm Warm-up symbol + 1 lệnh test 0.01
Spike theo giờ tin Ghi nhận — có thể broker queue; Guard widen không copy khi spread cao

4. Lot sizing theo Balance từng khách

Khách client có vốn khác nhau — copy cùng volume tuyệt đối là sai. Chuẩn OPC:

ratio_client = balance_client / balance_master_reference
volume_client = volume_master × ratio_client × risk_factor_client
Tham số Ý nghĩa
balance_master_reference Equity master lúc bật copy — cố định hoặc cập nhật theo ngày
risk_factor_client Hệ số 0.5–1.0 — client bảo thủ hơn master
Min/max lot Broker step — làm tròn NormalizeDouble

Ví dụ: Master 10,000 USD, mở 0.10 lot. Client 5,000 USD, risk_factor 1.0 → client 0.05 lot.

Lưu bảng ratio trong file config hoặc Global Variables prefix COPY_CLIENT_<id>_ — pattern đặt tên từ Buổi 2–3.

5. Guard System — fail closed trước khi copy

Guard Buổi 14 khác Guard PyNhiQuaiBot (bias hedge) — tập trung vận hành copy:

Gate Hành vi DENY
TERMINAL_CONNECTED master/client false Không copy mới; có thể đóng client theo policy
Spread > ngưỡng Skip lệnh này — log reason
Client DD > max_dd_client LOCKDOWN client — chỉ đóng
Duplicate event_id Skip
Symbol không khớp contract Skip — tránh copy sai mã

5.1. Ngắt lệnh khi mất mạng

Khi master mất kết nối broker > N giây (ví dụ 60s):

  1. Client copier chuyển COPY_STATE_HALTED
  2. Không mở lệnh mới theo signal cũ trong buffer
  3. Telegram ops (Buổi 13): «Master disconnect — copy paused»
  4. Khi master reconnect: RECOVERY — đối chiếu position master/client trước khi resume

Không tự động resume mù — học viên implement bước reconcile tối thiểu: đếm position cùng magic.

5.2. DD ngưỡng riêng từng client

Mỗi client có max_dd_client (USD hoặc % equity):

dd_client = peak_equity_client - current_equity_client
if dd_client >= max_dd_client → COPY_STATE_LOCKDOWN

Master có thể đang trong drawdown chấp nhận được; client nhỏ không bắt buộc chịu cùng profile. Đây là điểm bán OPC: «hệ thống có trần rủi ro từng tài khoản».

6. Demo copy 2 account — thực hành lab

6.1. Setup tối thiểu

Bước Việc
1 Tạo 2 TK demo — Master A, Client B
2 Cài EA master (bot IB) + EA copier client
3 Cấu hình socket port / file path chung
4 Bật Algo Trading cả hai terminal
5 Gửi 1 lệnh thủ công hoặc signal test từ master

6.2. Kịch bản kiểm thử

  1. Happy path: Master BUY 0.01 → client BUY đúng ratio trong < 100ms
  2. Disconnect: Tắt mạng master 90s → client không mở thêm; alert Telegram
  3. DD lock: Giả lập max_dd_client thấp → một lệnh lỗ kích hoạt LOCKDOWN
  4. Idempotent: Gửi lại cùng event_id → client không duplicate

Ghi log vào file copy_lab_YYYYMMDD.csv — nộp deliverable.

7. Gắn với Telegram Buổi 13

Hai kênh song song, không thay thế:

Kênh Khi copy RUNNING Khi copy HALTED
Telegram PnL Báo cáo master + tóm tắt số client active Alert disconnect / LOCKDOWN
Investor Pass Khách xem master Khách client vẫn xem TK mình

Message Telegram nên có field copy_state: RUNNING | HALTED | LOCKDOWN — tránh khách đọc PnL master trong lúc client đã dừng copy.

8. Gắn với FSM và Global Variables (Phần 1)

Master EA đã có FSM từ Buổi 1–3. Buổi 14 thêm state copy:

COPY_IDLE → COPY_ARMED → COPY_ACTIVE → COPY_HALTED → COPY_RECOVERY

Global Variables gợi ý:

IB_COPY_State
IB_COPY_LastEventId
IB_COPY_LatencyP95Ms
IB_COPY_ClientCount

Sau reconnect VPS, đọc GV trước — không assume COPY_ACTIVE nếu terminal vừa khởi động.

9. Checklist thực hành trên lớp

  1. [ ] Sơ đồ Master–Client vẽ tay hoặc Excalidraw — nộp ảnh
  2. [ ] Contract JSON event_id + test idempotent
  3. [ ] Bảng lot ratio cho 2 client giả (Excel/Markdown)
  4. [ ] Demo copy 1 lệnh — log latency
  5. [ ] Guard disconnect — client dừng mở mới
  6. [ ] Guard DD client — LOCKDOWN kích hoạt
  7. [ ] Telegram ops nhận alert HALTED (nếu đã có Buổi 13)

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

Triệu chứng Nguyên nhân Cách xử lý
Client không copy AutoTrading tắt / symbol khác suffix Bật algo; map XAUUSD vs XAUUSDc
Volume client = 0 Lot step / min lot Normalize; tăng vốn demo
Duplicate lệnh Không check event_id Dictionary processed ids
Latency ảo thấp Đo sai clock Dùng GetTickCount64 cùng VPS
Master copy khi FSM BUSY Emit signal quá sớm Chỉ emit sau DEAL_CONFIRMED

11. FAQ

Copy trading có cam kết lợi nhuận cho khách không?
Không. Buổi 14 dạy kỹ thuật đồng bộ lệnh và guard — không phải tư vấn đầu tư.

100ms có bắt buộc mọi broker không?
Không — đó là mục tiêu lab cùng VPS. Production đo p95 thực tế và document cho khách.

Dùng copy có sẵn của broker thay EA?
Có thể tham khảo — khóa tập trung tự chủ OPC: kiểm soát Guard, ratio, audit.

Client có cần bot hedging giống master?
Không — client chỉ chạy copier EA đơn giản. Logic hedge nằm ở master.

Buổi 15 thêm gì?
FastAPI dashboard — balance, equity, max DD, volume 100+ khách một màn hình + alert đỏ.

12. Nối Buổi 13, 14 và 15

  • Buổi 13: khách nhìn (Telegram + Investor Pass)
  • Buổi 14: khách nhận lệnh copy — latency < 100ms, Guard
  • Buổi 15: IB nhìn tập trung mọi client trên web dashboard

Thiếu Guard Buổi 14, scale 10 khách (Buổi 18) dễ thành «copy mù» khi mất mạng một đêm.

13. Đăng ký / xem lộ trình khóa

Trang khóa: Xây dựng IB bằng Bot Auto Trading
Lịch khai giảng: Lịch khai giảng
Hotline 0934 145 100 · Zalo 039 791 9841

14. Disclaimer

Nội dung buổi học phục vụ đào tạo kỹ thuật xây hệ thống IB và copy trading. Không phải tư vấn đầu tư; không cam kết lợi nhuận. Giao dịch có rủi ro. Tuân thủ điều khoản broker và quy định pháp luật khi vận hành IB và copy trading.

Lộ trình khóa IB: Xây dựng IB bằng Bot Auto Trading

admin

admin

Biên tập viên, Hướng Nghiệp Dữ Liệu
767 Bài viết
15.4k Người theo dõi
120k+ Lượt đọc

Biên tập viên nội dung tại Hướng Nghiệp Dữ Liệu, phụ trách tổng hợp và biên soạn các bài viết về lập trình Python, dữ liệu và công nghệ.