| 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:

  1. Mở @BotFather trên Telegram → /newbot
  2. Đặt tên hiển thị và username (ví dụ HNData_IB_Report_Bot)
  3. Lưu token — coi như mật khẩu; không commit lên Git công khai
  4. (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 getUpdates lấy chat.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 PeakEquity trong 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 lastAlertLevel trong 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):

  1. Tạo Investor Password trong cổng khách hàng / MT5
  2. Phát cho «khách giả định» (bạn học viên trong nhóm) — không gửi password master
  3. 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. 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_report nế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

  1. [ ] BotFather + token + chat_id xác minh bằng một tin test
  2. [ ] WebRequest whitelist api.telegram.org
  3. [ ] Template PnL gửi đúng lịch ít nhất 1 lần (demo)
  4. [ ] DD alert khi equity giảm mô phỏng (hoặc chỉnh ngưỡng thấp để test)
  5. [ ] Investor Password phát cho 1 «khách giả» — login read-only OK
  6. [ ] Message mẫu có link IB + Zalo
  7. [ ] 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

admin

admin

Biên tập viên, Hướng Nghiệp Dữ Liệu
765 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ệ.