幣安 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,永遠不會被永封。