Bài viết gần đây
-
Bảo Mật Webhook Bot Trading: API Key, VPS Và 7 Lỗi Nguy Hiểm
Tháng 10 6, 2026 -
TradingView Webhook Bot Vs EA MT5 (MQL5): Nên Chọn Cái Nào?
Tháng 10 6, 2026 -
Xây Bot Webhook TradingView Bằng Python + Flask (Source Code Mẫu)
Tháng 10 6, 2026 -
Pine Script Cho Webhook Bot: Viết Tín Hiệu Mua Bán Gửi Đến Bot
Tháng 10 6, 2026
Xây Bot Webhook TradingView Bằng Python + Flask (Source Code Mẫu)
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
- Vì sao chọn Python + Flask?
- Kiến trúc bot
- Cài đặt môi trường
- Viết endpoint Flask nhận Webhook
- Xác thực token bảo mật
- Đặt lệnh MT5 từ tín hiệu
- Đặt lệnh Binance từ tín hiệu
- Ghi log và báo Telegram
- Cấu trúc bot hoàn chỉnh
- Chạy bot trên VPS
- Câu hỏi thường gặp
- 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
- Cài Python + thư viện trên VPS.
- Mở cổng 5000 (hoặc dùng reverse proxy như Nginx).
- Chạy
python app.py— nên dùngnohup,systemdhoặc Docker để bot không tắt. - 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
- TradingView Webhook Bot là gì?
- Nối TradingView Alert vào lệnh MT5
- TradingView Webhook Binance: giao dịch crypto
- Bot TradingView cho chứng khoán Việt Nam
- Cách tạo Webhook trong TradingView
- Pine Script cho Webhook Bot
- Webhook Bot vs EA MT5 (MQL5)
- Bảo mật Webhook Bot giao dịch
- Backtest chiến lược trước khi chạy bot