如何把 TradingView webhook 发送到 MetaTrader 5
最后更新: 2026年7月
TradingView 警报非常擅长告诉你何时该行动——但它从不下真实订单。警报只是一条通知。要把“买入 EURUSD”变成 MetaTrader 5 上的真实持仓,必须有程序接收这条警报并在你的经纪商处执行。通常这意味着一台 7×24 小时运行的电脑或 VPS。本指南将介绍如何通过 webhook 把 TradingView 连接到 MT5,以及 etrink 如何替你完成这一切——无需电脑,无需 VPS。
什么是 TradingView webhook
webhook 就是 TradingView 在警报触发瞬间调用的一个 URL。TradingView 不只是弹出窗口或发送邮件,而是向你指定的地址发送一个 HTTP POST 请求,请求正文由你自定义。这条消息可以是纯文本,但更实用的是 JSON——一种程序可以读取并据此执行操作的结构化数据。
所以 webhook 本身并不“交易”。它只是一个单向信使:“这个条件刚刚满足,数据在这里。”另一端必须有程序监听这条消息, 并决定如何处理。
为什么需要接收端
TradingView 会照常发送 webhook,但它与你的经纪商之间没有任何连接。真正关键的是接收端。它必须:
- 7×24 小时在线——市场和警报不会等你的笔记本电脑唤醒。
- 对请求进行身份验证,防止泄露的 URL 把你的账户掏空。
- 把 JSON 转换成真实的 MetaTrader 5 订单(品种、方向、手数、止损止盈)。
- 妥善处理被拒的情况——品种名称错误、止损价位无效、手数超出限制。
你可以在 VPS 上用 EA 桥接自行托管接收端,但在线率、崩溃和安全问题都要由你自己负责。etrink 是托管式替代方案:一个经过验证的 webhook 端点,加上在云端运行你的 MT5 终端的 EtrinkAgent,即使你的电脑关机,自动交易也能继续运行。
分步指南:TradingView 警报 → MetaTrader 5 订单
- 创建密钥。在 etrink 面板中打开 Webhook,选择要绑定的 MT5 账户,然后点击 + 新密钥。 复制仅显示一次的 URL:
https://api.etrink.com/hooks/etrk_xxxxxxxxxxxxxxxx- 在 TradingView 中创建警报。打开任意图表,添加警报(闹钟图标),并设置条件——均线交叉、指标数值或策略信号均可。
- 启用 Webhook URL。在警报的 Notifications 选项卡中勾选 Webhook URL,并粘贴上面的 etrink URL。 (使用 webhook 需要 TradingView 付费套餐。)
- 设置消息。将 JSON 内容(见下一节)粘贴到警报的 Message 字段中。
- 保存并测试。条件触发时,TradingView 会向 etrink 发送 POST 请求,请求经过验证后,订单会在你绑定的账户上执行。 每条信号都会记录在你的面板中。
完整的字段说明请参阅 webhook 文档。
警报消息格式(JSON)
最简单的市价买单如下所示。直接把它粘贴到 TradingView 的 Message 输入框中:
{
"action": "buy",
"symbol": "EURUSD",
"volume": 0.01,
"sl": 0,
"tp": 0
}这里的 sl:0 和 tp:0 表示不设止损止盈——订单开仓时不附带止损或止盈。测试阶段这是最安全的 默认设置,因为止损位置设置错误是经纪商拒单最常见的原因。
当你准备添加止损止盈时,请记住方向规则:对于买入(buy),止损必须位于当前价格下方,止盈位于上方 (卖出则相反)。顺序错误的订单会被经纪商拒绝,而不是被 etrink 拒绝:
{
"action": "buy",
"symbol": "EURUSD",
"volume": 0.01,
"sl": 1.0820,
"tp": 1.0920
}卖单的写法与之对称;如果你为每个账户设置了默认手数,手数字段可以省略:
{ "action": "sell", "symbol": "XAUUSD", "volume": 0.05 }你也可以利用 TradingView 的占位符,让它在发送时自动填入数值。它会在 POST 之前替换 {{ticker}}、{{strategy.order.action}} 和 {{close}}:
{ "action": "{{strategy.order.action}}", "symbol": "{{ticker}}", "volume": 0.01 }Pine Script 示例
如果你的信号来自策略,请在 Pine 代码中使用 alert() 调用,这样在条件满足时就会发送精确的 JSON 消息:
//@version=5
strategy("etrink signal", overlay=true)
fast = ta.sma(close, 10)
slow = ta.sma(close, 30)
if ta.crossover(fast, slow)
strategy.entry("Long", strategy.long)
alert('{"action":"buy","symbol":"EURUSD","volume":0.01,"sl":0,"tp":0}',
alert.freq_once_per_bar_close)
if ta.crossunder(fast, slow)
strategy.close("Long")
alert('{"action":"close","symbol":"EURUSD"}',
alert.freq_once_per_bar_close)两条 SMA 向上交叉时开多单并发送买入 JSON;向下交叉时平仓。使用 alert.freq_once_per_bar_close 可以避免在 K 线形成过程中反复触发警报——这是重复下单的常见原因。
常见问题(无效止损、品种名称、手数)
- 品种名称不匹配。你的经纪商可能把 EURUSD 列为
EURUSD.m、EURUSD.pro等名称。 如果 JSON 中的品种与之不完全一致,就找不到对应品种。请在 MetaTrader 5 的市场报价(Market Watch)窗口中核对准确名称。 - 止损价位无效。买单的止损高于价格(或卖单的止损低于价格)会被拒绝。止损还必须满足经纪商规定的与当前价格之间的 最小距离(“stops level”)。
- 手数被拒。手数过小、过大或步长不对(例如经纪商只允许 0.01 的整数倍,你却填了 0.013)。etrink 还会应用你为每个账户 设置的手数上限——请调低
volume或提高上限。 - 重复成交。如果警报在每个报价跳动时触发,而不是在 K 线收盘时触发,你会开出大量仓位。请把警报频率设为 Once Per Bar Close。
常见问答
我需要 VPS 或让电脑一直开着吗?
不需要。TradingView 从自己的服务器发送 webhook,MT5 端由 etrink 托管。你的电脑可以关机。
必须使用 TradingView 付费套餐吗?
Webhook URL 是 TradingView 的付费功能,所以警报端需要。MT5 的执行由 etrink 负责。
可以在不冒资金风险的情况下测试吗?
可以——在任意消息中加入 "test": true,所有验证都会照常运行,但不会下真实订单。详情请参阅 文档。
可以通过编程方式实现自动化吗?
如果你更想通过 AI 助手或自己的工具来操控 etrink,我们的 MCP 集成 提供同样的操作。
免费开始——创建账户,把 TradingView 连接到 MT5,几分钟内即可在免费 试用中运行你的第一个自动化警报。有疑问? [email protected]