一、行情快照概述

1.1 什么是行情快照

行情快照,说白了就是交易所某个时间点的「市场全景照片」。

我经常跟团队新人这么解释:你打开股票软件,看到买一卖一的价格和数量,那就是一个快照。它记录的是「此时此刻,市场长什么样」。

更准确地说,行情快照包含了当前时刻所有可交易品种的盘口数据——

  • 最新成交价、涨跌幅
  • 买一到买五(或买十)的委托价格和数量
  • 卖一到卖五(或卖十)的委托价格和数量
  • 当日开盘价、最高价、最低价、收盘价
  • 成交量、成交额、持仓量(期货)

嗯,这里要注意:快照和逐笔成交是两码事。快照是「状态」,逐笔是「事件」。我在早期做量化系统时,就犯过把两者混用的错误,结果回测数据对不上实盘,排查了整整两天。

核心定义:行情快照是交易所按固定时间间隔(通常100ms-500ms)发布的当前市场状态全集。它不包含订单的到达顺序,只包含最终汇总结果。

1.2 行情快照在交易系统中的作用

你想想看,一个交易系统每秒要处理成千上万笔订单。如果没有快照,你怎么知道当前市场深度?

我个人习惯把行情快照比作「交易系统的地基」。具体来说,它承担着三个关键角色:

  1. 策略决策的输入源——大部分策略都需要基于当前盘口做判断。比如做市商策略,必须知道买卖双方的挂单分布。
  2. 风险控制的基准——我曾在项目中遇到过,一个高频策略因为快照数据延迟,导致在错误的价格区间下单,瞬间亏损了十几万。从那以后,我把快照延迟监控写进了风控模块。
  3. 回测与实盘的校准器——回测时用的就是历史快照数据。如果快照格式理解错了,回测结果再漂亮也是白搭。

其实还有一个容易被忽略的点:快照是交易所对外输出的「官方数据」。逐笔数据可能因为网络丢包而缺失,但快照是定期发布的,天然具有容错性。

我的经验:在搭建行情系统时,优先保证快照链路的稳定性。逐笔数据丢了可以补,快照丢了整个系统就瞎了。

1.3 常见的行情快照类型

行情快照不是只有一种。不同交易所、不同市场,快照的深度和内容差异很大。我把它分成两大类:Level1 和 Level2。

Level1 行情快照

Level1 是基础版,也叫「普通行情」。大多数散户看到的行情就是 Level1。

特性 说明
盘口深度 买一~买五,卖一~卖五
更新频率 通常 3-5 秒一次
数据量 小,约几百字节/条
典型场景 散户交易软件、低频策略

Level1 的特点是「够用,但不精细」。我记得刚入行时,用 Level1 数据做高频策略,结果发现盘口变化根本跟不上实际成交速度。后来才明白,Level1 的 5 秒间隔里,市场可能已经翻了好几轮了。

Level2 行情快照

Level2 是深度版,也叫「极速行情」或「专业行情」。这是量化交易者的标配。

特性 说明
盘口深度 买一~买十,甚至买五十
更新频率 100ms-500ms
数据量 大,约几KB/条
典型场景 高频交易、做市策略、算法交易

Level2 除了盘口更深,还包含一些额外信息:

  • 逐笔委托(Order Book 的每一笔变化)
  • 大单统计(单笔超过一定金额的订单)
  • 买卖队列(部分交易所提供)

我曾经在对接某期货交易所时,发现他们的 Level2 快照里还带了一个「加权平均价格」字段。这个字段在官方文档里只提了一句,但后来我发现用它来做滑点估算特别准。

避坑指南:不同交易所对 Level2 的定义不一样。有的叫「深度行情」,有的叫「全量快照」。对接前一定要仔细看协议文档,我曾经因为想当然地以为所有 Level2 格式都一样,结果解析出来的数据全是乱码。

1.4 快照协议的核心逻辑

说了这么多,我们来看看行情快照在协议层面是怎么组织的。下面这张图是我自己总结的,基本覆盖了主流交易所的设计思路。

行情快照协议核心逻辑 交易所 快照生成器 定时触发(100ms-5s) 协议封装 二进制/JSON/Protobuf 网络传输 协议解析器 解包/校验/重组 内存快照对象 Python dict/class 策略模块 / 风控模块 / 记录模块 基于快照做决策 数据源 消费端

这张图展示了一条完整的快照数据流:

  • 交易所内部定时生成快照
  • 按照特定协议格式封装(二进制居多)
  • 通过网络推送到客户端
  • 客户端解析后转为内存对象
  • 最终被策略、风控等模块消费

我建议你在学习具体协议之前,先把这张图印在脑子里。因为无论对接哪个交易所,流程都是这个套路。只是协议格式不同,解析方式不同罢了。

小技巧:刚开始接触一个新交易所的快照协议时,先抓包看原始数据。不要急着写解析代码。我每次都是先看十六进制,再对照文档,这样能最快发现文档和实际数据的差异。

好了,关于行情快照的基本概念就讲到这里。下一节我们会深入 Level2 快照的二进制协议细节,到时候我会带着你一行一行地写解析代码。

本章要点回顾:

  • 行情快照 = 市场在某个时间点的完整状态
  • 快照是策略决策、风控、回测的基础
  • Level1 适合低频,Level2 适合高频
  • 协议解析的核心流程:接收 → 解包 → 校验 → 转换 → 消费

专注资料整理