交易所对接

Bitget Reality API 8/11:1/sec/UID 限速接 webhook

2026-09-07·7 分钟阅读

Bitget Reality API 在 8 月 11 日悄悄变天:changelog 把 Reality Order 的下单/撤单 endpoint 从白名单改成全用户开放。任何 UTA(Unified Trading Account)账户都能程式化下 rToken 代币化美股的单,这件事现在真的不难。

没有人先跟你讲的是:同一则 changelog 底下藏了一行「default rate limit: 1/sec/UID」。webhook——也就是 TradingView 把 alert 自动转发到你服务器的那条通道——一有并发信号,第 2 笔就会撞 429,信号会安静地被丢掉。

这篇不评论 rToken 适不适合买(那是投资判断,本文不做),也不比较谁家的代币化股票更好——目前只有 Bitget 开这条 API。我们只讲两件事:changelog 这行字到底改了什么、以及 1/sec/UID 这个门槛对 webhook 自动化系统的实际影响。

先讲结论
Reality Order 的默认限速是 1/sec/UID,也就是每个 UTA 账户(一个 UID)每秒只能送 1 笔 place-reality-order 请求给 Bitget。不是每支 API key 各 1 次、也不是每个 IP 各 1 次。共用同一个 UTA 账户的多条策略同时触发,第 2 条起会被 Bitget 端挡回 429。要 30/sec/UID 得回头联系 BD 申请。

Bitget Reality API 的 changelog 这一条到底写了什么

Bitget UTA API 的 changelog 页面 2026-08-11 这一条标题是「Place/Cancel Reality Order: Now open to all users」。改动的两个 endpoint 是 /api/v3/trade/place-reality-order/api/v3/trade/cancel-reality-order。正文的关键句只有两行。

第一行:「These endpoints no longer require whitelist access.」——这两支 endpoint 不再需要白名单。第二行:「Default rate limit: 1/sec/UID; whitelisted users: 30/sec/UID (users can contact your BD/RM to apply).」——默认限速是 1/sec/UID,白名单用户 30/sec/UID,要申请请联系 BD 或客户经理。

1/sec
默认 rate limit(per UID)
30/sec
申请白名单后可到的上限
2 支
这次拿掉白名单的 endpoint 数
endpoint 说明页还没同步更新
Reality Order 的两支 endpoint 说明页——/api-doc/uta/trade/Place-Reality-Order 与对称的 Cancel-Reality-Order——到查证当下仍写着「Rate limit: 10/sec/UID」「only available for whitelisted UIDs, please contact BD if needed」,跟 changelog 对不起来。Reality Trading Guide 本身已同步 changelog,落差只在这两支 endpoint 的 spec 页。以 changelog 为准——它是变更当下唯一有日期戳的文件。同一份 API doc 内不同页面说法不一致,本身就是提醒:交易所文件是分散维护的,不要只看单一页面。

rToken 是什么、能交易哪些

Reality 是 Bitget 生态系里的 RWA(real-world assets,真实世界资产)发行平台,第一阶段主要做的是代币化美股与 ETF。Bitget Academy 的原文写「Each rToken is linked to a corresponding underlying asset, such as a publicly traded U.S. stock or ETF」——rToken 代表对某支美股或 ETF 的「economic exposure」(经济敞口),不是股东权利。

命名规则是原本的美股代号前面加 r,例如 rAAPLUSDT(Apple)、rMUUSDT(Micron)。/api/v3/market/instruments 每笔 instrument 的响应都有 isReality 字段(值是 "yes""no")——它是 response 字段、不是 query 参数,抓整份清单回来后自己在 client 端筛 isReality === "yes"。名单会随 Bitget 上下架调整,本文不列固定清单。

拿掉白名单的只有 place 跟 cancel,其他都还锁着

endpoint8/11 起白名单状态备注
place-reality-order(REST)全用户开放1/sec/UID,白名单 30/sec
cancel-reality-order(REST)全用户开放同上
Reality OrderBook(REST 深度)仍需白名单没白名单抓不到实时深度
Reality Fills(平台成交回报)仍需白名单只能自己记录下单结果
Reality Orderbook 频道(WebSocket)仍需白名单实时深度也是白名单
下单/撤单(WebSocket)不支持只能走 REST
Modify Order、batch place/cancel不支持要改单就是先 cancel 再 place
下单开了,深度没开
市场数据层还是白名单。没白名单抓不到实时 order book 深度,也拿不到平台级成交回报——你只能自己从下单 response 记录成交价量。这条 API 目前比较像是给「策略决定好方向、只是要一条下单管道」的用途;要做 market-making、latency arbitrage、或需要看深度做动态挂单,这条路目前还不够。

1/sec/UID 这条门槛的意思

rate limit 这件事每个交易所都有,Bitget 这条的计算单位是 UID。不是每支 API key 各 1 次、不是每个 IP 各 1 次,也不是每个 symbol 各 1 次——同一个 UTA 账户产生的所有 place-reality-order 请求,全部共用这 1/sec 的预算。

对 webhook 自动化的实际后果:假设你有 3 条 Pine 策略跑在 1 分钟 K 线上,某根 K 线收线时同时触发,三笔 place-reality-order 几乎同时到达 Bitget 端。第 1 笔会成功,第 2 与第 3 笔会拿到 429 错误,信号就这样消失。这种错不会吵——log 里就一行 429,你的策略以为单下出去了,实际上什么都没发生。

信号进来后该怎么分流

1
并发信号有没有本地 rate limiter 拦?
没有直接送 Bitget,第 2 条起会拿到 429
有(token bucket 每秒补 1)信号依序送出,延迟 1~3 秒但不会漏
2
拿到 429 之后怎么办?
当作单下失败策略以为进场了,实际没进——最糟情况
等 1 秒重送,最多 3 次大多能救回,仍失败就明确 log 出来
3
多策略要更高 throughput 怎么办?
都共用同一个 UID就是 1/sec 上限,或去申请白名单 30/sec
拆成多个 UTA sub-account各 sub-account 有自己的 UID,各自 1/sec 计算

你在自己的 webhook 端该做什么

  • webhook 收到信号后先过本地 token bucket(容量 1、每秒补 1)再丢给 Bitget,宁可让策略延迟 1 秒也不要让信号被 Bitget 端挡回 429
  • Bitget 回 429 时等 1 秒后重送,最多 3 次;仍失败就明确 log 出来——这是 webhook 系统的常态,不是要修的 bug
  • 多策略共用同一个 UTA key 时,把「策略 ID」写进 Bitget 的 clientOid 字段,事后对账才分得清楚是哪条策略的单
  • 不要让多个 K 周期同时触发同一支策略;真的无法避免,考虑拆到不同 UTA sub-account 各自跑
本地 rate limiter 比靠 Bitget 端挡更好
被 Bitget 挡回是 429 错误,你的策略拿到的是「失败」,不是「延迟」。本地排队拿到的是「延迟 1~3 秒」,信号还会执行——对 K 线收线触发的策略几乎没差,但避免了「信号安静地被丢掉」这件事。这是这个站反复讲的原则:错误不会吵,它会安静地坏掉;能在本地挡下的 race condition 就不要留给远端。

Reality Order 的下单字段长什么样

json
{
          "category": "SPOT",
          "symbol": "rAAPLUSDT",
          "side": "buy",
          "orderType": "limit",
          "qty": "1",
          "price": "180.50",
          "clientOid": "strategy-42-signal-001"
        }
字段必填说明
category选填SPOT(默认)或 MARGIN
symbol必填Reality 专用符号,格式 r + 美股代号 + USDT
side必填buy / sell
orderType必填limit / market
qty必填market buy 用 quote coin,limitmarket sell 用 base coin
price有条件orderType=limit 时必填
clientOid选填自定订单 ID,对账强烈建议填

Place Reality Order 请求字段(来源:Bitget API doc /api-doc/uta/trade/Place-Reality-Order,查证日期 2026 年 8 月)

Reality 走 Reality 专用 endpoint,不与一般 UTA 共用
一般 UTA 的 place-order endpoint 不吃 Reality 的 symbol。你如果照一般 UTA spot 的下单逻辑、只是把 symbol 换成 rAAPLUSDT,会被拒绝。Reality Order 必须走 /api/v3/trade/place-reality-order、Cancel 走 /api/v3/trade/cancel-reality-order,路由完全独立。

TVSBot 目前的位置

先讲清楚:TVSBot 目前的 7 家交易所整合里,Bitget 是有的,但范围只到 spot 与 perpetual futures——Reality Order 还没接。Reality 是这个月才拿掉白名单的 endpoint,我们也还没把它排进更新。这篇的目的不是宣布 Reality 是 TVSBot 现有功能,是把这个新 API 的机制讲清楚,因为读者里有些人会自己接。

对于已经用 TVSBot 接 Bitget spot/perp 的读者,rate limit 这件事我们在 webhook 收讯端有做:收到 alert 之后同 token 60 秒内最多 60 条、同 IP 30 秒 30 条(backend/app/services/rate_limit.py)。这是收讯端的 throttle,跟 Bitget 端的 1/sec/UID 是两层独立的限速。要手动接 Reality 的话,Bitget 那层的 rate limit 还是要自己在下单模块处理。

诚实的一段:我们没有实测 Reality 的成交行为

这篇描述的是 API 白纸黑字的部分:changelog 原文、endpoint 的 spec、rate limit 的官方数字。但实际下 rToken 单的成交深度、滑点、非美股交易时段的行为,我们没有实测。Reality 是新产品,代币化美股在亚洲时段的流动性通常较差,这几件事只能你自己下小单试——文件不会告诉你当下的 order book 长什么样子。

常见问题

Bitget 官方那个 30/sec/UID 白名单怎么申请?
changelog 原文只写「users can contact your BD/RM to apply」(可以联系你的商务或客户经理申请)——页面上没有表单。我们没有实际申请过的经验可以分享,只能贴原文。
1/sec/UID 是硬性上限吗?短时间内可以累积 credit 吗?
官方 doc 只写「default rate limit: 1/sec/UID」,没有写是 token bucket 还是 fixed window。稳妥的假设是 fixed window——每一秒一个名额,用不完不会累积。要更精细的答案需要实测,本文查证时没做。
如果我有 2 个 UTA sub-account,各自算 1/sec 吗?
rate limit 的计算单位是 UID。sub-account 是不同的 UID,理论上各自独立计算 1/sec——这是我们从「per UID」四个字推出来的结论,不是 Bitget 官方写的一句话。实际上线前建议先开一单试看看 response header 的 rate limit 信息。
TVSBot 什么时候会支持 Reality Order?
没有时间表可以承诺。Bitget 这条 API 是 8/11 才对所有用户开放,我们也还在观察需求。如果你有具体的 use case 想告诉我们,写信给 support 或到 Discord 讲一声——需求集中的方向我们会排前面。

Get started

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

把 TradingView 的信号接进 Bitget spot/perp 交给 TVSBot——用你自己的 API key,先 dry-run,账户层级风控自己设。Reality Order 目前要自己接,这篇的机制对你的下单模块也适用。

免费开始使用