Bài viết gần đây
-
-
Buổi 21 IB Bot — Autorebates & minh bạch backcom OPC
Tháng 7 17, 2026 -
Buổi 13 IB Bot — Telegram API, báo cáo PnL và phễu Investor Pass
Tháng 7 15, 2026
| 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 < 100ms là kỹ 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
- Master ghi
ts_master_mskhi emit signal - Client ghi
ts_client_recv_mskhi nhận,ts_client_sent_mssauOrderSend 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):
- Client copier chuyển
COPY_STATE_HALTED - Không mở lệnh mới theo signal cũ trong buffer
- Telegram ops (Buổi 13): «Master disconnect — copy paused»
- 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ử
- Happy path: Master BUY 0.01 → client BUY đúng ratio trong < 100ms
- Disconnect: Tắt mạng master 90s → client không mở thêm; alert Telegram
- DD lock: Giả lập
max_dd_clientthấp → một lệnh lỗ kích hoạt LOCKDOWN - 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
- [ ] Sơ đồ Master–Client vẽ tay hoặc Excalidraw — nộp ảnh
- [ ] Contract JSON
event_id+ test idempotent - [ ] Bảng lot ratio cho 2 client giả (Excel/Markdown)
- [ ] Demo copy 1 lệnh — log latency
- [ ] Guard disconnect — client dừng mở mới
- [ ] Guard DD client — LOCKDOWN kích hoạt
- [ ] 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
Weekly Digest — Nhận Bản Tin Hàng Tuần
Nhận các bài viết phân tích kỹ thuật chuyên sâu, thuật toán giao dịch tự động (Trading Bot) và các giải pháp công nghệ mới nhất từ Hướng Nghiệp Dữ Liệu.
admin
Biên tập viên, Hướng Nghiệp Dữ LiệuBiê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ệ.