1. 高频数据基础:Tick数据与Bar数据的区别、Level2行情介绍、常见商品期货交易所数据格式

做量化交易这些年,我接触过不少新手。大家一上来就问我:“老师,高频数据到底长什么样?”

说实话,这个问题问得特别好。因为如果你连数据长啥样都不清楚,后面的特征工程、策略回测,全都是空中楼阁。

今天我们就来聊聊高频数据的两个核心概念:Tick数据和Bar数据。顺便把Level2行情和交易所数据格式也讲清楚。

1.1 Tick数据:最原始的交易记录

Tick数据,说白了就是交易所每产生一笔交易,就记录一条数据。它是市场最微观的切片。

我刚开始做高频策略时,总觉得Tick数据太“碎”了。后来才发现,很多赚钱的策略,恰恰就藏在这些碎片里。

Tick数据的核心字段:

  • 交易时间:精确到毫秒甚至微秒
  • 最新成交价:当前这笔交易的成交价格
  • 成交量:这笔交易的手数/张数
  • 成交额:成交价 × 成交量
  • 买卖方向:主动买还是主动卖(重要!)

举个例子,螺纹钢期货在某毫秒内成交了一笔,价格3800元,成交量10手。这就是一条Tick数据。

嗯,这里要注意:不同交易所对Tick数据的定义略有差异。比如上期所会额外记录“申买价一”和“申卖价一”,而大商所可能只记录成交信息。

我的经验:处理Tick数据时,一定要关注时间戳的精度。有些数据源给的是秒级,有些是毫秒级。我曾经因为时间戳精度不够,导致回测结果和实盘差了十万八千里。

1.2 Bar数据:Tick数据的“压缩包”

Bar数据,就是按时间窗口把Tick数据“打包”起来。最常见的是一分钟Bar、五分钟Bar。

你想想看,如果每天几百万条Tick数据全拿来分析,电脑都得崩溃。所以Bar数据就是高频数据的“降维打击”。

一个标准的Bar数据包含五个要素:

  • 开盘价(Open):这个时间窗口的第一笔成交价
  • 最高价(High):窗口内的最高成交价
  • 最低价(Low):窗口内的最低成交价
  • 收盘价(Close):窗口内的最后一笔成交价
  • 成交量(Volume):窗口内的总成交量

我习惯把Bar数据叫做“OHLCV”,业内都这么叫。做技术分析的人,天天跟这五个字母打交道。

避坑指南:我曾经在回测时直接用交易所的分钟Bar数据,结果发现策略表现特别好。后来一查,原来交易所的Bar数据是“复权”过的,包含了夜盘和日盘的拼接。嗯,从那以后,我都是自己从Tick数据合成Bar,虽然慢一点,但心里踏实。

1.3 Tick vs Bar:到底用哪个?

这个问题我经常被问到。我的回答是:看你的策略类型。

维度 Tick数据 Bar数据
数据量 巨大(每天几百万条) 较小(每天几千条)
信息粒度 每笔交易都记录 只保留统计摘要
适用策略 高频做市、订单簿策略 趋势跟踪、均值回归
存储成本
回测速度

我个人建议:如果你做的是秒级以内的策略,必须用Tick数据。如果是分钟级以上的策略,用Bar数据就够了。

1.4 Level2行情:比Tick更“深”一层

Level2行情,很多人叫它“深度行情”。它比普通Tick数据多了一个东西——订单簿。

普通Tick只告诉你成交了什么,Level2还告诉你“挂单”的情况。

Level2的核心数据包括:

  • 十档行情:买一到买十、卖一到卖十的挂单价格和数量
  • 逐笔成交:每笔成交的详细信息(比Tick更细)
  • 委托队列:每个价位的挂单明细(有些交易所提供)

我记得第一次拿到Level2数据时,整个人都懵了。数据量比Tick大了好几倍,而且结构复杂。但后来发现,很多高频策略的核心信号,比如“大单吃货”、“托盘撤单”,都是从Level2数据里挖出来的。

Level2行情 vs 普通Tick:

  • 普通Tick:只告诉你“发生了什么”
  • Level2:还告诉你“正在发生什么”和“可能发生什么”

1.5 常见商品期货交易所数据格式

国内三大商品期货交易所,数据格式各有各的脾气。我一个个说。

1.5.1 上海期货交易所(SHFE)

上期所的数据格式比较“规矩”。Tick数据通常包含:

  • 合约代码、时间、最新价、成交量、持仓量
  • 申买价一、申卖价一、申买量一、申卖量一
  • 结算价、涨跌停板等

我习惯把上期所的数据叫做“五档行情”,因为它默认只提供买卖各五档的挂单信息。

1.5.2 大连商品交易所(DCE)

大商所的数据格式稍微“灵活”一些。它的Tick数据会额外包含:

  • 开高低收(有些数据源会直接提供)
  • 成交量、持仓量变化
  • 买卖方向标识(主动买/主动卖)

嗯,这里有个坑:大商所的Tick数据中,成交量的单位是“手”,但有些数据源会给你“张”。一定要确认清楚。

1.5.3 郑州商品交易所(ZCE)

郑商所的数据格式,我个人觉得是最“复杂”的。它的Tick数据包含:

  • 标准字段(时间、价格、成交量)
  • 额外的“行情快照”信息
  • 部分合约会有“期权行情”字段

我曾经在郑商所的数据上栽过跟头。它的时间戳有时会“跳秒”,导致数据对齐出问题。后来我加了一个校验逻辑,才解决这个问题。

1.6 数据格式对比一览

交易所 Tick字段数 Level2支持 时间精度 特殊字段
上期所 约15-20个 五档 毫秒 结算价、涨跌停
大商所 约12-18个 五档 毫秒 买卖方向标识
郑商所 约18-25个 十档 毫秒 期权行情、快照

1.7 知识体系结构图

下面这张图,是我梳理的高频数据基础的知识体系。你可以把它当作本章的“地图”。

高频数据基础知识体系 高频数据 Tick数据 Bar数据 Level2行情 每笔成交记录 毫秒级时间戳 买卖方向 OHLCV五要素 时间窗口聚合 数据压缩降维 十档挂单 逐笔成交 委托队列 常见交易所数据格式 上期所(五档) | 大商所(五档+方向) | 郑商所(十档+期权)

1.8 实战建议:如何选择数据源?

最后,我给大家几个实战建议:

  1. 做研究用Bar数据:速度快,内存占用小,适合策略验证
  2. 做高频策略用Tick数据:信息完整,但要做好数据清洗
  3. 做订单簿策略用Level2:数据量大,建议用C++或Rust处理
  4. 注意数据对齐:不同交易所的时间戳格式不同,一定要统一

我的小技巧:刚开始接触高频数据时,先拿一个月的Tick数据练手。不要贪多,把数据清洗、存储、回测的流程跑通,再慢慢扩展。我曾经一口气下载了三年的数据,结果光清洗就花了两周,得不偿失。

好了,高频数据的基础就聊到这里。记住:数据是量化交易的“原材料”,原材料不好,再好的策略也白搭。

专注资料整理