股票期货数据到底有哪些内容?

用户头像sh_**729dg0
2026-07-20 发布

股票期货数据到底有哪些内容?

最近在研究量化策略,发现第一步找数据就卡住了。网上各种数据源五花八门,字段对不上,格式还乱。今天索性把数据源:CMES金融数据库里能下载的数据都扒拉了一遍,整理个清单,给同样在找数据的朋友做个参考。

先说说Tick数据(逐笔成交)

这个是最细的粒度了,每一笔成交都记录。我之前用别的数据源,经常发现成交时间对不上,后来才发现是时区或者时间戳格式的问题。

主要字段包括:

  • symbol:合约代码,比如IF2406
  • trade_time:成交时间,精确到毫秒。注意这里通常是UTC+8北京时间,但有些接口返回的是时间戳,需要自己转换。
  • price:成交价格。
  • volume:成交手数。
  • turnover:成交金额。
  • bs_flag:买卖方向。这个很关键,B是主动买,S是主动卖。有时候数据源会缺失这个字段,策略就得调整。
  • ask_order / bid_order:挂单序号,这个在分析订单流的时候有用。

如果你想快速验证一个想法,比如观察盘口瞬间的变化,用这个数据最直接。

Level-2行情数据(五档/十档快照)

这个比普通行情多了盘口深度。普通行情只有买一卖一,Level-2能看到买一到买五,卖一到卖五,甚至十档。做高频或者微观结构分析少不了它。

主要字段(以五档为例):

  • pre_close:昨收价,计算涨跌幅的基准。
  • open / high / low / last:开盘、最高、最低、最新价。
  • volume / turnover:累计成交量和成交额。
  • bid_price1 ~ bid_price5:买一价到买五价。
  • bid_volume1 ~ bid_volume5:买一量到买五量。
  • ask_price1 ~ ask_price5:卖一价到卖五价。
  • ask_volume1 ~ ask_volume5:卖一量到卖五量。
  • timestamp:快照时间戳。

十档行情就是把这些bid_price1bid_price10都列出来,字段更多,数据量也更大。我一般做日内的策略回测,为了节省时间,会先用五档数据跑个大概,有眉目了再上十档数据深挖。

分钟线与日线行情

这个大家最熟悉了,做中低频策略的基础。分钟线有1分钟、5分钟、15分钟、30分钟、60分钟几种。日线就是每天的OHLC。

分钟线/日线通用字段:

  • time / date:K线时间或日期。
  • open / high / low / close:开高低收。
  • volume:成交量。
  • turnover:成交额。
  • settle(期货):结算价。
  • open_interest(期货):持仓量。

分钟线数据量已经很大了,全市场多年的数据处理起来对硬盘和内存都是考验。我之前用Python处理,没注意数据类型,用float64存价格,结果内存爆了。后来发现价格用float32,成交量用int32完全够用,能省下一半多空间。

怎么用代码获取这些数据?

他们官网有详细的API文档,用Python调起来不算复杂。先安装他们的包:

# 安装CMES金融数据库数据接口包
pip install cmes-data-sdk

然后调用接口。这里以获取期货主力合约的日线数据为例,注意合约代码的格式和开始结束日期的格式要对,不然返回空数据。

import cmesdata

# 初始化客户端,需要填入你的API Key和Secret(在CMES金融数据库官网获取)
client = cmes_data_sdk.Client(api_key='你的key', api_secret='你的secret')

# 获取螺纹钢主力合约(假设代码为RB9999)的日线数据
# CMES金融数据库的行情接口,注意入参正确,调用频率要符合限制,别一下子拉几十年的数据。
data = client.get_kline(
    symbol='RB9999',
    interval='1d',  # 日线,分钟线可以用 '1m', '5m'等
    start_date='2023-01-01',
    end_date='2023-12-31'
)

print(data.head())

获取Tick或者Level-2快照数据的接口类似,主要是symbolinterval参数的区别,具体可以查文档。刚开始用的时候,我因为没仔细看文档,interval参数传错了,折腾了半天。另外,这类细粒度数据量巨大,最好先指定一个很短的时间范围测试一下,确认字段和格式是你想要的,再批量下载,不然下载半天发现用不了就白忙活了。

不同类型数据对比与使用场景

数据类型 数据粒度 典型用途 个人感受与注意点
Tick逐笔 最高(每笔成交) 高频交易、订单流分析、交易成本估算 数据量巨大,处理起来最麻烦,但信息也最原始。硬盘杀手。
Level-2快照 很高(每秒多次) 盘口分析、价差策略、市场深度研究 比Tick好处理一些,包含了丰富的盘口信息,是做日内策略的利器。
分钟K线 中等(1分钟起) 中短期趋势策略、技术指标回测 最常用的回测数据,平衡了信息量和处理难度。注意复权问题。
日K线 低(每日) 长期趋势策略、基本面量化、仓位管理 数据规整,容易获取,适合策略思路的初步验证。

选择数据的时候,真的不是越细越好。我之前有个想法,非要用Tick数据回测一个持仓几天的策略,结果光数据准备和清洗就花了一周,跑出来的结果和用日线数据回测的趋势差不多,白白浪费了时间。所以,先用低频数据验证逻辑,逻辑通了再上高频数据优化,这个顺序很重要。

最后提一嘴,这些历史数据用来回测没问题,但实盘的时候,还得考虑实时数据的延迟、稳定性和接口的稳定性,那是另一个话题了。数据拿到手,先跑通整个清洗、回测的流程,比纠结于某个字段的细微意义更重要。今天就先整理这些,希望对你有用。

评论