3. 行情快照数据结构:深度行情快照(Order Book Snapshot)的字段解析

做量化交易的朋友都知道,行情数据是咱们的“眼睛”。而深度行情快照,说白了就是交易所给你拍的一张“市场全家福”。这张照片里,买卖双方都在什么价位挂了多大的单子,一目了然。

我个人习惯把行情快照比作“战场态势图”。买盘是防守方,卖盘是进攻方。你只有看清了双方的兵力部署,才知道下一步该怎么走。今天咱们就来拆解一下,这张“态势图”里到底包含了哪些关键信息。

3.1 买卖盘口:市场的“城墙”与“护城河”

先看最核心的部分——买卖盘口。也就是我们常说的 Bid 和 Ask。

  • 买盘(Bid):当前市场上,所有买家愿意出的最高价,以及对应的挂单量。
  • 卖盘(Ask):当前市场上,所有卖家愿意接受的最低价,以及对应的挂单量。

这里有个细节,我刚开始做的时候也犯过迷糊。盘口数据通常不是只给一个价格,而是给一个“深度列表”。比如买一到买十,卖一到卖十。每一档都包含价格和数量。

关键字段:

  • bids[0].price:买一价,也就是最高买入价
  • bids[0].size:买一量,这个价格上的挂单数量
  • asks[0].price:卖一价,也就是最低卖出价
  • asks[0].size:卖一量

为什么说这个重要?你想想看,买一和卖一之间的价差,就是“买卖价差”(Spread)。这个值越小,说明市场流动性越好。我在做高频策略时,如果发现某个品种的 Spread 突然拉大,第一反应就是——要么有大消息要出,要么就是流动性枯竭了。嗯,这时候得小心。

3.2 最新价:市场的“心跳”

最新价(Last Price),就是最近一笔成交的价格。它不像盘口数据那样反映“意愿”,而是反映“事实”。

但这里有个坑,我曾经踩过。最新价并不总是等于买一或卖一。为什么?因为成交可能发生在盘口中间,也可能因为大单扫货,直接吃掉了好几档。所以,最新价只能告诉你“刚才发生了什么”,不能告诉你“现在能成交什么”。

注意: 千万别用最新价去判断当前能否成交。判断能否成交,要看买一和卖一。这是很多新手容易搞混的地方。

3.3 成交量:市场的“体温”

成交量(Volume),通常指的是从当天开盘到当前时刻,累计成交的总数量。有些交易所也会提供“当日成交额”(Turnover)。

我个人习惯把成交量看作“体温”。成交量温和放大,说明市场在慢慢活跃。成交量突然爆量,那多半是有大资金进场或离场。我记得有一次做回测,发现某个策略在成交量低于某个阈值时,胜率会大幅下降。后来我加了一个成交量过滤条件,效果好了不少。

常见的成交量字段:

  • volume:累计成交量(股数或合约数)
  • turnover:累计成交额(金额)
  • trade_count:成交笔数(部分交易所提供)

3.4 完整的快照结构示例

下面是一个典型的深度行情快照 JSON 结构。我拿它来给大家做个拆解。

{
  "symbol": "BTCUSDT",
  "timestamp": 1696000000000,
  "bids": [
    {"price": 27000.00, "size": 1.5},
    {"price": 26999.50, "size": 2.3},
    {"price": 26999.00, "size": 0.8}
  ],
  "asks": [
    {"price": 27000.50, "size": 1.2},
    {"price": 27001.00, "size": 3.1},
    {"price": 27001.50, "size": 0.5}
  ],
  "last_price": 27000.25,
  "volume": 12500.0,
  "turnover": 337500000.0
}

你看,这个结构很清晰。bids 数组按价格从高到低排列,asks 数组按价格从低到高排列。这样设计是有道理的——你取 bids[0] 就是买一,asks[0] 就是卖一,效率很高。

3.5 知识体系结构图

为了让你更直观地理解这些字段之间的关系,我画了一张图。

深度行情快照核心字段结构 行情快照 买卖盘口 (Order Book) 最新价 (Last Price) 成交量 (Volume) 买一价 / 买一量 卖一价 / 卖一量 最近一笔成交价 累计成交量 累计成交额 三者共同构成完整的市场状态快照

3.6 实战中的注意事项

讲完了理论,咱们聊聊实战。我总结了几点经验,希望能帮你少走弯路。

技巧: 处理快照数据时,一定要关注时间戳。不同交易所的时间戳精度不一样,有的到毫秒,有的到微秒。做高频策略时,时间戳对齐是个大问题。我建议统一转成纳秒级再比较。

另外,买卖盘口的数量级也要注意。有些交易所的 bids 和 asks 只给前 10 档,有些给 50 档,甚至全量。如果你做的是高频做市策略,全量盘口是必须的。但如果你只是做趋势跟踪,前 10 档基本够用了。

我曾经犯过一个错误:在回测时用了全量盘口数据,但实盘时交易所只给了 10 档。结果策略表现差异很大。后来我学乖了,回测和实盘的数据源必须保持一致。

3.7 字段汇总表

最后,我把这些核心字段整理成了一张表,方便你查阅。

字段 含义 典型值 注意事项
bids[0].price 买一价(最高买入价) 27000.00 价格按降序排列
bids[0].size 买一量 1.5 单位可能是股或张
asks[0].price 卖一价(最低卖出价) 27000.50 价格按升序排列
asks[0].size 卖一量 1.2 注意与买一量的对比
last_price 最新成交价 27000.25 不等于买一或卖一
volume 累计成交量 12500.0 从开盘累计至今
turnover 累计成交额 337500000.0 用于计算均价

好了,关于深度行情快照的字段解析,咱们就聊到这儿。记住,买卖盘口、最新价、成交量,这三者缺一不可。它们共同构成了市场的“快照”,是你做任何交易决策的基础。


专注资料整理