系统可靠性 · 容灾设计

TradingView 或交易所宕机时,你的自动化策略会发生什么?
容灾设计怎么做

2026-07-22·6 分钟

「交易所总有断线保护吧?」有,但不一定轮得到你。Bybit 的断线自动撤单(官方名称 Disconnect Cancel All)文档里写得很直白:仅限机构客户,连 VIP 客户都不能用。 也就是说,如果你是在 Bybit 上跑自动化策略的散户,这道你以为存在的安全网,根本开不了。

这篇处理的就是这类差别:上游出事的那一刻,哪些保护是真的存在,哪些只存在于你的想象。 先讲结论——你开的仓位不会因为断线而消失,但你的止损有可能形同不存在。

重点先说
三件事。一、我们查过的断线自动撤单文档没有一份提到「仓位」,全部只讲「挂单」。 二、那个能替你撤掉挂单的机制不是人人有份,Bybit 官方明文限定机构客户。 三、Bitget 是我们查的四家里唯一把精确的每周维护时段写进官方 API 文档的

你的止损放在哪里,决定了断线那一刻会发生什么

止损有两种放法,看起来都叫止损,断线时的命运却完全相反。这是全篇最该先搞清楚的一件事。

1
你的止损实际上放在哪里?
真的挂在交易所上的订单(stop-limit、stop-market,或 TP/SL 绑定单)它放在交易所自己的撮合引擎里,不依附你程序的连接。只要引擎本身正常运行,这张单不会因为你断线而受影响。
策略逻辑里决定何时发出平仓单的判断(没有真的挂在交易所上的单)只有在价格触及条件的那一刻,TradingView、网络、你的服务器、交易所 API 全部同时正常,才会真的执行。任何一环断了,仓位就不会被关掉——交易所那边根本没有一张单子在等着。
2
你有设置断线自动撤单,而且真的有资格用吗?
有设置,而且有资格心跳超时,交易所会连你挂着的止损单一起撤销。要确认回报频率够高,不会误触发。
没设置,或者这家交易所你没资格用(例如 Bybit 的散户/VIP)断线不会触发任何自动撤单,你挂着的止损单会继续等引擎正常触发它——这也是保护性止损单本来就该有的行为。

这也是为什么 TVSBot 对期货仓位是把止盈/止损直接下成挂在交易所上的绑定单(bracket order),而不是只靠软件逻辑追踪一个价位——挂在交易所的单子扛得住你断线,没发出去的逻辑不行。

交易所的断线自动撤单,不是人人有份

所谓断线自动撤单(dead man's switch),是你持续调用一个接口当心跳, 心跳停止超过设定的倒计时秒数,交易所就自动撤销你挂着的订单。四家的资格条件差很多。

BinanceOKXBybitBitget
官方名称Auto-Cancel All Open Orders(USDⓈ-M 合约)Cancel All AfterDisconnect Cancel All (DCP)CountDown Cancel All
普通 API 用户可用可以——但仅限 USDⓈ-M 合约仅限 UTA 账户
官方注明官方文档是 USDⓈ-M 合约端点——只做现货的人没有这个机制官方明确说不应该把这个机制当成交易策略的一部分官方文档限定仅机构("Ins")客户可用——VIP 客户都不行传统(非统一交易)账户不支持
最容易被忽略的差别
坊间文章常把这四家并列介绍,好像等级一致。其实不是——Bybit 那一格是连 VIP 等级的 账户都不行。这类功能的资格,常常跟我们整理的 API key 权限清单里讲的账户等级差别是同一类问题:设计容灾方案之前,先确认自己是不是真的用得上。

Bitget 把维护时段写进 API 文档了,其他家没有

每家交易所都会安排计划性维护,差别在于官方愿意把「什么时候」讲到多清楚。以下三家有明确说法:

交易所官方文档怎么写
Bitget官方 API 文档写明固定的例行发版时段——每周二/三/四 14:00–17:00(UTC+8)。这段时间 REST API 可能返回特定错误码、WebSocket 可能断开,官方建议做好重试与重连机制。
OKX有公开 status page 列出具体维护记录。官方 FAQ 另外提到 50004 错误常出现在每天 8/16/24 点(UTC+8)资金费结算时段,服务器压力较大,建议自动化交易避开。
Bybit没有公开网页版 dashboard,改以 GET /v5/system/status 接口返回结构化维护数据。官方明确说:10 秒以内的短暂中断或 WebSocket 断线属正常范围,不会特地公告。

Binance 这边我们查不到 binance.com(全球站)独立的公开事故/状态页,只找到一个返回 normal 或 maintenance 的 GET /sapi/v1/system/status 接口。对照之下,Bitget 是唯一让你 在写程序当下就知道「每周二、三、四下午别排重要动作」的,而不是上线后撞到错误码才发现。

TradingView 那边,官方只承认到哪里

TradingView 有官方 status page:status.tradingview.com,其中有独立的 「Alerts」项目。查证当下显示 Operational,近期与 alert 相关的事件只有一条:「Technical alerts partly unavailable」(Jul 1, 10:14 至 Jul 3, 18:23 GMT,已标记解决)。故障会发生,官方也有公开记录——但从未说明,故障期间该触发却没触发的 alert,服务恢复后会不会补发。

这里要讲精确一点,因为有一套广为人知的 webhook 重发机制常被误以为覆盖了这种情况。它只适用于你自己的接收端服务器出错:返回 5xx(官方原文把 504 排除在外) 会在 5 秒后重发、最多 3 次;返回 504、返回 4xx 或 3 秒内没有响应,一律不重试,直接视为 已送达并丢弃。TradingView 自己服务降级是另一回事。接收端的完整拆解看webhook 延迟那篇;alert 完全没触发的话,这份排查清单先排查更常见的原因。

我们没办法逐字引用的那句话

没有任何一家交易所白纸黑字写过「你断线时仓位不会被关掉」。这个结论是我们自己综合出来的: 每一份断线自动撤单文档都把范围限定在挂单,从来没提过仓位;而强平风险由 完全独立的保证金引擎管理,跟连接状态无关。这是由好几份独立官方文档、用词高度一致所支持的 合理推论——但它终究是推论,不是逐字引用,这个区别我们想讲清楚。

上线前先问自己这几题

答不出来的那几题,就是你的缺口:

  • 我的止损是真的挂在交易所上的一张单,还是只存在策略逻辑里?
  • 我这个账户等级,真的用得上这家交易所的断线自动撤单吗?——不确定就当作没有
  • 交易所明确说「不会公告」的短暂断线(例如 Bybit 的 10 秒以内),我的程序会自己重连重试吗?
  • 出事之后,我分得出来是「alert 根本没送到」还是「送到了但后面处理失败」吗? ——只有事前留下信号记录才做得到
  • 如果挂掉的刚好是我的 dashboard,我还有第二条渠道知道出事、还有办法手动全平吗?

诚实的一段:没有任何设计能保证 100% 不漏单

任何自动化交易架构都保证不了 100% 送达——包括我们自己。TradingView 从未针对自己故障期间 漏掉的 alert 公布任何 SLA;我们也没有替 TVSBot 公布正常运行时间保证,因为我们自己也没有 可以拿出来的公开 SLA。设计能降低漏单的概率、缩小影响范围,但没办法把可能性归零。任何人 如果拿自己的平台讲出相反的话,那句话背后大概是没有东西可以佐证的。

常见问题

交易所挂了,我的仓位会自动被关掉吗?
没有任何一份官方文档直接写明会或者不会。但我们查过 Binance、OKX、Bybit、Bitget 的断线自动撤单机制,范围都严格限定在撤销挂单——没有一份提到仓位。 强平与保证金追加由完全独立的引擎运行,不会参考你的连接状态。
断线时能不能靠交易所自动撤单保护自己?
很看交易所和你的账户等级。Binance 和 OKX 对普通 API 用户开放;Bybit 官方限定仅 机构客户可用,连 VIP 账户都不行;Bitget 的版本只支持统一交易账户(UTA)。
TradingView 故障期间该触发却没触发的 alert,之后会补发吗?
官方没有说明。TradingView 公开的重发机制——返回 504 以外的 5xx 时 5 秒后重发、 最多 3 次——只适用于你自己的接收端服务器出错,跟 TradingView 自己服务降级是两回事。

Get started

想把今天学到的东西自动化跑起来?

TVSBot 对期货仓位会把止盈/止损直接下成真正挂在交易所上的绑定单,每条信号都留记录可回放,并提供 Kill Switch 与有 rate limit 保护的全平仓。

免费开始