限频规则
访问频率限制主要分为两个维度。
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.其他错误处理
如果遇到其他错误,可以参考错误处理解决。