限頻規則
訪問頻率限制主要分為兩個維度。
IP維度是基於使用者的IP出口進行限制的,目前頻率設定較高,使用者一般不會觸發此類限頻規則。
使用者維度的限頻規則是基於使用者的交易帳戶進行限制的,包括短週期限頻
和長週期限頻
,他們的區別如下:
短週期限頻
:主帳號和其創建的子帳號都獨立地受到的短週期限頻
的約束。這意味著每個帳號都有自己的限制和配額,與其他帳號無關;長週期限頻
:主帳號及其所建立的子帳號共用一個限頻額度。這意味著所有帳號的請求都會影響到這個共享額度,並且所有帳號的請求都會從同一個額度中扣除。
IP維度限頻規則
限頻:400/s
用戶維度限頻規則
使用者維度的限頻分為短週期限頻
和長週期限頻
兩種模式。
短週期限頻
偏向於控制短期的請求量,防止API 被惡意使用。長週期限頻
偏向於控制較長時期內請求質量,防止API 資源濫用。
短週期限頻規則
目前的限頻規則是基於分組的,分組的對應關係可見以下章節。
這個限頻策略是基於請求路徑分組,旨在控制特定路徑上的請求頻率。具體描述如下:
分組:請求路徑被分成多個群組,每個群組包含一組相關的路徑。具有相似功能或特徵的路徑會被分到同一個組別。
請求餘裕:每個分組都有一個共享的請求餘裕,表示在特定時間內該分組允許的請求數量。餘裕是根據限頻頻率動態恢復。
限頻頻率:每個分組會有一個限頻頻率,即每秒最大的請求餘裕恢復量。例如假設請求頻率為20r/s,則表示請求餘裕每秒恢復20 req。
限頻策略:當收到一個請求時,系統首先決定該請求所屬的分組。然後,系統將檢查該分組的請求餘裕是否允許處理該請求。
a. 如果請求餘裕大於零,則允許處理該請求,並將餘裕減少。請求被處理後,系統可以傳回對應的結果。
b. 如果請求餘裕為零,則拒絕處理該請求。系統將傳回一個錯誤碼,表示請求已經超過使用限制。
1.帳戶維度短週期限頻規則(現貨)
- 主帳號及子帳號分別限頻,互不影響
接口類型 | 限頻 | 包含的接口路徑 |
---|---|---|
現貨下單&改單 | 30r/1s | POST /spot/order *下委托單 |
POST /spot/stop-order *下計劃委托單 | ||
POST /spot/modify-order *修改委托單 | ||
POST /spot/modify-stop-order *修改計劃委托單 | ||
現貨撤單 | 60r/1s | POST /spot/cancel-order *取消委托單 |
POST /spot/cancel-stop-order *取消計劃委托單 | ||
現貨批量下單 | 10r/1s | POST /spot/batch-order *下批量委托單 |
POST /spot/batch-stop-order *下批量計劃委託單 | ||
現貨批量撤單 | 40r/1s | POST /spot/cancel-batch-order *批量取消委托單 |
現貨查詢訂單 | 50r/1s | GET /spot/order-status *查詢訂單狀態 |
GET /spot/batch-order-status *批量查詢訂單狀態 | ||
GET /spot/pending-order *獲取未完成委托單 | ||
GET /spot/pending-stop-order *獲取未完成計劃委托單 | ||
現貨查詢訂單曆史 | 10r/1s | GET /spot/order-deals *獲取用戶訂單成交 |
GET /spot/user-deals *獲取用戶成交 | ||
GET /spot/finished-order *獲取已完成委托單 | ||
GET /spot/finished-stop-order *獲取已完成計劃委托單 | ||
現貨賬戶改動 | 10r/1s | POST /account/settings *修改賬戶設置 |
POST /assets/margin-borrow *杠杆借幣 | ||
POST /assets/margin-repay *杠杆還幣 | ||
POST /assets/transfer *資産劃轉 | ||
POST /account/subs *創建子賬號 | ||
POST /account/subs/frozen *禁用子賬號 | ||
POST /account/subs/unfrozen *取消禁用子賬號 | ||
POST /account/subs/api *創建子賬號 APIKEY | ||
POST /account/subs/edit-api *編輯子賬號 APIKEY | ||
POST /account/subs/delete-api *刪除子賬號 APIKEY | ||
POST /account/subs/transfer *子賬號間資産劃轉 | ||
POST /assets/renewal-deposit-address *更新充值地址 | ||
POST /assets/withdraw *申請提現 | ||
POST /assets/cancel-withdraw *取消申請提現 | ||
現貨賬戶查詢 | 10r/1s | GET /assets/spot/balance *獲取現貨賬戶余額 |
GET /account/trade-fee-rate *獲取賬戶交易費率 | ||
GET /assets/amm/liquidity *獲取 AMM 賬戶流動性 | ||
GET /assets/financial/balance *獲取理財賬戶余額 | ||
GET /assets/credit/info *獲取授信賬戶信息 | ||
GET /account/subs/api *獲取子賬號 APIKEY 列表 | ||
GET /account/subs/api-detail *獲取子賬號 APIKEY 詳情 | ||
GET /assets/deposit-address *獲取充值地址 | ||
現貨賬戶曆史數據查詢 | 10r/1s | GET /assets/withdraw *獲取提現記錄 |
GET /assets/deposit-history *獲取充值記錄 | ||
GET /assets/statement *獲取用戶流水 | ||
GET /assets/transfer-history *獲取資産劃轉記錄 | ||
GET /assets/margin/borrow-history *獲取杠杆賬戶借幣記錄 | ||
GET /account/subs/transfer-history *獲取子賬號間劃轉記錄 |
2.帳戶維度短週期限頻規則(合約)
- 主帳號及子帳號分別限頻,互不影響
接口類型 | 限頻 | 包含的接口路徑 |
---|---|---|
合約下單&改單&調整倉位 | 20r/1s | POST /futures/order *下委托單 |
POST /futures/stop-order *下計劃委托單 | ||
POST /futures/close-position *市價全部平倉 | ||
POST /futures/adjust-position-margin *調整倉位保證金 | ||
POST /futures/adjust-position-leverage *調整倉位杠杆 | ||
POST /futures/set-position-stop-loss *設置倉位止損 | ||
POST /futures/set-position-take-profit *設置倉位止盈 | ||
POST /futures/modify-order *修改委托單 | ||
POST /futures/modify-stop-order *修改計劃委托單 | ||
合約撤單 | 40r/1s | POST /futures/cancel-order *取消委托單 |
POST /futures/cancel-stop-order *取消計劃委托單 | ||
合約批量下單 | 10r/1s | POST /futures/batch-order *下批量委托單 |
POST /futures/batch-stop-order *下批量計劃委託單 | ||
合約批量撤單 | 20r/1s | POST /futures/cancel-batch-order *批量取消委托單 |
POST /futures/cancel-batch-stop-order *批量取消計劃委托單 | ||
合約查詢訂單 | 50r/1s | GET /futures/pending-order *獲取未完成委托單 |
GET /futures/pending-stop-order *獲取未完成計劃委托單 | ||
GET /futures/order-status *查詢訂單狀態 | ||
合約查詢訂單曆史 | 10r/1s | GET /futures/finished-order *獲取已完成委托單 |
GET /futures/finished-stop-order *獲取已完成計劃委托單 | ||
合約賬戶查詢 | 10r/1s | GET /assets/futures/balance *獲取合約賬戶余額 |
GET /futures/position-funding-history *獲取倉位資金費率曆史記錄 | ||
GET /futures/pending-position *獲取當前持倉 |
存取會觸發限頻的介面時,會在HTTP回應頭裡回傳如下兩個Header
X-RateLimit-Limit
。該值表示該介面所屬的群組每秒最多允許的存取次數。X-RateLimit-Remaining
。該值表示該介面所屬的群組目前剩餘的存取次數。X-RateLimit-LongPeriod-{period}-Remaining
。該值表示接口所屬的組當前配置長周期剩余的訪問次數,period 表示限制周期,例如 1H、4H、8H 或 24H。
長週期限頻規則
長週期限頻主要會評估使用者的請求量
和請求品質
兩個維度,來決定是否限制使用者在較長的週期
內的請求總量。其中請求品質
主要包含有效成交率
和訂單平均存活時間
等其他一些參考指標。
其中,以上提到的概念分別解釋如下:
週期
。不同於短週期限頻,這裡的週期是較長的統計週期,例如1h、4h、8h 或24h 等請求量
。在一個週期
內,某一個分組
中的所有請求量總和請求品質
。主要包含有效成交率
和訂單存活時間
等其他一些參考指標有效成交率
。在一個週期內的有效成交率
=有效訂單數(有成交的已完成訂單)/總訂單數訂單平均存活時間
。在一個週期內,訂單的平均存活時間(從創建時間到完成時間的差值即為存活時間)
只有同時在請求量
和請求品質
兩類指標都超過了限制,才會被長週期限頻所影響。
長週期限頻會在一個週期結束後重置,週期的統計是按照整點來進行的,也就是假設長週期限頻的周期為8h,那麼一天會有三個統計週期,分別是0~8h
, 8~16h
, 16~24h
。
在觸發了長週期限頻後,api 請求會被至於低速模式
下,在這個模式中,每個分組的允許速率將會被大量的降低,但並不會限制使用者進行撤單。
訪問會觸發長周期限頻限頻的接口時,會在HTTP響應頭裏返回如下一個Header
X-RateLimit-LongPeriod-{period}-Remaining
。該值表示接口所屬的組當前配置長周期剩余的訪問次數,period 表示限制周期,例如 1H、4H、8H 或 24H。例如:X-RateLimit-LongPeriod-24H-Remaining。另外,有可能同時存在多條生效的長周期限頻規則,即會同時返回多個不同周期的 Header。
3.觸發限頻後常見錯誤碼及處理方式
常見錯誤碼 | 建議處理方式 |
---|---|
3008 | 服務間歇繁忙,請稍後重試 |
4001 | 服務暫時無法使用,請稍後重試 |
4213 | 觸發限頻,建議調整策略,降低請求頻率 |
4.其他錯誤處理
如果遇到其他錯誤,可以參考錯誤處理來解決。