etrink← 首页

TradingView Webhook 集成

最后更新: 2026年10月

自动将你的 TradingView 警报转换为实盘订单。警报触发时,TradingView 会向 etrink 发送 webhook, 我们的 EtrinkAgent 会在你的 MT5 账户上执行买入/卖出——24/7 全天候运行,即使你的电脑已关机。

工作原理

TradingView 警报 → etrink webhook(验证密钥、品种和交易量限制) → 命令队列 → 你的 MT5 终端上的 EtrinkAgent → 你的经纪商。每条信号都会记录在你的面板中。

分步设置

  1. 在面板中打开 Webhook,选择要绑定的账户,然后点击 + 新建密钥。
  2. 复制只显示一次的 webhook URL(请保密——它可以下单):
https://api.etrink.com/hooks/etrk_xxxxxxxxxxxxxxxx
  1. 在 TradingView 中创建一个警报。启用 Webhook URL 并粘贴上面的 URL。
  2. 将下面的 JSON 粘贴到警报的 Message(消息)字段中:
{
  "action": "buy",
  "symbol": "EURUSD",
  "volume": 0.01,
  "sl": 0,
  "tp": 0,
  "id": "{{time}}"
}
  1. 保存。警报触发时,订单会在你绑定的账户上执行。

消息格式

字段必填说明
action是buy · sell · close。close 只平仓——绝不会开新订单。
symbol是经纪商品种代码(例如 EURUSD、XAUUSD)
volume否手数。buy/sell 时必填;受每个账户的交易量上限限制。
sl / tp否止损 / 止盈价格(0 = 不设置)
magic否订单的 MT5 magic 编号(≥ 0 的整数)——每个策略使用一个。在 close 时,只平带有该 magic 的持仓;不提供时,会平掉该品种的所有持仓。
closeOpposite否true = 开仓前先平掉同一品种的反方向持仓(buy 会平掉 sell,sell 会平掉 buy);如设置了 magic,则只平相同 magic 的持仓。如果反方向无法平仓,新订单不会开出。
allowDuplicate否默认 true。false = 当该品种上已有同方向(如设置了 magic,则为相同 magic)的持仓时,不开新订单。该信号在面板中显示为已跳过——这不是错误。与 closeOpposite 一起使用时,先平掉反方向,再进行此检查。
comment否写入 MT5 中新开订单的备注。最多使用 31 个字符;土耳其语字母会转换为拉丁字母(ç → c),引号和表情符号会被删除。
id否幂等键——相同的 id 绝不会执行两次
test否true = 仅验证,不下真实订单

也接受其他写法:close_opposite、closeopposite、magicNumber、 magic_number、allow_duplicate——以及 "true"、"false" 或 "1001" 这样的字符串值。

示例

卖出(sell)

{ "action": "sell", "symbol": "XAUUSD", "volume": 0.05 }

平掉一个持仓

{ "action": "close", "symbol": "EURUSD" }

只平某个策略的持仓(magic)

{ "action": "close", "symbol": "XAUUSD", "magic": 1001 }

动态值(TradingView 占位符)

TradingView 会在发送时替换 {{ticker}}、{{strategy.order.action}}、 {{close}} 等占位符:

{ "action": "{{strategy.order.action}}", "symbol": "{{ticker}}", "volume": 0.01 }

策略反手(一个警报同时处理多头和空头)

一个策略警报即可让 MT5 跟随你的图表:策略转为多头时,平掉 magic 1001 的 sell 持仓并开出 buy;转为空头时则相反。 同一方向绝不会开出第二个持仓。

{
  "action": "{{strategy.order.action}}",
  "symbol": "{{ticker}}",
  "volume": 0.01,
  "magic": 1001,
  "closeOpposite": true,
  "allowDuplicate": false,
  "comment": "TV strateji A",
  "id": "{{timenow}}"
}

Pine Script 示例

使用 alert() 调用,以便在满足条件时将消息(你的 JSON)发送到 webhook:

//@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}',
          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)

安全测试

在任意消息中添加 "test": true(或使用面板中的测试信号按钮)。所有检查都会执行, 事件会记录为 test,但不会下任何真实订单。

安全与可靠性。密钥可以绑定到单个账户,因此其信号只会影响该账户。 如果该账户已停止,下一条收到的信号会自动重新启动它——让你的自动化持续运行。 切勿分享你的 webhook URL。

故障排除

  • “symbol not allowed”(品种不允许)——该品种不在你的允许列表中,或在你的经纪商处名称不同(例如 EURUSD.m)。
  • “no running instance”(没有运行中的实例)——绑定的账户已停止;它会自动重新启动,之后请重新发送。
  • 交易量被拒绝——超过了你的每账户上限;请降低 volume 或提高上限。
  • 信号“已跳过”——allowDuplicate: false 且已有同方向的持仓;这是预期行为。
  • 每次调用都会显示在面板的信号页面中,包含状态、结果(订单号或错误)以及原始 JSON——请先在那里检查。

需要帮助?[email protected]