etrink← 首页

如何把 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 订单

  1. 创建密钥。在 etrink 面板中打开 Webhook,选择要绑定的 MT5 账户,然后点击 + 新密钥。 复制仅显示一次的 URL:
https://api.etrink.com/hooks/etrk_xxxxxxxxxxxxxxxx
  1. 在 TradingView 中创建警报。打开任意图表,添加警报(闹钟图标),并设置条件——均线交叉、指标数值或策略信号均可。
  2. 启用 Webhook URL。在警报的 Notifications 选项卡中勾选 Webhook URL,并粘贴上面的 etrink URL。 (使用 webhook 需要 TradingView 付费套餐。)
  3. 设置消息。将 JSON 内容(见下一节)粘贴到警报的 Message 字段中。
  4. 保存并测试。条件触发时,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 集成 提供同样的操作。

请对你的 webhook URL 保密。任何持有它的人都可以在绑定账户上下单。一旦泄露,请立即在面板中更换密钥。

免费开始——创建账户,把 TradingView 连接到 MT5,几分钟内即可在免费 试用中运行你的第一个自动化警报。有疑问? [email protected]