量化数据12:国内期货L2历史数据:Tick、逐笔、五档盘口一次性打包下载

国内期货L2历史数据:Tick、逐笔、五档盘口一次性打包下载

之前给一个做CTP策略的朋友找铁矿石的历史tick,对方开口就是某德十几万一年------倒也不是说人家贵,是散户真的扛不住。后来乱翻各种数据源,发现有个地方能把全量历史数据直接下到本地,覆盖一档Tick、逐笔成交、五档盘口快照,连分钟线都一块儿给了。其实就是个做低延迟行情分发的团队,把上期所、中金所这些原始数据流存了下来,打包成离线文件,你付个服务器维护费就能拿走。

有哪些能用的数据?

能拿到的东西分这么几类:

  • 一档Tick:就是最基础的每笔行情快照,包含最新价、成交量、持仓量这些。虽说不像L2那样有摆盘深度,但做回测、画图基本够了。关键是它占地方小,一个品种几年的数据也就几个G。
  • 逐笔成交:这才是真正细活儿。期货逐笔数据里能分清"多开"、"空开"、"多平"、"空平",还能看到每一笔成交的挂单方向。之前我用手头的Python库解析大商所的raw tick,发现它居然能还原出单子是从买一档成交还是卖一档成交,这点对分析主力意图很有用。
  • 五档Tick盘口快照:就是L2行情里常见的五档买卖挂单量,上期所、能源中心、中金所的品种都有。只要你是做高频,肯定绕不开这个。不过要注意郑商所的五档是合并的,精度没另外几家高,这个坑很多人踩过。
  • 分钟线:1分钟、5分钟、15分钟、30分钟、60分钟,日线也顺手给了。虽然是衍生数据,但用起来方便,不用自己再合成。

字段长什么样?

我不爱贴那种官方文档,直接拿我实际下载到的文件说事儿。

逐笔成交每个条目大概是这些字段(按顺序,CSV打开能看到):

字段 什么意思 我留意到的点
Time 精确到毫秒的时间戳 有夜盘的时候,日期跨天的逻辑得自己处理
Price 成交价 和盘口分笔对得上
Volume 手数 单笔最高见过几百手,吃单很凶
Turnover 成交金额 这个字段有时候是0,要看交易所
OpenInterest 持仓量变化 配合方向字段能算出增减仓
Direction 开平仓标志 0-4分别代表不同方向,真能区分多开空开

五档盘口快照每行的字段更多,我挑重点说:

字段 说明 个人备注
UpdateTime 快照生成时间 有时会跳秒,500ms一次的快照也正常
LastPrice 最新价
BidPrice1-5 买一至买五报价 和Volume一一对应
BidVolume1-5 挂单量 挂单增减很明显能看出托单还是压单
AskPrice1-5 卖一至卖五报价
AskVolume1-5 挂单量 注意郑商所只有买一卖一的两档深度,别被五档字段骗了
TotalVolume 总成交量
TotalOpenInterest 总持仓 可以用这个和Tick一起验证

一档Tick的字段就简单了:时间、最新价、成交量、持仓量、成交额。适合跑一个初筛,不用上来就琢磨L2。

怎么把数据搞到手

他们给了一个Python包,文档在这儿(其实我也就是从这摸过去的)

装起来不复杂,直接pip搞定:

bash 复制代码
pip install cmesdata

调用的话,比如我要拿RB2001合约2020年某一天的逐笔成交和五档盘口,代码差不多是这感觉:

python 复制代码
from cmesdata import Client

# CMES金融数据库的行情接口,入参需要产品代号、合约代码、日期,调用频率注意不要过快,免费账户有次数限制
client = Client(api_key='your_key_here')  # 申请后会邮箱发给你
data = client.get_tick(symbol='rb', contract='2001', date='2020-03-10', level='L2')
# 返回来是个DataFrame,可以直接to_csv存到本地
data.to_csv('rb2001_20200310.csv', index=False)

接口设计得挺直观,想拿分钟线就换个函数,传freq='1min'之类的,其他参数差不多。它支持批量下载,把日期列表一塞就能把整个主力合约周期跑完。我机器上挂了两个晚上,把黑色系几个品种最近三年的L2全拉下来了,70多G,比我想的小。

下载时碰到过的小毛病

第一次用的时候我没仔细看CMES金融数据库文档,直接并行开了几十个线程去拉,结果被ban了IP。问了客服才知道免费账户有调用频率上限,单线程一个个来反而更快。另外上期所的逐笔数据在2019年之前字段和现在略有差异,Direction那时候没区分得那么细,做回测的时候得把那段切片特殊处理。

再有就是合约换月,得自己写轮换逻辑。我一般用持仓量最大的那天作为切换节点,和CTP换月逻辑基本对齐,回测误差能接受。

数据覆盖面

上市以来的全量历史行情几乎都有,上期所、大商所、郑商所、中金所、能源中心的品种,股指期货也有。我找过2016年螺纹钢刚火那会儿的tick,没想到照样能下。不过中金所的五档盘口数据比较晚,大约2019年下半年才开始有,更早的只能拿一档Tick和逐笔。

后面可以玩的东西

有了这些底子数据,其实可以做不少事情。比如我最近在尝试把逐笔成交和盘口快照对齐,还原订单流,然后映射出主动性买卖比例,用这个去过滤虚假突破。不过那就是另外一篇笔记的事了,这篇只想说:想自己做期货tick分析的,不用一上来就花大价钱,不妨先试试离线包。

(数据仅供研究学习,实盘使用请自行评估合规性)

相关推荐
GeW2 小时前
从"补短板"到"强优势"Linux与数据库认证成为产业跃迁人才支点
linux·数据库
数据库小学妹2 小时前
MySQL NULL陷阱:NOT IN、三值逻辑与NOT EXISTS
数据库·后端·mysql
SelectDB2 小时前
Doris 异步物化视图实战:与 Snowflake MV / Dynamic Tables 分层建模对照
大数据·数据库·云原生
枫昕柚2 小时前
MySQL 建库命令详解:从 CREATE DATABASE 到create table
数据库·mysql
张张123y3 小时前
后端第十六课:Multi-Agent 多智能体(让多个 Agent 分工协作)
大数据·数据库·人工智能·python·deepseek·dsh·agent 框架
释厄6233 小时前
同性线套娃律——圆面积必然=1+2+...+n 的求和·圆心不与 π 相关
java·人工智能·算法·1024程序员节
todoitbo3 小时前
MongoDB迁移之后,Spring Data 和 Hibernate 各自接哪类请求
大数据·数据库·mongodb·spring·hibernate·金仓数据库
HEJOO93 小时前
数据库日期类型字段如何选型:跨数据库兼容的实践指南
数据库
这个DBA有点耶4 小时前
主库秒级,从库延迟2小时:深挖Online DDL回放的MDL阻塞与算法降级机制
数据库·sql·dba