还在守着交易屏幕等 Pine Script 策略出信号?
把Pine Script Webhook学会,策略会自动帮你下单、推送到手机、甚至直接连线券商成交——你可以安心睡觉、上班、陪家人。本文一次性讲透:原理、步骤、避坑指南、实战案例与常见疑问,确保看完即可动手。
什么是 Pine Script Webhook?
一句话:Webhook 是策略与外部世界的即时信使。
当你的 Pine Script 产生买入信号、止损触发、止盈到达等事件时,TradingView 会立即把一个 JSON 消息推送到你指定的 URL——这个 URL 可以是券商 API、自动化交易机器人,甚至自己的云函数。
核心流程的三句话:
- 策略触发事件 →
- TradingView 发送 HTTP POST →
- Webhook 接收端执行下单、通知或其它动作。
从零到一的五步落地法
第一步:编写策略文件
依旧用 Pine Script 的标准语法,记得把 entry/exit 关键变量显式写出来,方便后面插占位符。
//@version=5
strategy("EMA交叉Webhook模板", overlay=true)
emaFast = ta.ema(close, 9)
emaSlow = ta.ema(close, 21)
longCondition = ta.crossover(emaFast, emaSlow)
shortCondition = ta.crossunder(emaFast, emaSlow)
if longCondition
strategy.entry("long", strategy.long)
if shortCondition
strategy.entry("short", strategy.short)
第二步:创建 Alert 并绑定 Webhook
- TradingView 图表 → 右键策略名称 → “Add alert…”。
- 条件选择 “strategy → long” 或 “strategy → short”。
- 触发频率推荐 “Once Per Bar Close”,避免同一根 K 线内重复推送。
- Webhook URL 填入接收端地址,例如
https://your-server.com/pine-webhook
。
第三步:构造 JSON 消息
利用官方占位符即可,示例:
{
"ticker" : "{{ticker}}",
"action" : "{{strategy.order.action}}",
"price" : "{{close}}",
"contracts" : 1,
"sl_pips" : 50,
"tp_ratio" : 2
}
👉 用最全 Pine Script JSON 占位符大全,复制即用不再查文档。
第四步:接收端解析并执行
编写一段云函数或用现成服务:
- 用 Python + FastAPI 解析请求体即可根据
action
字段调用各券商 SDK; - 或者直接使用 Webhook Repeater 一类一键转 MT4/MT5 的服务。
示例代码精简版(Python):
from fastapi import FastAPI, Response
app = FastAPI()
@app.post("/pine-webhook")
async def handle(payload: dict):
action = payload.get("action")
if action == "buy":
# 调用券商 API 开多仓
pass
elif action == "sell":
# 调用券商 API 开空仓
pass
return Response(status_code=200)
第五步:测试 → 上实盘
- 先把策略切换到期权页签,跑一次少数合约的“模拟盘”;
- Webhook URL 换成测试环境,看日志是否收到 JSON;
200 OK
即放行,再切回实盘。
避坑清单:90% 新手败在这 5 件事
常见误区 | 正确姿势 |
---|---|
JSON 大括号写错 | 用官方“Alert message”按钮生成,复制粘贴 |
策略 repaint | 在脚本末尾加 barmerge.lookahead_off |
安全性忽视 | 使用 HTTPS + Token 校验,避免把 API Key 直接塞 JSON |
同一周期重复报警 | 频率设为 Once Per Bar Close |
爆仓风险未知 | 在策略里固定每笔 1% 风险,通过 webhook 传入事先算好的手数量 |
真实案例:TradingView → 券商 MT5 全自动下单
策略信号:EMA 金叉买入、死叉卖出。
Webhook 接收端:自建服务器 → MT5 API 下单。
平均延迟:
- Pine Script 触发 → TradingView POST:≈ 30 ms
- 服务器 → MT5 API:≈ 80 ms
整体 100 ms 以内,高频或日内完全可用。
海龟交易法升级版:将每次信号附上 risk
, atr
值,开仓同时挂移动止损脚本,回撤锁最低盈利,收益曲线平滑不少。
常见问题解答 (FAQ)
Q1:Pine Script Webhook 支持哪些数据?
A:除价格外,{{plot_0}}
任何自定义变量、当前 K 线的 {{volume}}
、{{interval}}
都可输出,还能用 json.dumps
扩展字段。
Q2:可以同时发 email 再发 webhook 吗?
A:可以,TradingView 容许多重通知;把 email 当备用通道即可。
Q3:回测与实盘有差异怎么办?
A:先检查 strategy.risk.max_intraday_filled_orders
是否大于实盘限制;再确认下单量的小数位与券商一致。
Q4:免费账户能不能用 webhook?
A:目前 TradingView 免费账号不支持设置自定义 webhook URL,需要 Pro 及以上等级。
Q5:能只推送止盈止损,不推送开仓吗?
A:在 alert 条件里单独选 “Take profit hit” 即可;或用额外绘图元素当触发器。
Q6:如何防止高频震荡行情导致重复信号?
A:在 Pine Script 内设置 ta.barssince()
判定阈值,确保距离上次同向信号不少于 X 根 K 线。
快速启动包:模板 + 工具
- Pine Script Webhook 模板脚本(GitHub star 2k+):已内嵌常用占位符、风险模块。
- Docker 版本托管脚本:一条命令部署接收端。
- 监控面板:用 Grafana 把 webhook 延迟、成交结果实时展示。
跟着上面五步稍加修改,就能在 15 分钟内把任何 Pine Script 策略升级为全自动交易系统。动手吧,祝你的策略以后自己出门挣钱!