一、快照数据结构:Level2数据的“身份证”
做量化交易的朋友都知道,Level2数据是高频交易的“血液”。而快照数据,就是这血液里最核心的成分。说白了,快照就是交易所每隔几毫秒给市场拍的一张“照片”——记录了那一刻所有订单簿的状态。
我个人习惯把快照数据比作“市场的心跳”。每次心跳,都告诉你当前谁在买、谁在卖、成交了多少。嗯,咱们今天就把它彻底拆开看看。
1.1 沪深交易所的快照长什么样?
先看一个最简化的快照结构。我当年刚接触Level2时,看到这个结构差点晕过去——字段太多了。但后来发现,核心字段其实就那么几个。
// 上证Level2快照核心结构(简化版)
struct Snapshot {
uint64 timestamp; // 时间戳,精确到微秒
string securityID; // 证券代码
uint64 preClosePrice; // 昨收价
uint64 openPrice; // 今日开盘价
uint64 highPrice; // 最高价
uint64 lowPrice; // 最低价
uint64 lastPrice; // 最新价
uint64 volume; // 成交量(股)
uint64 amount; // 成交额(元)
uint64 totalBidVol; // 委买总量
uint64 totalAskVol; // 委卖总量
uint64 weightedBid; // 委买加权均价
uint64 weightedAsk; // 委卖加权均价
uint64 bidPrice[10]; // 买一到买十价格
uint64 bidVolume[10]; // 买一到买十数量
uint64 askPrice[10]; // 卖一到卖十价格
uint64 askVolume[10]; // 卖一到卖十数量
};
你可能会问:为什么价格都用 uint64?因为交易所为了精度,把价格乘以了10000(深交所)或1000(上交所)来存储。这个坑我踩过——直接拿uint64当价格用,算出来的盈亏能让你怀疑人生。
1.2 核心字段详解:这些数字在说什么?
咱们挑几个最关键的字段,说说它们背后的门道。
最新价(lastPrice)
这个字段看似简单,但有个细节:它是当前时刻最后一笔成交的价格,不是当前时刻的“实时价格”。我在做回测时发现,直接用最新价作为“当前价格”会导致严重的未来函数问题。你想想看,最新价是已经成交的价格,而你的策略是在成交之前就要做出判断的。
成交量(volume)与成交额(amount)
这两个是累计值——从开盘到当前时刻的总成交量和总成交额。不是当笔成交量!我见过不少新手拿这个字段做“瞬时成交量”分析,结果发现曲线永远单调递增,还以为发现了什么神奇规律。
要算瞬时成交量,你得用当前快照的volume减去上一个快照的volume。这个差值才是这段时间内的成交活跃度。
委买委卖(bid/ask)
这里有个容易忽略的点:委买总量(totalBidVol)是所有买单的挂单量之和,但它是“档位总量”。什么意思?就是买一到买十的挂单量加起来。但有些交易所的Level2数据只提供前10档,后面的挂单你是看不到的。
我曾经在实盘中吃过这个亏——看着委买量很大,以为买盘强劲,结果大单直接砸穿买一到买十,后面还有无穷无尽的卖单。嗯,这就是“冰山订单”的威力。
1.3 数据频率与时间戳:快照到底有多“快”?
沪深交易所的快照频率是不一样的。我整理了一个表格,方便你对比:
| 交易所 | 快照频率 | 时间戳精度 | 备注 |
|---|---|---|---|
| 上海证券交易所 | 约3秒/次 | 微秒(μs) | 盘中连续撮合阶段 |
| 深圳证券交易所 | 约3秒/次 | 微秒(μs) | 与上证基本一致 |
| 集合竞价阶段 | 约1秒/次 | 微秒(μs) | 开盘/收盘集合竞价 |
你可能会问:3秒一次,这算高频吗?说实话,对于日频策略来说,3秒一次已经非常快了。但对于真正的T+0高频策略,3秒的间隔里可能已经发生了上百笔交易。所以,快照数据更适合做“状态分析”,而不是“逐笔分析”。
时间戳这块有个坑:交易所给的时间戳是“快照生成时间”,不是“数据到达时间”。网络传输会有延迟,如果你用本地时间戳去对齐数据,会出现偏差。我的做法是:始终使用交易所时间戳,本地只做接收时间的记录,用于监控延迟。
1.4 知识体系总览
下面这张图,是我自己画的知识结构。它把快照数据的核心要素串在了一起。你看完这张图,应该能对本章内容有个整体把握。
好了,快照数据结构这块就聊到这儿。记住一句话:快照是市场的“照片”,不是“录像”。你要学会从一张张照片里,读出市场的情绪和动向。下一章咱们聊聊怎么高效地解析和存储这些快照数据——毕竟,光看懂还不够,得能处理才行。
公众号:蓝海资料掘金营,微信deep3321