限頻規則
訪問頻率限制主要分為兩個維度。
IP維度是基於使用者的IP出口進行限制的,目前頻率設定較高,使用者一般不會觸發此類限頻規則。
使用者維度的限頻規則是基於使用者的交易帳戶進行限制的,包括短週期限頻
和長週期限頻
,他們的區別如下:
短週期限頻
:主帳號和其創建的子帳號都獨立地受到的短週期限頻
的約束。這意味著每個帳號都有自己的限制和配額,與其他帳號無關;長週期限頻
:主帳號及其所建立的子帳號共用一個限頻額度。這意味著所有帳號的請求都會影響到這個共享額度,並且所有帳號的請求都會從同一個額度中扣除。
IP維度限頻規則
限頻:400/s
用戶維度限頻規則
使用者維度的限頻分為短週期限頻
和長週期限頻
兩種模式。
短週期限頻
偏向於控制短期的請求量,防止API 被惡意使用。長週期限頻
偏向於控制較長時期內請求質量,防止API 資源濫用。
對於包含確定子請求數量的批次請求,此批次請求消耗的請求餘裕是根據子請求的數量來決定的。舉例如下:
在現貨下批量委託單POST /spot/batch-order
一個批量請求中包含了5 個委託單的下單請求,則該請求會消耗5 的請求餘量,短週期限頻
和長週期限頻
兩個規則都會基於這個數量來進行消耗統計。
目前按子請求進行請求餘裕計算的介面列舉如下:
現貨模組:
- 下批量委託單
POST /spot/batch-order
- 下批次計畫委託單
POST /spot/batch-stop-order
- 批量取消委託單
POST /spot/cancel-batch-order
- 批量取消計劃委託單
POST /spot/cancel-batch-stop-order
合約模組:
- 下批次委託單
POST /futures/batch-order
- 下批次計畫委託單
POST /futures/batch-stop-order
- 批次取消委託單
POST /futures/cancel-batch-order
- 批量取消計劃委託單
POST /futures/cancel-batch-stop-order
目前的限頻規則是基於分組的,分組的對應關係可見以下章節。分組對短週期限頻
和長週期限頻
同時生效。
短週期限頻規則
這個限頻策略是基於請求路徑分組,旨在控制特定路徑上的請求頻率。具體描述如下:
分組:請求路徑被分成多個群組,每個群組包含一組相關的路徑。具有相似功能或特徵的路徑會被分到同一個組別。
請求餘裕:每個分組都有一個共享的請求餘裕,表示在特定時間內該分組允許的請求數量。餘裕是根據限頻頻率動態恢復。
限頻頻率:每個分組會有一個限頻頻率,即每秒最大的請求餘裕恢復量。例如假設請求頻率為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 *修改计划委托单 | ||
POST /spot/batch-order *下批量委托单 | ||
POST /spot/batch-stop-order *下批量计划委托单 | ||
现货撤单 | 60r/1s | POST /spot/cancel-order *取消委托单 |
POST /spot/cancel-stop-order *取消计划委托单 | ||
POST /spot/cancel-batch-order *批量取消委托单 | ||
POST /spot/cancel-batch-stop-order *批量取消计划委托单 | ||
现货批量撤单 | 40r/1s | POST /spot/cancel-all-order *取消全部委托单 |
POST /spot/cancel-order-by-client-id *通过 client_id 取消委托单 | ||
POST /spot/cancel-stop-order-by-client-id *通过 client_id 取消计划委托单 | ||
现货查询订单 | 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 *取消申请提现 | ||
POST /assets/amm/add-liquidity *添加 AMM 账户流动性 | ||
POST /assets/amm/remove-liquidity *减少 AMM 账户流动性 | ||
现货账户查询 | 10r/1s | GET /assets/spot/balance *获取现货账户余额 |
GET /account/trade-fee-rate *获取账户交易费率 | ||
GET /assets/amm/liquidity *获取 AMM 账户流动性 | ||
GET /assets/financial/balance *获取理财账户余额 | ||
GET /assets/margin/balance *获取杠杆账户余额 | ||
GET /assets/credit/info *获取授信账户信息 | ||
GET /account/subs *获取子账号列表 | ||
GET /account/subs/api *获取子账号 APIKEY 列表 | ||
GET /account/subs/api-detail *获取子账号 APIKEY 详情 | ||
GET /account/subs/spot-balance *获取子账号现货余额 | ||
GET /account/subs/info *获取子账号信息 | ||
GET /assets/deposit-address *获取充值地址 | ||
GET /assets/deposit-withdraw-config *获取充提配置 | ||
现货账户历史数据查询 | 10r/1s | GET /assets/withdraw *获取提现记录 |
GET /assets/deposit-history *获取充值记录 | ||
GET /assets/statement *获取用户流水 | ||
GET /assets/transfer-history *获取资产划转记录 | ||
GET /assets/margin/borrow-history *获取杠杆账户借币记录 | ||
GET /assets/margin/interest-limit *获取借币限额 | ||
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 *修改计划委托单 | ||
POST /futures/batch-order *下批量委托单 | ||
POST /futures/batch-stop-order *下批量计划委托单 | ||
合约撤单 | 40r/1s | POST /futures/cancel-order *取消委托单 |
POST /futures/cancel-stop-order *取消计划委托单 | ||
POST /futures/cancel-batch-order *批量取消委托单 | ||
POST /futures/cancel-batch-stop-order *批量取消计划委托单 | ||
合约批量撤单 | 20r/1s | POST /futures/cancel-all-order *取消全部委托单 |
POST /futures/cancel-order-by-client-id *通过 client_id 取消委托单 | ||
POST /futures/cancel-stop-order-by-client-id *通过 client_id 取消计划委托单 | ||
合约查询订单 | 50r/1s | GET /futures/pending-order *获取未完成委托单 |
GET /futures/pending-stop-order *获取未完成计划委托单 | ||
GET /futures/order-status *查询订单状态 | ||
GET /futures/batch-order-status *批量查询订单状态 | ||
合约查询订单历史 | 10r/1s | GET /futures/finished-order *获取已完成委托单 |
GET /futures/finished-stop-order *获取已完成计划委托单 | ||
GET /futures/finished-position *获取历史持仓 | ||
GET /futures/user-deals *获取用户成交 | ||
GET /futures/order-deals *获取用户订单成交 | ||
合约账户查询 | 10r/1s | GET /assets/futures/balance *获取合约账户余额 |
GET /futures/position-funding-history *获取仓位资金费率历史记录 | ||
GET /futures/pending-position *获取当前持仓 | ||
GET /futures/position-adl-history *获取仓位自动减仓历史记录 | ||
GET /futures/position-margin-history *获取仓位保证金变化历史记录 | ||
GET /futures/position-settle-history *获取仓位自动结算历史记录 |
存取會觸發限頻的介面時,會在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.其他錯誤處理
如果遇到其他錯誤,可以參考錯誤處理來解決。