完整教程 · 自动交易

TradingView Webhook 完整教程
从零到自动下单

2026-06-03·12 分钟阅读·初学 ~ 中阶

你看到一个技术分析策略想自动跑:RSI 跌破 30 自动买、突破前高自动加仓。 但 TradingView 本身**只能画图、不能下单**。这篇讲怎么用Webhook 把 TradingView 的信号接到你交易所账号,全程自动。

看完你会知道:① Webhook 是什么、② 怎么在 TradingView 设 Alert、 ③ Pine Script 信号怎么送、④ 接到交易所的两条路径(自己搭 / 用 SaaS)、 ⑤ 常见坑与安全注意。

TradingView → TVSBot → 交易所 訊號流程TradingView 觸發 Alert,HTTP POST 到 TVSBot webhook URL, TVSBot 解析 payload 後用你的 API key 對 Binance / OKX 等交易所下單。TradingViewPine 觸發 Alert{"action":"buy",...}HTTP POSTTVSBot解析 / 風控用你的 API key 下單BinanceOKXBybit
圖:TradingView Alert → TVSBot webhook → 交易所自動下單

1. Webhook 是什么?跟一般 API 有什么差别

Webhook 简单讲就是「**事件触发的 HTTP POST**」。 一般 API 是你问对方答(你调用对方的 endpoint); Webhook 反过来,**事件发生时对方主动打你的 URL**。

TradingView 的 Alert 就是事件来源 — 当你的 Pine 条件成立(例如 RSI < 30),TradingView 会立刻 HTTP POST 到你提供的 URL, payload 带上你预先写好的消息。

重要前提
TradingView Webhook 是 付费功能,最低 Essential 方案 $14.95/月。Free 方案没这功能。完整方案比较见 TradingView 定价页

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

Step 4:Message 栏填 JSON

这是 TradingView 会 POST 过去的内容。最简单版本:

json
{
  "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

pine
//@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() 函数(不下单只发信号)

pine
//@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)
strategy 与 indicator 的选择
strategy:适合做完整回测,TradingView 会帮你算 PnL;indicator:纯信号发射器,回测结果要自己算。 要自动交易两种都可,看你习惯。

4. 接到交易所有两条路径

路径 A:自己搭接收服务器

自己写一个简单的 Flask / FastAPI server,跑在 Heroku / Fly / VPS 上。 收到 webhook 后用 ccxt 或交易所官方 SDK 下单。

python
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 这类平台帮你把上面 全部处理掉。你只要:

  1. 到平台注册 + 绑定你的交易所 API key(read+trade 权限就好,禁 withdraw)
  2. 在平台建一个「策略」拿到专属 webhook URL
  3. 把 URL 贴进 TradingView Alert
  4. Pine 发出来的信号,平台帮你下单
为什么选 TVSBot
TVSBot 是非托管架构 — 你的 API key 用 Fernet AES-128 加密存储,平台从不直接持有资金。可同时绑定 7 家交易所 (Binance / OKX / Bitget / Bybit / Gate / BingX / Hyperliquid), 一个信号一键同步多账户。 看定价

5. 完整 payload 示例(TVSBot 通用版)

一个完整的信号,跟 TVSBot 对接的 payload:

json
{
  "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 外泄,黑客只能下乱单,不能把钱提走。

2022 3Commas 事件参考
3Commas 托管型平台被黑,10 万把 API key 外泄,连有 Withdraw 权限的 key 都被搬空。详见 为什么 3Commas 被偷 $22M 这篇。

③ 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 家交易所。

免费注册 TVSBot

7. 进一步学习

看完这篇你已经能跑起基本流程。接下来建议学:

  • 常用指标:RSI / MACD / EMA 是怎么算的, 什么情境用什么好(下方延伸阅读)
  • 风控设置:每日最大亏损、最大持仓、kill switch
  • 多时间框架:日线判断大方向 + 小时线执行进场
  • 回测 vs 实盘:策略回测赚钱实盘未必,要 forward-test 观察至少 14 天