用币安API做量化交易或数据分析时,最头疼的问题之一就是频率限制。请求太快会被封IP,太慢又影响策略执行。
币安API的频率限制
注册币安并创建API Key后,需要遵守以下频率限制:
REST API限制
请求权重(Request Weight)
币安不是简单地限制每分钟多少次请求,而是使用"权重"系统。不同的接口消耗不同的权重:
- 普通行情查询:权重1-5
- 深度数据查询:权重5-50(取决于请求深度)
- 下单操作:权重1
- 账户信息查询:权重5-10
默认限额:
- 每分钟1200权重(IP维度)
- 每10秒钟100次下单(账户维度)
- 每天200000次下单(账户维度)
WebSocket限制
- 单个连接最多订阅200个数据流
- 每个IP最多允许的WebSocket连接数有限制
- 每个连接每秒最多发送5条消息
怎么知道自己用了多少?
每次API响应的Header中会返回当前的使用情况:
X-MBX-USED-WEIGHT-1m:当前1分钟已使用的权重X-MBX-ORDER-COUNT-10s:当前10秒的下单次数X-MBX-ORDER-COUNT-1d:当前日的下单次数
读取这些Header信息来监控你的使用量。
超限了会怎样?
HTTP 429
当你超过频率限制时,API会返回HTTP 429错误(Too Many Requests)。此时:
- 该IP或账户会被暂时限制
- 需要等待冷却时间后才能恢复
- 冷却时间通常是几秒到几分钟
HTTP 418
如果你持续超限不收敛,可能会收到418错误,意味着你的IP被封禁了更长时间(从几分钟到几天不等)。
怎么避免超限?
1. 使用WebSocket替代轮询
获取实时行情不要用REST API反复轮询,改用WebSocket数据流。WebSocket是推送模式,不消耗REST API权重。
// 不推荐:每秒调用REST API获取价格
// 推荐:订阅WebSocket获取实时价格推送
2. 合并请求
如果需要查询多个交易对的信息,用批量接口一次性获取,而不是一个个查。
3. 缓存数据
不需要实时性的数据(如交易规则、币种信息)不要每次都请求,本地缓存起来定期刷新。
4. 监控权重使用
在代码中记录每次请求的权重消耗,接近限额时自动降速。
5. 合理安排请求频率
用延时控制请求频率,而不是一股脑全部发出去。
不同账户等级的限额差异
VIP等级越高,API频率限制越宽松:
- 普通用户:标准限额
- VIP 1-3:略有提升
- VIP 4+:更高的权重限额和下单限额
- 做市商账户:最高限额
如果你的策略需要更高的频率,可以考虑提升VIP等级(通过增加交易量或持有BNB)。
常见问题
Q:用多个IP能绕过限制吗? 权重限制有IP维度也有账户维度。用多个IP可以绕过IP维度的限制,但账户维度的下单限制绕不过。
Q:测试环境的限额一样吗? 测试网(testnet)的限额和主网可能不同。
Q:限额会变化吗? 会。币安可能根据系统负载情况调整限额,关注公告获取最新信息。
如果你还没安装APP可以先下载币安APP。
总结
币安API使用权重系统控制频率,默认每分钟1200权重。超限会收到429或418错误。优化策略包括使用WebSocket、合并请求、缓存数据和监控权重。VIP等级越高限额越大。