关键词:Python、CCXT、OKX、永续合约、API、数币量化、交易策略
为什么要先拿到“全部永续合约对”?
在开发量化机器人或构建交易仪表盘时,第一件事往往是拉取交易所到底有哪些永续合约可以交易。如果手动去官网复制粘贴,不仅耗时,还容易遗漏新上市的合约。借助 CCXT 这个开源库,一段不足 30 行的脚本即可让 OKX 的全部 永续合约(Perpetual Swaps)一览无遗,为后续 选币、回测、风控 打下基石。
环境准备
安装依赖
pip install ccxt -U如已安装但版本老旧,建议追加
-U升级到最新,确保字段齐全。- 网络畅通
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")- 关键一:
load_markets()会一次性缓存完整字典,兼顾速度与字段; - 关键二:
type == 'swap'识别 永续合约; - 关键三:通过
linear=True仅保留 USDT 本位 永续,若想同时观察 币本位,去掉该过滤即可。
运行示例输出(节选):
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 | 常见疑问解答
- 问:我拿到符号后如何抓取实时价格?
答:使用exchange.fetch_ticker('BTC-USDT-SWAP'),返回字段中last即最新成交价。 - 问:需要 API Key 吗?
答:拉取公共行情列表无需账户密钥;下单、查持仓才需配置。 - 问:脚本偶尔报“rate limit”怎么办?
答:1. 保持enableRateLimit=True;2. 适当延长定时器间隔;3. 如有代理,检查带宽或切节点。 - 问:想一次拿下 所有币本位合约 呢?
答:把过滤条件改为data['type'] == 'swap' and not data['linear'],即可逆选币本位。 - 问:字段太多看不懂怎么办?
答:直接在列表后加.keys(),比如print(markets['BTC-USDT-SWAP'].keys()),快速浏览全部元数据。
避坑指南
| 踩坑点 | 正确姿势 |
|---|---|
| markets 为空 | 检查网络或域名,可切换 sandbox: true 先行测试 |
| symbol 大小写混用 | OKX 全部使用小中横线格式,如 eth-usdt-swap |
| 过旧版本 | 2023 年底 OKX 重构 REST 路由,务必升级 ccxt≥4.2 |
实战小结
- 步骤只需三步:装库 → 取 markets → 过滤
type=swap。 - 维护成本低:一次脚本、定时 diff,再也不用手动维护 excel。
- 向下兼容好:升级到
ccxt.next或切换exchange对象,不改一行即可复制到 币安、Bybit 等交易所。
👉 不懂 REST 接口?速成课带你 10 分钟读懂 OKX CCXT 全流程
最后,掌握“获取全部永续合约对”只是 量化交易系统 的敲门砖。接下来你可以:
- 对
tickSize、minQty做过滤,筛掉小市值高滑点品种; - 把列表同步到 监控面板;
- 用 历史 K 线 优化回测参数。
祝你交易长青!