TradingView Webhook 集成
最后更新: 2026年10月
自动将你的 TradingView 警报转换为实盘订单。警报触发时,TradingView 会向 etrink 发送 webhook, 我们的 EtrinkAgent 会在你的 MT5 账户上执行买入/卖出——24/7 全天候运行,即使你的电脑已关机。
工作原理
TradingView 警报 → etrink webhook(验证密钥、品种和交易量限制) → 命令队列 → 你的 MT5 终端上的 EtrinkAgent → 你的经纪商。每条信号都会记录在你的面板中。
分步设置
- 在面板中打开 Webhook,选择要绑定的账户,然后点击 + 新建密钥。
- 复制只显示一次的 webhook URL(请保密——它可以下单):
https://api.etrink.com/hooks/etrk_xxxxxxxxxxxxxxxx- 在 TradingView 中创建一个警报。启用 Webhook URL 并粘贴上面的 URL。
- 将下面的 JSON 粘贴到警报的 Message(消息)字段中:
{
"action": "buy",
"symbol": "EURUSD",
"volume": 0.01,
"sl": 0,
"tp": 0,
"id": "{{time}}"
}- 保存。警报触发时,订单会在你绑定的账户上执行。
消息格式
| 字段 | 必填 | 说明 |
|---|---|---|
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]