用CCXT一键获取OKX所有永续合约交易对的Python实战笔记

·

关键词:Python、CCXT、OKX、永续合约、API、数币量化、交易策略

为什么要先拿到“全部永续合约对”?

在开发量化机器人或构建交易仪表盘时,第一件事往往是拉取交易所到底有哪些永续合约可以交易。如果手动去官网复制粘贴,不仅耗时,还容易遗漏新上市的合约。借助 CCXT 这个开源库,一段不足 30 行的脚本即可让 OKX 的全部 永续合约(Perpetual Swaps)一览无遗,为后续 选币、回测、风控 打下基石。


环境准备

  1. 安装依赖

    pip install ccxt -U
    如已安装但版本老旧,建议追加 -U 升级到最新,确保字段齐全。
  2. 网络畅通
    OKX 官方 REST 域名在国内可直接访问;若遇偶发超时,可在脚本内加一层 代理,或是切换到 加速域名

核心代码解读

下面给出最小可运行示例(fetch_perps.py)并逐行拆解:

import ccxt

# 1️⃣ 实例化 OKX
exchange = ccxt.okx({
    'enableRateLimit': True,  # 防刷屏保护
})

# 2️⃣ 拉取全部市场
markets = exchange.load_markets()

# 3️⃣ 把永续抠出来
perps = {
    symbol: data
    for symbol, data in markets.items()
    if data['type'] == 'swap' and data['linear']  # USDⓈ保证金
}

print(f"总共扫描到 {len(perps)} 条永续合约")

# 4️⃣ 按需输出
for symbol, meta in perps.items():
    print(f"{symbol:15} | {meta['base']:6}/{meta['quote']} | 杠杆 {meta['limits']['leverage']['max']}x")

运行示例输出(节选):

BTC-USDT-SWAP  | BTC/USDT  | 杠杆 125.0x
ETH-USDT-SWAP  | ETH/USDT  | 杠杆 100.0x
SOL-USDT-SWAP  | SOL/USDT  | 杠杆 75.0x

进阶:分秒级刷新列表并入库

在实盘策略中,新永续上线或下线时有发生。可设置定时任务,把列表写入 SQLite 并做 diff 找出当日新增品种:

import sqlite3, datetime as dt

db = sqlite3.connect('okx_perp.db')
db.execute('create table if not exists symbols (ts, symbol PRIMARY KEY)')
now = dt.datetime.utcnow().isoformat()

with db:
    for s in perps:
        db.execute('insert or ignore into symbols values(?, ?)', (now, s))

FAQ | 常见疑问解答

  1. 问:我拿到符号后如何抓取实时价格?
    答:使用 exchange.fetch_ticker('BTC-USDT-SWAP'),返回字段中 last 即最新成交价。
  2. 问:需要 API Key 吗?
    答:拉取公共行情列表无需账户密钥;下单、查持仓才需配置。
  3. 问:脚本偶尔报“rate limit”怎么办?
    答:1. 保持 enableRateLimit=True;2. 适当延长定时器间隔;3. 如有代理,检查带宽或切节点。
  4. 问:想一次拿下 所有币本位合约 呢?
    答:把过滤条件改为 data['type'] == 'swap' and not data['linear'],即可逆选币本位。
  5. 问:字段太多看不懂怎么办?
    答:直接在列表后加 .keys(),比如 print(markets['BTC-USDT-SWAP'].keys()),快速浏览全部元数据。

避坑指南

踩坑点正确姿势
markets 为空检查网络或域名,可切换 sandbox: true 先行测试
symbol 大小写混用OKX 全部使用小中横线格式,如 eth-usdt-swap
过旧版本2023 年底 OKX 重构 REST 路由,务必升级 ccxt≥4.2

实战小结

👉 不懂 REST 接口?速成课带你 10 分钟读懂 OKX CCXT 全流程


最后,掌握“获取全部永续合约对”只是 量化交易系统 的敲门砖。接下来你可以:

  1. tickSizeminQty 做过滤,筛掉小市值高滑点品种;
  2. 把列表同步到 监控面板
  3. 历史 K 线 优化回测参数。

祝你交易长青!