量化喵是独立第三方信息站,不是欧易(OKX)官方。注册按钮含邀请码 OK30001 完整披露 →

欧易 · 策略实操

欧易信号策略怎么接 TradingView 警报

欧易的信号策略(Signal Bot)就是接 TradingView 警报用的:你在欧易建一个信号,拿到一条 Webhook URL 和一串 signalToken,把两样东西填进警报,警报触发时欧易按消息内容替你下单。不用自己搭后端。

边界也要一开始说清:它目前只支持永续合约,不支持现货,持仓是单向模式。下面按「欧易建信号 → TradingView 填警报 → 看懂消息字段 → 报错排查」的顺序走一遍。

它能做什么,不能做什么

下表按欧易帮助中心《交易信号策略常见问题》整理:

项目官方说法实际影响
交易品种目前只支持永续合约,不支持现货;可配置杠杆想拿 TradingView 信号自动买现货,这条路走不通
持仓模式单向持仓:同一交易对任何时候只持有一个方向,不同交易对可以一多一空同一个币同时持有多仓和空仓的做法用不上
多个交易对一个信号策略可选多个交易对;设置时没选的交易对,信号会被过滤掉警报发的是 ETH,策略里只选了 BTC,这条信号不会下单
一个信号挂多个策略可以挂 2 个以上,都按同一信号执行,各自可设不同交易对、杠杆、保证金同一条警报可以分别跑几套不同的保证金设置
模拟盘支持,入口:交易 → 模拟交易 → 策略交易 → 策略广场 → 信号策略 → 创建先在模拟盘把整条链路跑通,再上实盘
部分止盈、反转支持分级止盈(例如 50% 和 100% 两级,在 TradingView 里编好后分别发警报);反转只要一条消息写明新方向和规模,不必先平再开平仓逻辑放在 TradingView 里写,分几条警报发

它只按收到的消息下单,信号好坏取决于你在 TradingView 里写的逻辑。

TradingView 的 Webhook 通知不在免费 Basic 版里:它的定价页功能对照表显示 Essential 起才有(2026-09 查看,方案名会变)。另外它的帮助文档写明,Webhook 警报必须先开两步验证;只接受 80、443 端口;对方 3 秒内没处理完,这次请求就作废;送达情况在警报日志的 Webhook status 列里看。

在欧易建信号:拿到 Webhook URL 和 signalToken

实盘入口按《OKX信号策略:如何使用TradingView警报创建您的信号策略》这篇走:

  • 登录欧易,进入 交易 → 策略交易 → 策略广场,选「信号策略」,点创建。
  • 点「新增自定义信号」,填信号名称和简介(简介不超过 500 字符),点「创建信号」。
  • 系统会自动生成这个信号的 Webhook URL 和警报信息规范。signalToken 在信号详情的「填入您的警报消息」部分。

signalToken 是这个信号的身份验证凭证,每个信号独有,要原样复制进 TradingView 的警报消息。把它当密码对待:别截图发群,也别写进公开分享的 Pine 脚本。

Webhook URL 分实盘和模拟盘两条,帮助中心原文如下:

环境Webhook URL
实盘https://www.okx.com/algo/signal/trigger
模拟盘https://www.okx.com/pap/algo/signal/trigger

两条只差一个 /pap,肉眼很容易看漏。欧易把「历史事件里没有记录」的排查指向 URL 是否与信号配置一致,模拟盘信号配了实盘地址、或者反过来,就属于这一类。

忘了存 URL 或消息模板,在信号视图点「查看配置」,或者从策略详情里的信号配置链接进去,都能再看到。

TradingView 警报怎么填?先看你的脚本是哪一种

欧易生成信号时给了两个模板,选哪个取决于你在 TradingView 里用的是什么:

你手上的东西用哪个模板要注意的
用 strategy.* 函数的 Pine 策略「TradingView - 模板」策略里同时调用了 alert() 的,建警报时选「仅订单执行」
指标脚本(alertcondition())「自定义 - 模板」一个警报只放一种 action
在图表上手动建的警报「自定义 - 模板」同上
自己写程序发请求「自定义 - 模板」固定 IP 要先找客服,见后面限制一节

strategy 策略脚本。官方示例用的是一个 RSI14 策略。在 TradingView 图表上选 USDT 永续合约交易对,加载策略后新建警报:

  • 策略代码里如果还调用了 alert(),触发条件那里选「仅订单执行」;
  • 消息框里粘贴欧易生成的「TradingView - 模板」;
  • 通知里勾选 Webhook URL,粘贴欧易给的地址,点创建。

模板里的 investmentType 已经写成 base,也就是按交易币数量下单,直接复制就行。信号策略会自动把交易币数量换算成合约的「张」。

指标脚本和手动警报。指标里用 alertcondition() 定义条件。官方举的例子是 MACD:金叉那个警报配 ENTER_LONG 模板,死叉那个配 EXIT_LONG 模板;图表手动警报的例子是 RSI 上穿超卖线 30 时发 ENTER_LONG。到期时间可以选「无限制警报」。

这里有一条欧易标了重要提示的规则:ENTER_LONG、EXIT_LONG、ENTER_SHORT、EXIT_SHORT 四种消息,每个警报只对应一个。不能把四个模板都塞进同一个消息输入框,开多和平多要建成两个警报。

警报建好后,回到欧易的信号页点「使用信号」,设置交易对、杠杆比例和投资资金(保证金),信号策略就创建出来了。

消息里的每个字段是什么意思

欧易的《OKX信号策略警报规范2.0》分两节:A 节给用 strategy.* 函数的 Pine 策略,B 节是「通用兼容」格式,指标、图表、手动警报都用它。两种格式兼容,欧易按收到的消息自动识别是哪一种。

欧易《OKX信号策略警报规范2.0》B 节警报消息规范概述表,列出 action、instrument、signalToken、timestamp、maxLag、orderType、orderPriceOffset 的类型和取值
欧易帮助中心《OKX信号策略警报规范2.0》B 节参数表,2026-09 截图。maxLag 一行写着默认为60,和同页正文的 30 秒对不上,见本节末尾。

B 节参数按下表理解:

字段必填?填什么
action必填ENTER_LONG 开多 / ENTER_SHORT 开空 / EXIT_LONG 平多 / EXIT_SHORT 平空
instrument必填TradingView 占位符 {{ticker}},例如 BTCUSDT.P;或 OKX 的 instId,例如 BTC-USDT-SWAP
signalToken必填创建信号时自动生成的那串
timestamp必填{{timenow}},返回 UTC 时间,格式如 2023-06-01T17:38:10Z
maxLag可选最大可接受延迟,单位秒,取 1 到 3600 的整数
orderType可选*market 或 limit
orderPriceOffset可选**限价偏移,取 0 到 100,单位 %
investmentTypeamount可选*投资类型与数量

星号的意思:* 表示创建信号策略时没配置任何设置,这几个参数就必须写进消息;** 表示订单类型为限价时必填。

下面两条照欧易《OKX信号策略警报规范2.0》B 节示例 1:先开多 10 张,再平掉全部多仓。

{
  "action": "ENTER_LONG",
  "instrument": "BTCUSDT.P",
  "signalToken": "你的signalToken",
  "timestamp": "{{timenow}}",
  "orderType": "market",
  "investmentType": "contract",
  "amount": "10"
}
{
  "action": "EXIT_LONG",
  "instrument": "BTCUSDT.P",
  "signalToken": "你的signalToken",
  "timestamp": "{{timenow}}",
  "orderType": "market",
  "investmentType": "percentage_position",
  "amount": "100"
}

官方示例里数值都写成带引号的字符串,示例本身没带 maxLag。

A 节的 investmentType。进场信号的 investmentType 默认是 percentage_investment,出场默认是 percentage_position。官方强烈建议把 investmentType 设成 base,amount 设成 {{strategy.order.contracts}},这样欧易的下单量和 TradingView 策略里的数量一致。欧易生成的「TradingView - 模板」本来就是这么写的,maxLag 那一项写的是 60。

用 base 时,TradingView 策略属性里「订单数量」的三种模式,在信号策略里分别这样换算(例子取自欧易原文):

TradingView 订单数量模式信号策略怎么理解官方例子
合约就是交易币数量
货币金额按计价货币折算成交易币ETHUSDT.P 价格 1000,数量 100 → 0.1 ETH
权益百分比按资金比例折算初始资金 10000、10%、价格 1000 → 1 ETH

B 节列出的投资类型:买入信号可选固定保证金、固定张数、可用保证金比例、初始投资额比例;卖出信号是持仓比例。「初始投资额比例」的基数会变:创建时投入 1000 USDT,之后手动追加 1000 USDT,计算基数就变成 2000 USDT。

消息里不带订单字段、策略里也没设的时候,规范页写了默认做法:开仓信号用市价单,单个交易对按 100%、多个交易对按 50% 的比例下单;平仓信号收到后平掉 100% 持仓。两边都设了的,以欧易策略里的参数为先——比如策略设市价、信号写限价,按市价走。不过同一页参数表的星号说明又写着「创建策略时没配置,这几个参数必填」,两处说法对不上;稳妥的做法是策略里配好,或者消息里写全。

用限价单时,挂单价按规范原文的四条公式算:

操作限价计算
开多[1-(偏移/100)]*买一价
开空[1+(偏移/100)]*卖一价
平多[1+(偏移/100)]*卖一价
平空[1-(偏移/100)]*买一价

开多、平空挂价不高于买一价,开空、平多不低于卖一价;偏移填 0 就挂在买一/卖一,填得越大离得越远。

maxLag 默认值。规范页上 maxLag 的参数表写「默认为60」,讲 maxLag 的正文小节写「默认设置为30秒」,两处不一致。建议每条警报消息都显式写上 maxLag,不依赖默认值。它限定的是 TradingView 发出(timestamp)到欧易接收处理之间的最长秒数,可填 1 到 3600。填得太小,从警报触发到欧易处理之间稍有耽搁,就可能报「超过允许的最大滞后时间」;填得太大,这道检查就拦不住耽搁很久才到的信号。按你的周期和对滑点的容忍度挑一个数,写死在消息里。

警报响了却没下单?按你看到的状态查

《交易信号策略常见问题》给的排查顺序分两步:先看 TradingView 的警报日志,确认警报真的触发了;再去欧易策略详情里的「历史事件」,刷新后找和触发时间对应的记录。TradingView 发来的信号,包括消息里的错误,都会记在历史事件里。对着下表找你现在的状态:

你看到的问题出在哪怎么处理
TradingView 警报日志里没有这次触发警报根本没发出回 TradingView 查警报条件、到期时间是否已过
警报日志有触发,欧易「历史事件」里没有记录地址或 signalToken 对不上核对 Webhook URL 是否与信号配置里给的一致(实盘、模拟盘别混);核对 signalToken 是否一致
TradingView 警报日志的 Webhook status 显示送达失败请求没送到欧易核对警报里的 Webhook URL 有没有粘错;确认 TradingView 账户的两步验证还开着
警报日志有触发但没下单,警报里的交易对没在策略里勾选没选的交易对,信号会被过滤在策略里加上这个交易对,或者改警报的 instrument
历史事件有记录,报「交易产品类型不正确 (51000)」instrument 格式错BTCUSDT 改成 BTCUSDT.P,或者改用 BTC-USDT-SWAP
报「超过允许的最大滞后时间」从 timestamp 到欧易接收处理,超过了 maxLag调高 maxLag;留足了还报错,联系欧易客服
历史事件有记录,报错里提到下单数量或最小下单量数量太小调大数量;模拟盘与实盘合约面值不同,模拟盘能下的数量,切实盘后要重新算
已持有其他交易对的仓位,新交易对的开仓警报触发了,却没开仓触发了「最大持仓数量」限制见下一节第 2 条
策略状态一直是「等待信号中」还没收到开仓信号等开仓信号触发。它和交易员带单不同,没法指定什么时候触发。TradingView 日志里已经有开仓触发的,按表里第 2 行查

历史事件里有记录、但报的错表里没有,就点开详情,拿报错内容逐个字段对照《OKX信号策略警报规范2.0》改。

上线前要知道的 5 条限制

1. 信号数量有上限。自定义信号最多 500 个,模拟交易里最多 100 个。

2. 最大持仓数量会拦信号。这个参数限制同时持有几个不同标的的仓位。新信号如果会让总持仓数超过上限,会被拦下;上一个新增仓位的信号还在下单中,新来的信号也会被拦。同一个标的加仓不计入,那由「是否允许加仓」(multiple entry)控制。一个策略挂了多个交易对时,这个数要结合你的信号频率来定。

3. 信号广场的回测年化已计入手续费。策略交易页往下拉有「信号广场」。欧易说明平台已把手续费纳入回测,历史数据全量重算,所以年化数值变低属于正常。回测按 Lv1 永续合约费率算:maker 0.02%、taker 0.05%,市价单按 taker、限价单按 maker。你账户的实际费率不一定是这一档,回测数字也不代表以后的表现,只能当参考。

4. 第三方程序发信号要先找客服。不走 TradingView、从第三方固定 IP 地址向欧易发请求的,要先联系欧易客服并说明理由,否则所有外部信号默认视为无效。欧易的设置教程附录里给了 Python 发 Webhook 请求的示例代码。

5. 策略结束后资产不是马上到账。资产要等待结算时间结束才会回到交易账户。

风险提示:信号策略交易的是永续合约,带杠杆,行情反向时亏损可能很快扩大,甚至被强平。信号来自你自己的脚本或他人提供,不保证盈利;回测结果不代表未来表现。网络延迟、消息格式错误、参数限制都可能导致漏单或在意料之外的价格成交。欧易并非在所有国家和地区都提供服务,开通前先确认所在地是否允许。这些是设置说明,不构成投资建议。

常见问题

欧易信号策略能做现货吗?

不能。欧易帮助中心《交易信号策略常见问题》写明目前只支持永续合约,不支持现货交易;杠杆可以在策略里配置。

模拟盘能接 TradingView 警报吗?

能。入口在 交易 → 模拟交易 → 策略交易 → 策略广场 → 信号策略 → 创建。模拟盘的 Webhook URL 是 https://www.okx.com/pap/algo/signal/trigger,和实盘不同;模拟盘与实盘的合约面值也不同,切到实盘前要重新算下单数量。

报错 51000 是什么意思?

欧易提示「交易产品类型不正确 (51000)」,原因是 instrument 字段格式不对,例如写成 BTCUSDT,漏了 .P。改成 BTCUSDT.P,或者直接用 OKX 的 instId 写法 BTC-USDT-SWAP。

Webhook URL 或警报消息忘了保存,去哪找?

在信号视图里点「查看配置」,或者从策略详情里的信号配置链接进去,都能再看到。

一个 TradingView 信号能同时驱动几个欧易策略?

可以挂 2 个以上策略,它们按同一信号执行,每个策略可以设不同的交易对、杠杆和保证金。

整条链路建议先在模拟盘跑通,还没开过模拟盘的可以看欧易模拟盘入门