一、Tick数据基础:什么是Tick数据?

做量化交易这些年,我接触过各种各样的数据。但要说最底层、最真实的市场数据,还得是Tick数据。

说白了,Tick数据就是交易所每产生一笔交易,就记录一条数据。它不像K线那样经过加工,而是最原始的交易流水。我刚开始接触时也觉得这玩意儿太细了,后来才发现——细节里藏着魔鬼,也藏着利润。

1.1 Tick数据的定义

Tick数据,也叫逐笔成交数据。每一笔交易都会生成一条Tick记录。它包含的信息非常具体:

  • 成交时间:精确到毫秒甚至微秒
  • 成交价格:这笔交易的实际成交价
  • 成交量:这笔交易成交了多少手
  • 成交方向:主动买还是主动卖
  • 买卖盘口:成交时刻的买一卖一价和量

举个例子,我在A股市场拿到的Tick数据长这样:

时间戳, 代码, 价格, 成交量, 方向, 买一价, 买一量, 卖一价, 卖一量
09:30:01.123, 600519, 188.50, 100, 买, 188.49, 200, 188.51, 300
09:30:01.456, 600519, 188.51, 200, 卖, 188.50, 150, 188.52, 400

嗯,这里要注意:不同交易所的Tick格式略有差异。比如期货市场的Tick还会包含持仓量变化,外汇市场的Tick则没有方向标记。我当年做跨市场策略时,光统一数据格式就折腾了两周。

1.2 Tick数据与分钟数据的区别

很多人问我:直接用分钟数据做策略不行吗?非要搞Tick?

我的回答是:看你想赚什么钱。

分钟数据是把一段时间内的交易压缩成四个价格(开高低收)和一个总量。它丢掉了太多信息:

对比维度 Tick数据 分钟数据
时间精度 毫秒级 60秒聚合
交易细节 每笔都记录 只保留4个价格
成交量分布 逐笔可查 只有总量
买卖方向
盘口信息
数据量 极大(每天数GB) 较小(每天几MB)
策略类型 高频、超短线 中低频、趋势

你看这个表格就明白了。分钟数据适合做趋势跟踪、波段交易。但如果你要做超短线,比如持仓几秒到几分钟那种,没有Tick数据根本玩不转。

我记得有一次,我用分钟数据回测一个策略,收益曲线漂亮得很。结果一上实盘,亏得亲妈都不认识。后来一查,原来是分钟数据把很多关键的价格反转细节给平滑掉了。从那以后,超短线策略我只看Tick。

1.3 Tick数据的采集与存储

采集Tick数据,说白了就是跟时间赛跑。我见过太多人在这上面栽跟头。

⚠️ 常见坑点:

我曾经用Python的requests库直接拉取交易所API的Tick数据,结果发现数据经常丢包。后来改用WebSocket + 本地缓存,才解决了这个问题。

采集方式主要有三种:

  1. 直接API接入:通过交易所提供的行情接口,实时接收Tick推送。延迟最低,但需要自己处理断线重连。
  2. 数据服务商:比如Wind、聚宽、米筐等,它们提供整理好的Tick数据。省事,但贵,而且有延迟。
  3. 自行爬取:从交易所官网或第三方网站抓取。不推荐,容易被封IP,而且数据质量没保证。

我个人习惯用第一种方式。虽然前期开发工作量大,但数据质量可控,延迟也最低。做超短线,延迟就是生命线。

存储方面,Tick数据量巨大。一只股票一天就能产生几千到几万条Tick。全市场几千只股票,一天的数据量轻松上GB。

我推荐用以下方案:

  • 存储格式:用Parquet或HDF5,不要用CSV。CSV读写太慢,而且压缩率低。
  • 分片存储:按日期分文件夹,每个股票单独文件。查询时按需加载,不用全量读入内存。
  • 索引优化:对时间戳和股票代码建立索引。我试过没索引时查询一天的数据要30秒,加了索引后不到1秒。
# 一个简单的Tick数据存储示例(伪代码)
def save_tick_data(data, date, symbol):
    # 按日期和股票代码分片存储
    file_path = f"/data/tick/{date}/{symbol}.parquet"
    # 使用Parquet格式,压缩率高,读写快
    data.to_parquet(file_path, compression='snappy')

def load_tick_data(date, symbol, start_time, end_time):
    file_path = f"/data/tick/{date}/{symbol}.parquet"
    df = pd.read_parquet(file_path)
    # 利用时间索引快速筛选
    return df[(df['timestamp'] >= start_time) & (df['timestamp'] <= end_time)]
💡 小技巧:

如果你只是做研究,不需要实时数据,可以买历史Tick数据。价格不贵,而且省去了采集的麻烦。我刚开始做研究时就是这么干的。

1.4 Tick数据的核心价值

说了这么多,Tick数据到底能用来做什么?

我总结了几点:

  • 捕捉微观动量:大单连续买入,说明主力在吃货。Tick数据能让你在几秒内发现这个信号。
  • 识别虚假突破:价格突破了,但成交量没跟上?Tick数据一看就知道是虚的。
  • 计算真实流动性:盘口的挂单量是虚的,成交的才是真的。Tick数据告诉你真实的买卖力量。
  • 构建高频因子:比如订单流不平衡度、买卖压力比等,这些因子只能从Tick数据中计算。

说白了,Tick数据就是市场的「显微镜」。它能让你看到别人看不到的细节。而这些细节,就是超额收益的来源。

核心要点:Tick数据是逐笔成交记录,精度到毫秒级。它比分钟数据包含更多细节,适合超短线策略。采集时注意延迟和丢包,存储时用Parquet格式并按日期分片。

嗯,这一章就到这里。Tick数据是后面所有策略的基础,建议你花时间把数据采集和存储的流程跑通。磨刀不误砍柴工,数据搞定了,策略才能跑得稳。


专注资料整理