Xây Bot Webhook TradingView Bằng Python + Flask (Source Code Mẫu)

Được viết bởi vào ngày 06/10/2026 lúc 10:16 | 12 lượt xem

Xây Bot Webhook TradingView Bằng Python + Flask (Source Code Mẫu)

Python là ngôn ngữ phổ biến nhất để viết bot giao dịch, và Flask là framework nhẹ lý tưởng để dựng endpoint nhận Webhook từ TradingView. Trong bài viết này, bạn sẽ xây một bot hoàn chỉnh: nhận tín hiệu, xác thực, đặt lệnh lên MT5 hoặc Binance, và ghi log.

Toàn bộ kiến thức này được đào tạo bài bản trong Bootcamp TradingView Webhook Bot — nơi bạn thực hành dựng bot Python chạy thật trên MT5, Binance và chứng khoán Việt Nam.

Mục lục

  1. Vì sao chọn Python + Flask?
  2. Kiến trúc bot
  3. Cài đặt môi trường
  4. Viết endpoint Flask nhận Webhook
  5. Xác thực token bảo mật
  6. Đặt lệnh MT5 từ tín hiệu
  7. Đặt lệnh Binance từ tín hiệu
  8. Ghi log và báo Telegram
  9. Cấu trúc bot hoàn chỉnh
  10. Chạy bot trên VPS
  11. Câu hỏi thường gặp
  12. Kết luận

1. Vì sao chọn Python + Flask?

  • Python: hệ sinh thái thư viện giao dịch dồi dào (MetaTrader5, ccxt, python-binance), cộng đồng lớn, dễ học.
  • Flask: nhẹ, chỉ cần vài dòng là có endpoint HTTP nhận Webhook.
  • Dễ mở rộng: từ một endpoint đơn giản có thể phát triển thành hệ thống nhiều sàn, nhiều chiến lược.

2. Kiến trúc bot

3. Cài đặt môi trường

pip install flask MetaTrader5 python-binance requests

4. Viết endpoint Flask nhận Webhook

from flask import Flask, request, jsonify

app = Flask(__name__)

@app.route("/webhook", methods=["POST"])
def webhook():
    data = request.get_json(silent=True) or {}
    print("[WEBHOOK]", data)
    return jsonify({"status": "ok"})

if __name__ == "__main__":
    app.run(host="0.0.0.0", port=5000)

Đây là khung tối giản. Tiếp theo, thêm xác thực và logic đặt lệnh.

5. Xác thực token bảo mật

Đừng để endpoint mở hoàn toàn — kẻ xấu có thể spam tín hiệu giả. Thêm token:

SECRET_TOKEN = "TOKEN_BI_MAT_CUA_BAN"

@app.route("/webhook", methods=["POST"])
def webhook():
    data = request.get_json(silent=True) or {}
    if data.get("token") != SECRET_TOKEN:
        return jsonify({"status": "denied"}), 403
    # xu ly tiep...
    return jsonify({"status": "ok"})

Token này phải khớp với message bạn gửi từ TradingView.

6. Đặt lệnh MT5 từ tín hiệu

import MetaTrader5 as mt5

def place_mt5(data):
    if not mt5.initialize():
        return {"error": mt5.last_error()}
    symbol = data.get("symbol", "XAUUSD")
    side = data.get("side", "BUY")
    volume = float(data.get("volume", 0.01))
    tick = mt5.symbol_info_tick(symbol)
    price = tick.ask if side == "BUY" else tick.bid
    request = {
        "action": mt5.TRADE_ACTION_DEAL,
        "symbol": symbol,
        "volume": volume,
        "type": mt5.ORDER_TYPE_BUY if side == "BUY" else mt5.ORDER_TYPE_SELL,
        "price": price,
        "magic": 55111,
        "comment": "TradingView Bot",
        "type_time": mt5.ORDER_TIME_GTC,
        "type_filling": mt5.ORDER_FILLING_IOC,
    }
    result = mt5.order_send(request)
    return result

7. Đặt lệnh Binance từ tín hiệu

from binance.client import Client

client = Client(API_KEY, API_SECRET)

def place_binance(data):
    symbol = data.get("symbol", "BTCUSDT")
    side = data.get("side", "BUY")
    qty = data.get("qty", "0.001")
    if side == "BUY":
        return client.order_market_buy(symbol=symbol, quantity=qty)
    return client.order_market_sell(symbol=symbol, quantity=qty)

8. Ghi log và báo Telegram

Bot chạy 24/7 cần “mắt” để theo dõi. Ghi log ra file và gửi Telegram:

import logging
import requests

logging.basicConfig(filename="bot.log", level=logging.INFO)

def notify(msg):
    url = f"https://api.telegram.org/bot{TELEGRAM_TOKEN}/sendMessage"
    requests.post(url, json={"chat_id": CHAT_ID, "text": msg})

Mỗi khi vào lệnh, gọi notify("Đã đặt lệnh BUY XAUUSD") — bạn sẽ biết bot làm gì ngay cả khi không mở máy.

9. Cấu trúc bot hoàn chỉnh

Gợi ý cấu trúc thư mục:

tradingview-bot/
├── app.py          # Flask endpoint chính
├── config.py       # token, api key
├── brokers/
│   ├── mt5.py      # đặt lệnh MT5
│   └── binance.py  # đặt lệnh Binance
├── notify.py       # Telegram
└── requirements.txt

Tách module theo sàn giúp bạn dễ mở rộng (thêm Bybit, chứng khoán VN…) mà không rối code.

10. Chạy bot trên VPS

  1. Cài Python + thư viện trên VPS.
  2. Mở cổng 5000 (hoặc dùng reverse proxy như Nginx).
  3. Chạy python app.py — nên dùng nohup, systemd hoặc Docker để bot không tắt.
  4. Kiểm tra endpoint bằng một POST thử từ máy bạn.

Toàn bộ quy trình deploy bot lên VPS được hướng dẫn chi tiết trong khóa học TradingView Webhook Bot.

11. Câu hỏi thường gặp

Flask có đủ nhanh cho bot không?

Với khối lượng tín hiệu thông thường (vài tín hiệu/phút), Flask hoàn toàn đủ.

Bot cần chạy ở đâu?

VPS hoặc cloud để hoạt động 24/7. Bot MT5 cần chạy cùng máy với terminal MT5.

Làm sao bot biết tín hiệu nào là mua/bán?

Tín hiệu truyền trường side (BUY/SELL), hoặc bạn dùng 2 endpoint riêng.

Tôi mới học Python thì sao?

Khóa Bootcamp TradingView Webhook Bot dạy từ căn bản, dùng AI Code hỗ trợ, phù hợp người chưa biết lập trình.

12. Kết luận

Xây bot Webhook TradingView bằng Python + Flask không phức tạp: một endpoint nhận tín hiệu, một lớp xác thực, và các hàm đặt lệnh cho từng sàn. Phần khó nằm ở việc vận hành ổn định, bảo mật và quản lý rủi ro — những thứ bạn sẽ được đào tạo bài bản tại Bootcamp TradingView Webhook Bot: 6 buổi | HNDL.

Bài viết liên quan về TradingView Webhook Bot

?s=120&d=mm&r=g

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

DNT DIGITAL

🤖 AI CODE: Vibe Code NEEDED! 🚀 🏦 SSI • DNSE • MT5 • Bitget ⚡

Zalo 0934145100
Khóa đào tạo
Hỗ trợ

Được học lại miễn phí · Hỗ trợ trọn đời · Cập nhật miễn phí

Đội ngũ hỗ trợ

Đặng Trí Thanh
Đặng Trí Thanh
Giám đốc Công nghệ DNT Digital
Zalo 0934145100
Mộng Cầm
Mộng Cầm
Hỗ trợ khách hàng · Huấn luyện viên
Zalo 0927909257
Khánh Linh
Khánh Linh
Hỗ trợ khách hàng · Huấn luyện viên
Zalo 0927909582