OKX API 费率接口重大升级:现货与合约将统一“大盘”费率

·

本文面向使用 OKX 开发接口(OKX API) 进行量化交易、自动跟单或账户风控的开发者;将带你快速梳理此次「获取费率」接口升级的核心细节、兼容方案与代码实践,避免上线当天策略报错、费率计算失准等踩坑场景。

1. 背景:为什么要统一费率等级?

自从 OKX 手续费体系升级后,所有币对(现货、杠杆、永续、交割)统一归入同一大类进行阶梯计算。这样做的好处是:

因此,原先返回中的 category(A/B/C)字段即将退役,对所有旧程序无破坏性影响。请求时带或者不带该字段,系统返回的数据完全一致。

2. 接口变动速览

HTTP 路径 未变更,依旧是

GET /api/v5/account/trade-fee

2.1 移除字段

2.2 新增字段

何时会用到?
当你查询 instType=FUTURESSWAP 时,taker/maker 仅代表币本位合约费率;而想拿到USDT 保证金合约费率,则用 takerU/makerU。简单记忆:带 U 的才是 USDT

2.3 映射示意

场景老字段含义新字段含义
现货/杠杆taker/maker 即为费率不变
币本位合约taker/maker 即费率同老字段
USDT 本位合约无字段使用 takerU/makerU

👉 一键查看最新费率样例并在线调试接口

3. 请求示例(Python)

以下代码片段可直接复制到 Jupyter Notebook 或本地脚本测试。

import requests, time, hmac, hashlib, base64, urllib.parse

api_key = 'YOUR_API_KEY'
secret_key = 'YOUR_SECRET'
passphrase = 'YOUR_PASSPHRASE'

def gen_sig(ts, method, path, body):
    message = f'{ts}{method.upper()}{path}{body}'.encode('utf-8')
    mac = hmac.new(secret_key.encode(), message, hashlib.sha256)
    return base64.b64encode(mac.digest()).decode()

def get_fee_rate(instType='SWAP', instId='', uly=''):
    ts = str(time.time())
    path = '/api/v5/account/trade-fee'
    params = {'instType': instType}
    if instId:
        params['instId'] = instId
    if uly:
        params['uly'] = uly
    body = ''
    headers = {
        'OK-ACCESS-KEY': api_key,
        'OK-ACCESS-SIGN': gen_sig(ts, 'GET', path + '?' + urllib.parse.urlencode(params), body),
        'OK-ACCESS-TIMESTAMP': ts,
        'OK-ACCESS-PASSPHRASE': passphrase,
        'Content-Type': 'application/json'
    }
    url = f'https://www.okx.com{path}'
    resp = requests.get(url, headers=headers, params=params)
    return resp.json()

# 示例:查询 BTC-USDT 永续合约的 USDT 本位费率
print(get_fee_rate(instType='SWAP', instId='BTC-USDT-SWAP'))

要点

4. 常见误区与校验清单

  1. 不要盲目替换变量名
    现货代码里依然用 taker/maker,只有 futures/swap 场景才需额外判断 takerU/makerU 是否存在。
  2. 检查数据源粒度
    不同 VIP 等级在同一次请求中均会返回,正确做法是先对比 level 字段再取对应费率。
  3. 缓存 + 刷新策略
    费率变化不大,可以10 分钟缓存;若遇大额补仓节点,强制刷新一次。

👉 查看完整官方费率等级对照表,确保 VIP 折扣不遗漏

5. FAQ:15 秒解答高频疑问

Q1:上线后会禁止旧 SDK 调用吗?
A:不会。旧字段仍返回空值,程序不会报错,但建议新版本尽快使用 takerU/makerU 以保证费率精度。

Q2:我只有现货机器人,需要做改动吗?
A:无需改动,继续用 taker/maker 即可。

Q3:Python SDK(okx-python)同步了吗?
A:已同步。安装 pip install okx-python>=1.3 即可自动识别新字段。

Q4:历史回测数据会受影响吗?
A:不影响。历史深度、成交、资金费率、结算价均保持不变。

Q5:WebSocket 私有频道会同步更新吗?
A:不会。此次仅针对 REST /api/v5/account/trade-fee

Q6:调用频率上限是否调整?
A:保持 20 req/2s,VIP5 及以上可扩容到 100 req/2s,详见【费率与限速】页面。

6. 结语

整体而言,本次升级仅涉及 「USDT 本位与币本位费率打入不同字段」 的一次“精细化”拆分。你在现货世界几乎无感,但在合约世界却需要留意新的 *U 字段。改动虽小,踩坑极大——务必回归测试一次,确保策略平仓逻辑不会因为费率读取错误而膨胀滑点。祝你交易顺利!