API 教程(三) 获取公共数据

API 教程(三) 获取公共数据

OKX 教程团队
5 分钟阅读

API 教程(三) 获取公共数据

想通过API获取实时行情数据?OKX V5 API提供丰富的公共数据接口,无需认证即可访问。

本文是API教程系列第三篇,详解如何获取行情、K线、交易深度、资金费率等公共数据,并提供Python代码示例,让你快速上手。

公共数据 vs 私有数据

OKX API分为两类接口:

公共数据接口(本文重点):

  • 无需API密钥,直接调用
  • 获取市场行情、K线、深度、成交记录等
  • 适合行情监控、数据分析、策略回测

私有数据接口

  • 需要API密钥认证
  • 获取账户余额、持仓、订单等个人数据
  • 详见API教程四:获取个人数据

核心公共数据接口

1. 获取交易产品列表

查询所有可交易的产品信息(币对、合约等)。

接口

GET /api/v5/public/instruments

参数

  • instType:产品类型(SPOT现货/SWAP永续/FUTURES交割/OPTION期权)

Python示例

import requests

url = "https://www.okx.com/api/v5/public/instruments"
params = {"instType": "SPOT"}
response = requests.get(url, params=params)
data = response.json()

# 打印前3个现货交易对
for inst in data['data'][:3]:
    print(f"{inst['instId']}: {inst['baseCcy']}/{inst['quoteCcy']}")

返回数据

  • instId:产品ID(如BTC-USDT)
  • baseCcy:基础货币(如BTC)
  • quoteCcy:计价货币(如USDT)
  • minSz:最小下单量
  • tickSz:价格精度

应用场景:获取所有可交易币对、查询产品交易规则、构建交易对选择器。

2. 获取实时行情

获取单个或多个产品的最新行情数据。

接口

GET /api/v5/market/ticker

参数

  • instId:产品ID(如BTC-USDT)

Python示例

url = "https://www.okx.com/api/v5/market/ticker"
params = {"instId": "BTC-USDT"}
response = requests.get(url, params=params)
data = response.json()

ticker = data['data'][0]
print(f"最新价: {ticker['last']}")
print(f"24h涨跌幅: {ticker['sodUtc8']}%")
print(f"24h成交量: {ticker['vol24h']}")

返回数据

  • last:最新成交价
  • bidPx:买一价
  • askPx:卖一价
  • high24h:24小时最高价
  • low24h:24小时最低价
  • vol24h:24小时成交量

应用场景:实时价格监控、价格预警系统、交易信号生成。

3. 获取K线数据

获取历史K线数据,支持多种时间周期。

接口

GET /api/v5/market/candles

参数

  • instId:产品ID
  • bar:K线周期(1m/5m/15m/1H/4H/1D等)
  • limit:返回数量(最多300条)

Python示例

url = "https://www.okx.com/api/v5/market/candles"
params = {
    "instId": "BTC-USDT",
    "bar": "1H",
    "limit": "100"
}
response = requests.get(url, params=params)
data = response.json()

# 打印最近3根K线
for candle in data['data'][:3]:
    ts, o, h, l, c, vol = candle[:6]
    print(f"时间: {ts}, 开: {o}, 高: {h}, 低: {l}, 收: {c}, 量: {vol}")

返回数据(数组格式):

  • [0] 时间戳
  • [1] 开盘价
  • [2] 最高价
  • [3] 最低价
  • [4] 收盘价
  • [5] 成交量

应用场景:技术分析(均线、MACD、RSI等)、策略回测、图表绘制。

4. 获取交易深度

获取订单簿数据(买卖盘口)。

接口

GET /api/v5/market/books

参数

  • instId:产品ID
  • sz:深度档位(5/10/20/50/100/400)

Python示例

url = "https://www.okx.com/api/v5/market/books"
params = {"instId": "BTC-USDT", "sz": "5"}
response = requests.get(url, params=params)
data = response.json()

book = data['data'][0]
print("买盘(Bids):")
for bid in book['bids'][:3]:
    print(f"  价格: {bid[0]}, 数量: {bid[1]}")
print("卖盘(Asks):")
for ask in book['asks'][:3]:
    print(f"  价格: {ask[0]}, 数量: {ask[1]}")

返回数据

  • bids:买盘 [[价格, 数量, 订单数], ...]
  • asks:卖盘 [[价格, 数量, 订单数], ...]
  • ts:时间戳

应用场景:流动性分析、大单监控、滑点计算。

5. 获取资金费率

获取永续合约的资金费率(仅适用于永续合约)。

接口

GET /api/v5/public/funding-rate

参数

  • instId:永续合约ID(如BTC-USDT-SWAP)

Python示例

url = "https://www.okx.com/api/v5/public/funding-rate"
params = {"instId": "BTC-USDT-SWAP"}
response = requests.get(url, params=params)
data = response.json()

funding = data['data'][0]
print(f"当前资金费率: {funding['fundingRate']}")
print(f"下次结算时间: {funding['nextFundingTime']}")

返回数据

  • fundingRate:当前资金费率
  • nextFundingTime:下次结算时间
  • fundingTime:上次结算时间

应用场景:资金费率套利、持仓成本计算、市场情绪分析。

速率限制

公共数据接口有速率限制,避免滥用:

| 用户等级 | 限制 | |---------|------| | 普通用户 | 20次/2秒 | | VIP1-3 | 40次/2秒 | | VIP4+ | 60次/2秒 |

超限处理

  • 返回429错误码
  • IP可能被临时封禁(1-60分钟)

优化建议

  1. 使用WebSocket订阅实时数据(无速率限制)
  2. 批量查询多个产品(如ticker接口支持批量)
  3. 缓存不常变化的数据(如产品列表)
  4. 添加请求间隔(如每次请求间隔100ms)

完整示例:构建行情监控器

import requests
import time

class MarketMonitor:
    def __init__(self, inst_id):
        self.inst_id = inst_id
        self.base_url = "https://www.okx.com"
    
    def get_ticker(self):
        """获取实时行情"""
        url = f"{self.base_url}/api/v5/market/ticker"
        params = {"instId": self.inst_id}
        response = requests.get(url, params=params)
        return response.json()['data'][0]
    
    def get_depth(self):
        """获取交易深度"""
        url = f"{self.base_url}/api/v5/market/books"
        params = {"instId": self.inst_id, "sz": "5"}
        response = requests.get(url, params=params)
        return response.json()['data'][0]
    
    def monitor(self, interval=5):
        """持续监控"""
        while True:
            ticker = self.get_ticker()
            depth = self.get_depth()
            
            print(f"\n{self.inst_id} 行情:")
            print(f"  最新价: {ticker['last']}")
            print(f"  24h涨跌: {ticker['sodUtc8']}%")
            print(f"  买一: {depth['bids'][0][0]}")
            print(f"  卖一: {depth['asks'][0][0]}")
            
            time.sleep(interval)

# 使用示例
monitor = MarketMonitor("BTC-USDT")
monitor.monitor(interval=10)  # 每10秒更新一次

常见问题

Q: 公共数据需要API密钥吗? A: 不需要。公共数据接口可直接调用,无需认证。

Q: 如何避免速率限制? A: 使用WebSocket订阅实时数据,或增加请求间隔。详见WebSocket API教程。

Q: K线数据最多能获取多少条? A: 单次请求最多300条。需要更多历史数据时,使用分页查询(通过after参数)。

Q: 如何获取多个币对的行情? A: ticker接口支持批量查询,省略instId参数即可获取所有产品行情。

相关阅读

  • OKX API完全指南
  • WebSocket API实战教程
  • API安全最佳实践
  • 量化交易入门
  • Python量化交易框架
  • API速率限制优化

免责声明

本文章可能包含不适用于您所在地区的产品相关内容。本文仅致力于提供一般性信息,不对其中的任何事实错误或遗漏负责任。本文仅代表作者个人观点,不代表欧易的观点。 本文无意提供以下任何建议,包括但不限于:(i) 投资建议或投资推荐;(ii) 购买、出售或持有数字资产的要约或招揽;或 (iii) 财务、会计、法律或税务建议。 持有的数字资产 (包括稳定币) 涉及高风险,可能会大幅波动,甚至变得毫无价值。您应根据自己的财务状况仔细考虑交易或持有数字资产是否适合您。有关您具体情况的问题,请咨询您的法律/税务/投资专业人士。本文中出现的信息 (包括市场数据和统计信息,如果有) 仅供一般参考之用。尽管我们在准备这些数据和图表时已采取了所有合理的谨慎措施,但对于此处表达的任何事实错误或遗漏,我们不承担任何责任。 © 2025 OKX。本文可以全文复制或分发,也可以使用本文 100 字或更少的摘录,前提是此类使用是非商业性的。整篇文章的任何复制或分发亦必须突出说明:“本文版权所有 © 2025 OKX,经许可使用。”允许的摘录必须引用文章名称并包含出处,例如“文章名称,[作者姓名 (如适用)],© 2025 OKX”。部分内容可能由人工智能(AI)工具生成或辅助生成。不允许对本文进行衍生作品或其他用途。

展开

相关推荐

Forward Contracts vs. Futures Contracts What Are the Differences

比特币下跌也能盈利?如何进行合约交易

随着以比特币为代表的数字货币市场规模的不断扩大,在现货交易之外逐步催生出形式多样的衍生品交易,来作为一种对冲风险的工具,其中最受关注的莫过于合约交易。 合约交易是什么? 合约是数字货币衍生品市场中最常见的交易合约形式。数字资产合约交易是指买卖双方约定在未来某个时间,按指定价格,对某种资产进行交易。

2026年1月16日

OKX Launches New 'Spot Copy Trading' Feature

比复制策略更简单?在OKX一键跟单最强策略交易员,让交易员帮你赚钱

不管是在传统金融领域,还是在加密货币市场,策略交易都是交易体系中非常重要且关键的一种方式,当面临复杂的交易环境和极端的交易行情时,即使拥有扎实的理论技术知识和丰富的交易经历经验,也很容易错失交易时机,或者受到情绪影响做出错误判断和操作。而策略交易正是能够解决这些问题的有效工具。 交易工具有了,怎么使

2025年11月21日

thumbnail:strategic-trading-series-courses-5

五、策略交易系列课程——屯币宝

前言: 我们经常会有这样的猜想: 牛市中有很多大涨的数字资产,如果能够连续捕捉涨幅较大的币种,比如每月捕捉一个翻倍的数字资产,一年后你的资产就会变成2的12次方,即4096倍,这是非常惊人的,当然这也是几乎不可能完成的事情,因为我们很难连续抓住大涨的币种。 这也是很多用户会遇到的问题: 牛市中,虽然

2025年11月3日

thumbnail:which-countries-do-not-support-registration-cn

哪些国家/地区不支持注册使用欧易

欧易目前不支持对下列地区的客户提供服务:部分美国领土,如 纽约、德克萨斯州、 波多黎各、美属萨摩亚、关岛、北马里亚纳群岛邦、美属维尔京群岛 (圣克罗伊岛,圣约翰岛和圣托马斯岛),古巴、伊朗、朝鲜、克里米亚、马来西亚、叙利亚、孟加拉国和玻利维亚。 有关详情,请参阅 欧易服务条款 。

2024年4月25日

thumbnail:get-to-know-the-product

快速了解欧易常用产品及功能

欧易(www.okx.com)是全球著名的数字资产服务平台之一,主要面向全球用户提供 比特币 、以太坊等数字资产的币币和衍生品交易服务,同时也和用户一同探索DeFi,DApp, NFT和GameFi的世界。 在欧易,您可以享受 币币 、合约等流畅的交易体验,第一时间关注热门领域/概念的代币信息,还有

2024年4月25日

thumbnail:zero-basic-to-learn-analysis-of-bitcoin5candlestick-patterns-identify-a-pattern-cn

零基础学K线 | 5 K线组合应用的重要性

涨跌有趋势,读懂价格语言; 买卖有信号,告别感觉交易。 一、看涨K线组合发关键位置 在本章的前两期我们讲解了K线看涨组合和看跌组合的应用,但这些组合不是在任何位置出现都有效。本节我们就来讲解组合出现位置的重要性。 看涨组合在哪些位置可以更好的发挥作用呢? 第一种情况:在一段明显的上涨走势中,临近的前

2024年4月25日

准备开始交易?

使用邀请码 OKK329 注册 OKX,享受 20% 手续费优惠,专业交易工具助你轻松交易

立即注册开始交易

邀请码:OKK329

进阶交易策略

在我们的合作网站学习更多进阶交易策略和市场分析

学习交易策略

相关文章