Bài viết gần đây
-
Buổi 13 IB Bot — Telegram API, báo cáo PnL và phễu Investor Pass
Tháng 7 15, 2026 -
Bot IB Buổi 2: Lời trên chart, qua sóng găng cưa & Siêu Cache 1-Pass
Tháng 7 15, 2026
| Buổi 13 IB Bot — Telegram API, báo cáo PnL và phễu Investor Pass
Được viết bởi thanhdt vào ngày 15/07/2026 lúc 22:57 | 36 lượt xem
Buổi 13 — Telegram API, báo cáo PnL và phễu Investor Pass
Phần 5 — Telegram, Copy Trading & Web Dashboard, buổi đầu tiên trong ba buổi. Sau Phần 4 (Basket TP & Dashboard Chart), engine IB Bot trên MT5 đã có FSM, Global Variables, thuật toán O(N), Survival Logic và dashboard giám sát trên chart. Buổi 13 chuyển sang kênh ngoài Terminal: Telegram — nơi khách Investor Pass và học viên trial nhìn thấy bot đang chạy mà không cần vào VPS hay MT5.
Bài này ghi lại nội dung lớp Buổi 13 (Syllabus) để học viên ôn và làm bài tập trước Buổi 14 (Engine Copy Trading dưới 100ms).
Buổi này làm gì — và không làm gì
| Làm | Không làm |
|---|---|
| Tạo / cấu hình Telegram Bot API | Engine copy master → client (Buổi 14) |
| Gửi báo cáo PnL và cảnh báo Drawdown định kỳ | Web Dashboard FastAPI 100+ khách (Buổi 15) |
| Demo Investor Password — khách chỉ xem, không trade | Partner Area / backcom (Buổi 16) |
| Thiết kế phễu: demo account → link IB | Landing page & fanpage automation (Buổi 19–20) |
Deliverable cuối buổi: bot hoặc script MT5/Python gửi được ít nhất một message Telegram có PnL (hoặc Equity) và một alert Drawdown khi chạm ngưỡng; học viên mô tả được 3 bước phễu từ xem demo đến click link mở tài khoản IB.
1. Vì sao IB Bot cần Telegram trước khi Copy Trading
Mô hình OPC (Introducing Broker + bot auto trading) không chỉ là «chạy EA trên VPS». Khách trial và khách Investor Pass cần minh bạch theo thời gian thực — không phải chụp màn hình mỗi ngày. Telegram là kênh phổ biến ở Việt Nam, API ổn định, chi phí thấp, dễ gắn vào MQL5 (WebRequest) hoặc Python (middleware).
| Nhu cầu vận hành IB | Telegram đáp ứng |
|---|---|
| Khách hỏi «hôm nay bot lời hay lỗ?» | Push PnL / Equity theo lịch |
| IB lo khách panic khi DD | Alert Drawdown có ngưỡng |
| Trial chưa tin → cần xem trước khi mở TK | Investor Password chỉ đọc |
| Thu lead về link partner | Message kèm CTA link IB |
Buổi 13 không yêu cầu copy lệnh sang tài khoản khách — chỉ thông tin + phễu. Copy engine là Buổi 14.
2. Telegram Bot API — khung kỹ thuật trên lớp
2.1. Tạo bot và lấy token
Quy trình chuẩn:
- Mở @BotFather trên Telegram →
/newbot - Đặt tên hiển thị và username (ví dụ
HNData_IB_Report_Bot) - Lưu token — coi như mật khẩu; không commit lên Git công khai
- (Tuỳ chọn)
/setdescription— mô tả bot dùng cho báo cáo IB demo
Trên MT5: bật Allow WebRequest for listed URL và thêm https://api.telegram.org. Thiếu bước này, WebRequest trong EA trả lỗi dù token đúng.
2.2. Chat ID — gửi đúng người / nhóm
Bot gửi message cần chat_id:
- Cá nhân: nhắn bot lần đầu, gọi
getUpdateslấychat.id - Nhóm ops: thêm bot vào group, gửi một tin, đọc
chat.id(thường âm với supergroup)
Lớp khuyến nghị: một group nội bộ IB (chỉ team) nhận alert kỹ thuật; một kênh hoặc group khách trial (nếu có) nhận báo cáo đã lọc — không trộn log lỗi API với PnL gửi khách.
2.3. Hàm gửi tin nhắn cơ bản
Ví dụ endpoint (minh hoạ, không copy token thật):
POST https://api.telegram.org/bot<TOKEN>/sendMessage
Content-Type: application/json
{
"chat_id": "<CHAT_ID>",
"text": "IB Bot Demo | Equity: 10,250 USD | PnL ngày: +120 USD",
"parse_mode": "HTML"
}
Trong MQL5 có thể gói JSON và gọi WebRequest. Trong Python (Buổi 15 dashboard) dùng requests.post — cùng contract API.
Lưu ý lớp: Telegram giới hạn độ dài message (~4096 ký tự). Báo cáo PnL nên tóm tắt; chi tiết từng lệnh để Buổi 15 (dashboard web).
3. Báo cáo PnL tự động
3.1. Chỉ số nên gửi
| Chỉ số | Ý nghĩa với khách trial |
|---|---|
| Balance / Equity | Quy mô tài khoản hiện tại |
| PnL ngày / tuần | Bot «hôm nay» thế nào |
| Floating P/L | Đang gồng hay đã chốt |
| Số lệnh mở (nếu có) | Mức độ active — không khoe volume ảo |
Không gửi cam kết lợi nhuận trong template message. Câu mẫu trung tính: «Báo cáo tự động từ bot demo — không phải khuyến nghị đầu tư».
3.2. Lịch gửi (cron trong EA hoặc timer)
Gợi ý trên lớp:
- Cuối phiên hoặc một lần/ngày lúc cố định (ví dụ 22:00 GMT+7)
- Sau khi đóng basket TP (nếu Phần 4 đã cấu hình) — event-driven, không spam
Pseudo-logic trong OnTimer() hoặc khi FSM chuyển trạng thái «idle sau TP»:
if (TimeCurrent() - lastReport >= 86400)
buildReport();
sendTelegram(report);
lastReport = TimeCurrent();
buildReport() đọc từ Global Variables / cache O(N) đã học Phần 2 — tránh quét PositionsTotal mỗi giây chỉ để báo cáo.
3.3. Định dạng message dễ đọc trên điện thoại
Ví dụ template HTML (Telegram parse_mode: HTML):
<b>IB Bot Demo — Báo cáo ngày</b>
Account: #12345678 (demo)
Equity: 10,250 USD
PnL ngày: +120 USD (+1.2%)
Drawdown hiện tại: 3.1%
Lệnh mở: 2
<i>Cập nhật tự động · Không phải lời khuyên đầu tư</i>
Học viên tập một template và giữ cố định — khách trial nhận diện thương hiệu IB.
4. Drawdown alert — ngưỡng và hành vi bot
Drawdown (DD) là chỉ số khách và IB cùng quan tâm. Buổi 13 thiết lập alert, chưa thay thế Guard/Lockdown Phần 3 (đã học ở syllabus trước).
4.1. Định nghĩa DD trên lớp
- DD từ đỉnh Equity:
(PeakEquity - Equity) / PeakEquity * 100 - Lưu
PeakEquitytrong Global Variable — cập nhật khi Equity mới cao hơn
4.2. Ngưỡng gợi ý (demo / trial)
| Mức | Hành vi Telegram | Gợi ý engine |
|---|---|---|
| DD ≥ 5% | Cảnh báo vàng — message info | Ghi log, không đóng lệnh |
| DD ≥ 10% | Cảnh báo đỏ — @mention ops | Cân nhắc Lockdown (Phần 3) |
| DD ≥ 15% | Alert khẩn + tạm dừng marketing trial | Review thủ công |
Ngưỡng tùy symbol và chiến lược — lớp dùng demo để học cơ chế, không áp số cố định cho mọi bot production.
4.3. Tránh spam alert
- Chỉ gửi lại khi DD vượt ngưỡng mới hoặc sau cooldown (ví dụ 4 giờ)
- Lưu
lastAlertLeveltrong Global Variable — pattern giống FSM Buổi 1–3
Message mẫu:
⚠️ <b>Drawdown alert</b>
DD hiện tại: 10.2% (ngưỡng 10%)
Equity: 9,180 USD · Peak: 10,220 USD
Hành động: Kiểm tra VPS và bot — nhóm ops.
5. Investor Password — khách theo dõi không được trade
Investor Password (MetaTrader) cho phép kết nối chỉ đọc: xem lịch sử, equity curve, lệnh đang mở — không đặt lệnh, không rút tiền.
5.1. Vai trò trong phễu IB
| Bước | Kênh | Mục đích |
|---|---|---|
| 1 | Telegram — báo cáo tóm tắt | Hook hàng ngày |
| 2 | Investor Pass — MT5 mobile/PC | Xác minh «thật trên server» |
| 3 | Link IB partner | Chuyển đổi sau khi đủ tin |
Buổi 13 tập trung bước 1–2; link IB (bước 3) gắn message template.
5.2. Thực hành trên demo
Trên server demo (Exness hoặc broker lớp dùng):
- Tạo Investor Password trong cổng khách hàng / MT5
- Phát cho «khách giả định» (bạn học viên trong nhóm) — không gửi password master
- Khách đăng nhập MT5 → chỉ xem → đối chiếu số với Telegram
Deliverable: screenshot hoặc checklist «Investor login OK + số khớp báo cáo Telegram trong ± vài phút».
5.3. Myfxbook (nhắc ngắn)
Syllabus IB nhắc minh bạch trước trial — Myfxbook là lựa chọn bổ sung, không thay Investor Pass. Buổi 13 ưu tiên Telegram + Investor vì tích hợp trực tiếp với bot đang học.
6. Phễu demo account → link mở tài khoản IB
Phễu (funnel) Buổi 13 là logic nghiệp vụ, chưa cần landing đẹp (Buổi 19).
6.1. Ba bước tối thiểu
[A] Khách xem Telegram / Investor Pass (tin tưởng có dữ liệu)
↓
[B] Khách bấm link partner IB (tracking ref)
↓
[C] Mở tài khoản + nạp tối thiểu (theo chính sách broker) → trial copy (Buổi 14+)
6.2. Nội dung message có CTA
Ví dụ cuối báo cáo PnL tuần:
Muốn theo dõi bot demo bằng Investor Pass — inbox Zalo 039 791 9841.
Mở tài khoản qua link IB (demo đã chạy ổn định):
https://<link-partner-cua-ban>
Không hứa lợi nhuận. Có giải thích trial là giai đoạn quan sát, không phải bảo chứng.
6.3. Tracking đơn giản
- Mỗi học viên một link IB riêng (sub-IB / campaign)
- Ghi số «click → đăng ký» thủ công trên sheet trước khi có dashboard Buổi 15
- Telegram message có thể thêm
?utm_source=telegram_reportnếu landing hỗ trợ
7. Thu hút khách trial — điều lớp nhấn mạnh
| Nên | Không nên |
|---|---|
| Báo cáo đều, số liệu nhất quán | Chỉ chụp ngày lời, im ngày lỗ |
| Cho xem Investor Pass trước copy | Ép nạp ngay khi chưa xem demo |
| Trả lời FAQ kỹ thuật (DD, số lệnh) | Hứa % lợi nhuận cố định |
| Ghi nhận lead vào sheet/Zalo | Spam 10 group Telegram lạ |
«Thu hút trial» ở Buổi 13 = niềm tin qua minh bạch, không phải quảng cáo volume.
8. Kiến trúc gợi ý — MT5 + Telegram
┌─────────────────┐ OnTimer / event ┌──────────────────┐
│ EA IB Bot │ ───────────────────────► │ api.telegram.org │
│ FSM + Global │ WebRequest │ sendMessage │
│ O(N) cache │ └────────┬─────────┘
└────────┬────────┘ │
│ đọc Equity, PnL, DD ▼
│ ┌──────────────────┐
└──────────────────────────────────►│ Chat ops / trial │
└──────────────────┘
Buổi 14 thêm nhánh Master → Client copy song song — không thay thế nhánh báo cáo.
8.1. Gắn Telegram vào FSM (ôn Phần 1)
EA IB nên chỉ gửi báo cáo khi FSM ở trạng thái cho phép — ví dụ STATE_IDLE hoặc STATE_REPORTING, không gửi giữa lúc STATE_BUSY đang xử lý basket:
switch (fsmState) {
case STATE_IDLE:
if (shouldSendDailyReport()) sendPnLReport();
if (checkDrawdown()) sendDrawdownAlert();
break;
case STATE_BUSY:
// không gửi PnL — tránh số equity đang biến động giữa chuỗi lệnh
break;
}
shouldSendDailyReport() đọc lastReportTime từ Global Variable — pattern Buổi 2–3. Học viên đã có sẵn module FSM + Global từ Phần 1; Buổi 13 thêm output chứ không viết lại engine.
8.2. Ví dụ pseudo-code MQL5 — SendTelegram
bool SendTelegram(const string text) {
string url = "https://api.telegram.org/bot" + TelegramToken + "/sendMessage";
string headers = "Content-Type: application/jsonrn";
string body = StringFormat(
"{"chat_id":"%s","text":"%s","parse_mode":"HTML"}",
TelegramChatId, JsonEscape(text)
);
char post[], result[];
StringToCharArray(body, post, 0, WHOLE_ARRAY, CP_UTF8);
int res = WebRequest("POST", url, headers, 5000, post, result, headers);
return (res == 200);
}
Lớp nhấn mạnh: JsonEscape cho ký tự đặc biệt; token đặt trong input EA hoặc file .set không đẩy lên Git.
8.3. Bảo mật token và chat_id
| Rủi ro | Cách giảm |
|---|---|
| Token lộ trên screenshot | Che token khi demo; rotate qua BotFather nếu lộ |
| Bot bị add vào group lạ | Chỉ gửi vào group ops đã kiểm soát |
| Khách forward báo cáo sai ngữ cảnh | Footer «báo cáo demo» + không cam kết LN |
| WebRequest bị tắt trên VPS | Checklist deploy: bật URL whitelist sau mỗi cài MT5 mới |
9. Mẫu phễu — kịch bản trial 7 ngày (bài tập)
Học viên viết một kịch bản 7 ngày cho «khách giả»:
| Ngày | Hành động IB | Kênh |
|---|---|---|
| D1 | Gửi welcome + hướng dẫn xem Investor Pass | Zalo |
| D2–D6 | Báo cáo PnL Telegram (cùng giờ) | Telegram |
| D3 | FAQ ngắn: DD là gì? | Telegram / Zalo |
| D7 | Gửi link IB + nhắc trial copy sắp tới (Buổi 14) | Telegram |
Không bắt buộc automation D1/D7 — có thể thủ công. Mục tiêu: hiểu nhịp chăm sóc trước khi gắn engine copy.
10. Đối chiếu với dashboard Buổi 12
Phần 4 đã có dashboard «wow» trên chart cho khách nhìn trong Terminal. Buổi 13 không thay dashboard đó — bổ sung push ra ngoài:
| Kênh | Ai xem | Khi nào |
|---|---|---|
| Chart dashboard | Khách có MT5 + Investor | Muốn soi chi tiết từng lệnh |
| Telegram | Khách chỉ có điện thoại | Xem nhanh mỗi ngày |
| Investor Pass | Khách cần xác minh server | Trước khi tin báo cáo |
Ba kênh phải khớp số trong cùng cửa sổ thời gian — lệch lớn là dấu hiệu cache hoặc timezone sai.
11. Checklist thực hành trên lớp
- [ ] BotFather + token + chat_id xác minh bằng một tin test
- [ ]
WebRequestwhitelistapi.telegram.org - [ ] Template PnL gửi đúng lịch ít nhất 1 lần (demo)
- [ ] DD alert khi equity giảm mô phỏng (hoặc chỉnh ngưỡng thấp để test)
- [ ] Investor Password phát cho 1 «khách giả» — login read-only OK
- [ ] Message mẫu có link IB + Zalo
- [ ] Ghi 3 bước phễu vào file deliverable
12. Lỗi thường gặp
| Triệu chứng | Nguyên nhân | Cách xử lý |
|---|---|---|
| WebRequest 4014 | Chưa whitelist URL | Thêm api.telegram.org trong MT5 |
| 400 Bad Request | chat_id sai hoặc bot chưa được /start |
Khách nhắn bot trước |
| Message trống | JSON escape lỗi trong MQL5 | Kiểm tra chuỗi UTF-8 |
| Số PnL lệch Investor | Cache cũ / chưa cập nhật peak | Đồng bộ timer với OnTick hoặc refresh cache |
| Spam alert DD | Không cooldown | Thêm lastAlertTime Global Var |
13. FAQ
Telegram có thay web dashboard không?
Không. Telegram là kênh nhẹ cho alert và tóm tắt. Dashboard 100+ tài khoản là Buổi 15.
Investor Pass có an toàn không?
Chỉ đọc — nếu chỉ cấp investor, khách không đặt lệnh. Master password không bao giờ gửi qua Telegram.
Báo cáo PnL có vi phạm quy định broker?
Báo cáo tài khoản của bạn hoặc demo bạn sở hữu — tuân thủ điều khoản broker và không cam kết lợi nhuận cho bên thứ ba.
Chưa có khách thật — học thế nào?
Dùng demo + bạn học đóng vai trial + group nội bộ. Phễu vẫn viết đủ 3 bước.
Có cần server Python không?
Không cho Buổi 13 thuần MT5. Middleware Python có thể thêm sau (Buổi 15 FastAPI dashboard) nếu muốn tách logic báo cáo khỏi EA.
Telegram channel vs group?
Channel một chiều — tốt cho broadcast báo cáo. Group — tốt cho ops và Q&A nội bộ. Trial có thể chỉ nhận forward từ channel.
14. Nối Buổi 12 và Buổi 14
- Buổi 12 (Dashboard Chart): khách nhìn trên chart trong Terminal / giao diện bạn build
- Buổi 13: khách nhìn trên điện thoại qua Telegram + Investor Pass
- Buổi 14: khách nhận lệnh copy từ master — latency < 100ms
Thiếu Buổi 13, Buổi 14 dễ thành «copy mù» — khách không hiểu bot master đang ở trạng thái nào trước khi bật copy.
15. Đă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
16. Disclaimer
Nội dung buổi học phục vụ đào tạo kỹ thuật xây hệ thống IB và bot. 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ệ.