- 金融科技
- 示例工程
【免费下载链接】ai_quant_trade
Stock AI Trader: 1-stop platform for learning, sim & live trading. Covers: stock basics, strategies, LLMs, factor mining, ML/DL/RL, graph nets, HFT, C++ deploy & JoinQuant code. 股票AI操盘手:一站式学习、模拟、实盘平台。涵盖:股票基础、策略、大模型、因子挖掘、机器学习/深度学习/强化学习、图网络、高频交易、C++部署及聚宽代码。
本文以当前仓库 okx-market Skill 包 中的现货行情文档为核心,系统讲解 OKX V5 REST API 的GET /api/v5/market/ticker接口:包括请求参数、完整响应字段语义、可直接运行的 Python 调用示例,并对照仓库内 market_data_example.py 的源码实现,给出带错误处理的生产级写法。读完本文后,你可以独立获取任意 OKX 交易产品(现货、永续、交割、期权)的实时行情快照,并将其接入自己的量化策略、监控脚本或 LLM 行情工具链。
接口概览
/market/ticker是 OKX V5 行情接口中用于获取单个交易产品最新行情快照的端点,一次请求即可拿到最新成交价、买一/卖一价格与数量、24 小时开盘/最高/最低价、24 小时成交量与成交额、UTC 0 点与 UTC+8 0 点开盘价等核心数据,是行情监控、盘口分析、涨跌幅计算等场景的最基础数据源。
| 项目 | 内容 |
|---|---|
| 接口路径 | GET /api/v5/market/ticker |
| 功能描述 | 获取单个交易产品的最新行情快照,包括最新成交价、买一卖一价、24 小时成交量等核心数据 |
| 限频 | 20 次 / 2 秒 |
| 鉴权要求 | 无需 API Key,无需注册与 token 配置,完全公开(见 SKILL.md 中 "No account registration or token configuration is required") |
| 请求方式 | HTTP GET,参数通过 URL query 传递 |
接口的基础地址为:
https://www.okx.com/api/v5即完整请求为GET https://www.okx.com/api/v5/market/ticker?instId=xxx。
输入参数
| 名称 | 类型 | 必选 | 描述 |
|---|---|---|---|
| instId | str | Y | 交易产品 ID,如BTC-USDT、BTC-USDT-SWAP |
该接口只需一个参数instId,用于指定要查询的交易产品。
输出参数
响应为 JSON,code=0表示成功,数据在data字段中(数组形式,取data[0]即为该产品的行情快照)。核心字段如下:
| 名称 | 类型 | 描述 |
|---|---|---|
| instType | str | 产品类型(SPOT/SWAP/FUTURES/OPTION) |
| instId | str | 交易产品 ID |
| last | str | 最新成交价 |
| lastSz | str | 最新成交量 |
| askPx | str | 卖一价 |
| askSz | str | 卖一量 |
| bidPx | str | 买一价 |
| bidSz | str | 买一量 |
| open24h | str | 24 小时开盘价 |
| high24h | str | 24 小时最高价 |
| low24h | str | 24 小时最低价 |
| vol24h | str | 24 小时成交量(币) |
| volCcy24h | str | 24 小时成交额(计价货币) |
| sodUtc0 | str | UTC 0 点开盘价 |
| sodUtc8 | str | UTC+8 0 点开盘价 |
| ts | str | 数据时间戳(毫秒) |
数据样例
{ "code": "0", "data": [{ "instType": "SPOT", "instId": "BTC-USDT", "last": "72159", "lastSz": "0.00005196", "askPx": "72157.1", "askSz": "1.44548635", "bidPx": "72157", "bidSz": "0.1012", "open24h": "73554.5", "high24h": "74883", "low24h": "71966", "volCcy24h": "443213018.596221053", "vol24h": "6013.17760207", "ts": "1773842459809", "sodUtc0": "73904.3", "sodUtc8": "73915.5" }] }instId 参数格式详解
instId是唯一必填参数,其格式随产品类型不同而变化。根据 SKILL.md 的 "Parameter Format Reference" 一节,各类型格式如下:
- 现货(SPOT):
BTC-USDT、ETH-USDT(基础货币-计价货币) - 永续合约(SWAP):
BTC-USDT-SWAP、ETH-USDT-SWAP(在现货格式后追加-SWAP) - 交割合约(FUTURES):
BTC-USDT-250328(在现货格式后追加交割日期YYMMDD) - 期权(OPTION):
BTC-USD-250328-95000-C(到期日-行权价-认购/认沽,C为 Call,P为 Put) - 指数(Index):
BTC-USD、ETH-USD
对应响应中的instType取值:
| instType | 含义 |
|---|---|
| SPOT | 现货 |
| SWAP | 永续合约 |
| FUTURES | 交割合约 |
| OPTION | 期权 |
注意:同名的现货与永续合约是两个不同的产品,查询时务必携带完整的
instId(如BTC-USDT与BTC-USDT-SWAP),否则拿到的将是错误产品的行情。
字段语义与实战解读
ticker 快照看似简单,但字段语义存在几个容易踩坑的点,结合数据样例逐项说明:
- 所有数值字段均为字符串(str)类型:
last、bidPx、vol24h等在 JSON 中都是字符串。做涨跌幅、排序、统计等数值运算前必须先float()转换,否则会得到字符串拼接等错误结果。这一点在 market_data_example.py 的源码中体现得很明确:last = float(ticker["last"])。 ts是毫秒级 Unix 时间戳:"ts": "1773842459809"表示自 1970-01-01 起的毫秒数,需要除以 1000 或使用pd.to_datetime(ts, unit="ms")才能转换为可读时间。sodUtc0与sodUtc8的区别:分别代表 UTC 0 点与 UTC+8(即北京时间)0 点的开盘价。跨时区计算"当日涨跌"时应选用与自身参照系一致的字段。vol24h与volCcy24h的单位不同:前者是以基础币(如 BTC)计量的 24 小时成交量,后者是以计价货币(如 USDT)计量的 24 小时成交额。两者配合可以观察大额成交与换手活跃度。askPx/bidPx是卖一/买一档:做市或盘口判断时如需更多深度,可配合 深度数据接口(/market/books)获取多档盘口。
实战代码:从最小示例到生产级写法
1. 原文档基础示例
原文档给出了基于requests的最小可用示例,可完整覆盖现货与永续两类产品:
import requests BASE_URL = "https://www.okx.com/api/v5" # 获取 BTC-USDT 现货行情 resp = requests.get(f"{BASE_URL}/market/ticker", params={"instId": "BTC-USDT"}) data = resp.json()["data"][0] print(f"最新价: {data['last']}, 24h量: {data['vol24h']}") # 获取 ETH-USDT 永续合约行情 resp = requests.get(f"{BASE_URL}/market/ticker", params={"instId": "ETH-USDT-SWAP"}) data = resp.json()["data"][0] print(f"ETH永续最新价: {data['last']}")要点:params={"instId": ...}由requests负责 URL 编码;响应中data为数组,即使单个产品也需取[0]。
2. 仓库源码级实现:带错误处理的 get_ticker
market_data_example.py 中提供了更完整的get_ticker函数,在原文档示例基础上补齐了业务错误码检查、异常捕获、涨跌幅计算与类型转换四个关键环节,适合直接复制到自己的项目中:
def get_ticker(inst_id: str) -> Optional[dict]: """获取单个产品的实时行情。 Args: inst_id: 交易产品ID,如 BTC-USDT。 Returns: 行情数据字典,失败返回 None。 """ try: resp = requests.get(f"{BASE_URL}/market/ticker", params={"instId": inst_id}) data = resp.json() if data["code"] != "0": print(f"API错误: {data['msg']}") return None ticker = data["data"][0] last = float(ticker["last"]) open24h = float(ticker["open24h"]) chg = (last / open24h - 1) * 100 print(f"{inst_id} 最新价: {last} 24h涨跌: {chg:+.2f}% 24h量: {ticker['vol24h']}") return ticker except Exception as e: print(f"获取行情失败: {e}") return None这段源码揭示了三个值得借鉴的实践:
- 先校验业务码再取数据:OKX 响应中
code != "0"即业务层失败,此时msg字段携带错误原因。先判code再取data[0],可避免在限频超限、instId 不存在等场景下抛出 KeyError 或 IndexError。 - 用
open24h计算 24 小时涨跌幅:chg = (last / open24h - 1) * 100是 ticker 最常见的衍生指标,配合f"{chg:+.2f}%"格式化可输出带符号的百分比,原文档示例中即以此展示 24h change。 - 异常兜底返回 None:网络抖动、超时等异常被统一捕获并返回
None,调用方只需判空即可安全降级,避免单点行情拉取拖垮整个策略循环。
该脚本在main()中通过for symbol in ["BTC-USDT", "ETH-USDT", "SOL-USDT"]: get_ticker(symbol)批量轮询主流币种,演示了 ticker 接口在"盯盘轮询"场景下的典型用法。
相关行情接口全景:从单点到全景
ticker 提供的是"某一时刻的单点快照",在真实量化场景中通常需要与其他行情接口组合使用。同一 Skill 包下的关联文档可作为完整行情链路的补充:
| 场景需求 | 对应接口 | 仓库文档 |
|---|---|---|
| 一次拉取某产品类型下全部行情(如全部现货) | GET /market/tickers | 批量行情.md |
| 历史 OHLCV 与 K 线绘图、回测 | GET /market/candles | K线数据.md |
| 逐笔成交明细、成交方向统计 | GET /market/trades | 最近成交.md |
| 多档盘口深度、流动性分析 | GET /market/books | 深度数据.md |
| 交易对元数据(最小下单量、价格精度、合约面值、最大杠杆) | GET /public/instruments | 交易产品列表.md |
其中 K线数据.md 与 candle_data_example.py 展示了将行情转为 pandas DataFrame 的完整范式;批量行情.md 则演示了用volCcy24h排序筛选成交额 TOP 交易对的方法——这些都能与 ticker 单点行情形成互补。如需获取合约类衍生数据(资金费率、标记价格、持仓量、限价),可查阅该 Skill 包 references/合约行情 目录下的对应文档;SKILL.md 中给出了全部 13 个行情端点的完整索引。
运行环境与注意事项
- 依赖安装:按 SKILL.md 的 Quick Start,推荐 Python 3.9+,安装
requests与pandas(后者用于 DataFrame 场景):
pip install requests pandas限频管理:ticker 接口限频为20 次 / 2 秒。若做多产品轮询,建议控制请求节奏(如按产品数均摊间隔),并在代码中处理
code非0的限频错误响应。相比 40 次 / 2s 的 K 线接口与深度接口,ticker 的配额更紧,高频轮询前务必先评估。数据时序一致性:
ts为毫秒时间戳,跨时区应用请统一以 UTC 毫秒为准;轮询落库时应以ts(而非本地接收时间)作为行情的时间轴,避免网络延迟引入错位。免费公开、无需鉴权:行情类端点全部公开,无需注册与 API Key 配置;但不同产品的
instId命名规则不同,建议先用 交易产品列表接口 获取合法 ID 清单后再发起轮询,避免无效请求占用限频配额。
综上,/market/ticker是 OKX 行情体系中"最轻量、最常用"的单点快照接口:配合本文的字段语义解读与仓库源码中的错误处理范式,即可稳定、高效地将其接入监控告警、涨跌幅统计、盘口快照或 LLM 行情问答等各类场景。
- 金融科技
- 示例工程
【免费下载链接】ai_quant_trade
Stock AI Trader: 1-stop platform for learning, sim & live trading. Covers: stock basics, strategies, LLMs, factor mining, ML/DL/RL, graph nets, HFT, C++ deploy & JoinQuant code. 股票AI操盘手:一站式学习、模拟、实盘平台。涵盖:股票基础、策略、大模型、因子挖掘、机器学习/深度学习/强化学习、图网络、高频交易、C++部署及聚宽代码。
相关推荐
DeepSeek Harness TUI 启动横幅无边框回归:HeaderComponent 扫入动画、welcome 配置与快照确定性设计解析
DeepSeek Harness TUI 启动横幅无边框回归:HeaderComponent 扫入动画、welcome 配置与快照确定性设计解析 DeepSee
金融科技示例工程ai_quant_trade 量化数据接入:OKX V5 批量行情接口(/api/v5/market/tickers)实战指南
ai_quant_trade 量化数据接入:OKX V5 批量行情接口(/api/v5/market/tickers)实战指南 导读 本文以 ai_quant_
金融科技示例工程OKX 最近成交接口(/api/v5/market/trades)实战指南:用 Python 获取现货逐笔成交数据
OKX 最近成交接口(/api/v5/market/trades)实战指南:用 Python 获取现货逐笔成交数据 导读 本文围绕本项目 vibe_tradin
金融科技示例工程
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考