TradingView Webhook 完整教程
从零到自动下单
你看到一个技术分析策略想自动跑:RSI 跌破 30 自动买、突破前高自动加仓。 但 TradingView 本身**只能画图、不能下单**。这篇讲怎么用Webhook 把 TradingView 的信号接到你交易所账号,全程自动。
看完你会知道:① Webhook 是什么、② 怎么在 TradingView 设 Alert、 ③ Pine Script 信号怎么送、④ 接到交易所的两条路径(自己搭 / 用 SaaS)、 ⑤ 常见坑与安全注意。
1. Webhook 是什么?跟一般 API 有什么差别
Webhook 简单讲就是「**事件触发的 HTTP POST**」。 一般 API 是你问对方答(你调用对方的 endpoint); Webhook 反过来,**事件发生时对方主动打你的 URL**。
TradingView 的 Alert 就是事件来源 — 当你的 Pine 条件成立(例如 RSI < 30),TradingView 会立刻 HTTP POST 到你提供的 URL, payload 带上你预先写好的消息。
2. 在 TradingView 设 Alert + Webhook
Step 1:打开图表 + 加上你的策略
进任何图表(例如 BTCUSDT.P 永续),点左下角的 指标,搜你要的 Pine 策略加上去。 或自己写一支(下面示例)。
Step 2:点右侧铃铛 → Create Alert
Condition 选你的策略;Trigger 选「Once Per Bar Close」(保守、不会盘中跳动)。
Step 3:Notifications tab
勾选 Webhook URL,贴上你的接收端 URL,例如:
https://api.tvsbot.com/webhook/your-secret-tokenStep 4:Message 栏填 JSON
这是 TradingView 会 POST 过去的内容。最简单版本:
{
"secret": "your-webhook-secret",
"action": "{{strategy.order.action}}",
"symbol": "{{ticker}}",
"price": {{close}}
}{{strategy.order.action}}、{{ticker}} 这些是 TradingView 内建变量,会在 Alert 触发时自动填上实际值 (buy / sell / BTCUSDT 等)。
3. Pine Script 怎么写才能触发 Alert
Pine Script 有两种发 Alert 的方式:
方式 A:strategy.entry() + Alert message
//@version=5
strategy("RSI 反转示范", overlay=true)
rsi = ta.rsi(close, 14)
if (ta.crossover(rsi, 30))
strategy.entry("Long", strategy.long,
alert_message='{"action":"buy","symbol":"{{ticker}}"}')
if (ta.crossunder(rsi, 70))
strategy.entry("Short", strategy.short,
alert_message='{"action":"sell","symbol":"{{ticker}}"}')建 Alert 时,Message 栏输入 {{strategy.order.alert_message}},Pine 就会把 上面 alert_message 内容塞到 Webhook payload。
方式 B:alert() 函数(不下单只发信号)
//@version=5
indicator("纯信号示范", overlay=true)
rsi = ta.rsi(close, 14)
if (ta.crossover(rsi, 30))
alert('{"action":"buy","symbol":"' + syminfo.ticker + '"}',
alert.freq_once_per_bar_close)4. 接到交易所有两条路径
路径 A:自己搭接收服务器
自己写一个简单的 Flask / FastAPI server,跑在 Heroku / Fly / VPS 上。 收到 webhook 后用 ccxt 或交易所官方 SDK 下单。
from fastapi import FastAPI, Request, HTTPException
import ccxt
app = FastAPI()
exchange = ccxt.binance({
"apiKey": "你的_KEY",
"secret": "你的_SECRET",
"options": {"defaultType": "future"},
})
@app.post("/webhook/{secret}")
async def receive(secret: str, request: Request):
if secret != "你的_webhook_secret":
raise HTTPException(401, "invalid secret")
body = await request.json()
side = body["action"] # buy / sell
symbol = body["symbol"] # BTCUSDT
qty = 0.001 # 写死或从 body 拿
order = exchange.create_market_order(symbol, side, qty)
return {"ok": True, "order_id": order["id"]}优点是完全掌控。缺点是要懂部署、要自己处理:
- API key 安全存储(不要明码存 .env 上 Github)
- HTTPS(TradingView 只支持 HTTPS webhook)
- 下单错误处理(余额不足、最小单量、IP 白名单等)
- 多策略管理(每个策略一个 endpoint,或路由)
- 风控(止损、最大每日亏损、紧急 kill switch)
- 多账号同步(想同时跑 3 个交易所要怎么设)
路径 B:用 SaaS(推荐给不想搭服务器的人)
像 TVSBot、3Commas、Cryptohopper 这类平台帮你把上面 全部处理掉。你只要:
- 到平台注册 + 绑定你的交易所 API key(read+trade 权限就好,禁 withdraw)
- 在平台建一个「策略」拿到专属 webhook URL
- 把 URL 贴进 TradingView Alert
- Pine 发出来的信号,平台帮你下单
5. 完整 payload 示例(TVSBot 通用版)
一个完整的信号,跟 TVSBot 对接的 payload:
{
"secret": "your-webhook-secret",
"action": "buy",
"symbol": "BTC/USDT:USDT",
"qty_type": "margin_pct",
"qty": 5,
"leverage": 5,
"tp_pct": 3,
"sl_pct": 1.5,
"exchange": "binance",
"market_type": "futures"
}意思是:用「保证金的 5%」开一单、5x leverage、3% 止盈、1.5% 止损。 TVSBot 会自动换算成实际下单 qty(会用你绑的 API key 抓 balance + 现价算)。
6. 安全与常见坑
① Secret 一定要有
没 secret 的 webhook 等于门户大开 — 任何人知道 URL 就能下假单。 payload 里务必带 secret 字段,接收端比对才执行。
② API key 禁用 Withdraw 权限
帮策略开的 API key 只勾 Trade, 绝对不勾 Withdraw。 这样就算 key 外泄,黑客只能下乱单,不能把钱提走。
③ Once Per Bar vs Once Per Bar Close
Once Per Bar 会在条件成立的当下立刻触发,但 K 线收盘前 条件可能反转 → 假信号。Once Per Bar Close 等 K 线收完才触发,保守得多。 初学者默认用后者。
④ TradingView 免费版限制
免费版同时只能 1 个 active alert。要跑多策略只能升级。 或用 TVSBot 的「单 Alert 多策略路由」功能 — payload 带 strategy 字段指定要送哪个策略, 一个 alert quota 跑 N 个策略。
⑤ 没有重试机制
TradingView Webhook 失败不会自动 retry。接收端短暂 down 机就漏信号。 要嘛确保你的 server uptime 高、要嘛用有 SLA 的 SaaS。
Get started
把你的策略接上 TradingView webhook,自动下单到 Binance / OKX / Bybit 等 7 家交易所。
免费注册 TVSBot7. 进一步学习
看完这篇你已经能跑起基本流程。接下来建议学:
- 常用指标:RSI / MACD / EMA 是怎么算的, 什么情境用什么好(下方延伸阅读)
- 风控设置:每日最大亏损、最大持仓、kill switch
- 多时间框架:日线判断大方向 + 小时线执行进场
- 回测 vs 实盘:策略回测赚钱实盘未必,要 forward-test 观察至少 14 天