币安 API 限速怎么处理 weight 是什么意思
API 限速让大量请求被拒本文讲清 weight order 两套限制和如何优雅退避。
API 限速是量化策略最容易踩的坑。先在 币安官网 创建 API Key,APP 用 币安官方APP(iOS 见 iOS安装教程)。
两套限速
币安 API 有两个独立的限速维度:
1. Weight(权重)
每个接口有 weight 值。每分钟总和不能超过限制。
| 等级 | 每分钟 weight |
|---|---|
| 普通 | 1200 |
| VIP 1 | 2400 |
| VIP 2 | 3600 |
| ... | 一路上去 |
2. Order(订单数)
下单接口的额外限制:
| 时间窗 | 订单数 |
|---|---|
| 10 秒 | 100 |
| 1 天 | 200000 |
任一超限 = 暂时被禁。
各接口 weight
常用:
| 接口 | weight |
|---|---|
| 行情快照 | 1 |
| 订单簿 5 档 | 1 |
| 订单簿 100 档 | 5 |
| 订单簿 1000 档 | 50 |
| K 线 | 1 |
| 下单 | 1 |
| 撤单 | 1 |
| 账户信息 | 10 |
deep order book 拉一次 50 weight,每分钟最多 24 次。
响应头
每次 API 返回 header 里有:
X-MBX-USED-WEIGHT-1M:当前分钟已用 weightX-MBX-ORDER-COUNT-10S:当前 10 秒已下单数
监控这两个值,提前减速。
超限的后果
429 错误:临时禁用,等几秒。 418 错误:再触发 → 永久禁。
418 之后只能等 24 小时甚至几天才解封。不要硬撞。
优雅退避
import time
while True:
try:
result = api_call()
weight_used = int(headers.get('X-MBX-USED-WEIGHT-1M', 0))
if weight_used > 1000:
time.sleep(10) # 减速
return result
except RateLimitError:
time.sleep(60) # 等一分钟
缩减 weight 的技巧
1. 减少深度档位
只要 5 档就别拉 1000 档。weight 5 倍差。
2. WebSocket 替代
价格、订单簿、K 线都可以用 WS 实时推送。WS 不计 weight。
3. 批量接口
/api/v3/batchOrders 一次 5 单。比循环 5 次 5 weight 更便宜。
4. 缓存
不需要每秒都查的数据缓存几秒。
WebSocket 优势
| 数据 | REST weight | WS |
|---|---|---|
| 行情 | 每次 1 | 推送,0 weight |
| 订单簿 | 1-50 | 推送 |
| K 线 | 1 | 推送 |
策略框架:
- WS 实时数据流(无 weight 消耗)
- REST 只在下单 / 撤单时用
跨账户分散
多个 API Key(不同账户)天然分散 weight。
策略:
- 主号 Key 用于下单
- 子号 Key 用于查行情
- weight 池子放大数倍
VIP 提升 weight
VIP 等级越高:
- 每分钟 weight 上限提升
- 部分接口对 VIP 加宽
- 比手续费节省更可观
VIP 1 即让 weight 翻倍。值得。
监控代码
class RateMonitor:
def __init__(self):
self.last_weight = 0
self.alert_threshold = 1000
def update(self, headers):
used = int(headers.get('X-MBX-USED-WEIGHT-1M', 0))
if used > self.alert_threshold:
print(f"WARN: {used} / 1200")
self.last_weight = used
常见错误
1. 循环里全用 REST
每秒下单同时查持仓 + 查 K 线。weight 飞涨。
改用 WS 推送。
2. 不处理异常
429 出现没 sleep,立刻再请求 → 触发 418 永封。
3. 多 Key 共用 IP
虽然 Key 分开但 IP 限速也存在。同一 IP 多 Key 可能合并计数。
4. 不看 weight 头
闷头请求,撞墙才发现。
实盘前测试
testnet 跑高频测试 → 看是否触发 429 → 调整。
线上挂监控告警 → weight 接近上限提前告警 → 自动降速或停。
常见问题
问:429 多久解封? 答:通常几秒到几分钟。期间不要再请求。
问:418 多久解封? 答:1 小时-24 小时。极端情况 7 天。
问:能申诉吗? 答:可以联系客服。但通常没用。等就完了。
问:weight 在不同接口共享吗? 答:是。所有 weight 加起来 1200/min。
问:Order 限速是单 IP 还是单账户? 答:单账户。多 IP 不能绕开。
延伸阅读
限速不可怕,可怕的是不知道有限速。监控好 weight,永远不会被永封。