2. 盘口数据结构解析

要理解买卖价差,先要理解它“住在哪里”。价差不是行情软件凭空算出来的一个数字,而是限价订单簿(Limit Order Book,LOB)中买一价与卖一价之间那段空隙的直接投影。本节我们把盘口数据拆开,看清字段、层级与委托量分布,并定位价差在原始数据中的确切位置。

一、盘口数据的字段构成

一条标准的盘口快照(Level-1 或 Level-2 行情)通常包含以下核心字段:

  • 时间戳:快照生成时间,精确到毫秒或微秒,决定数据的新鲜度。
  • 买一价 / 卖一价(bid1 / ask1):当前最优买价与最优卖价,是价差计算的两个端点。
  • 买一量 / 卖一量(bid1_size / ask1_size):挂在最优价位上的委托数量,反映该价位的即时承接或抛压强度。
  • 多档价位与数量:五档、十档行情依次给出 bid2~bid5(或 bid10)、ask2~ask5(或 ask10)及对应委托量。
  • 委托笔数(可选):部分行情源提供每档的订单笔数,用于判断该价位是“大单集中”还是“小单堆积”。

以某只示例股票的十档快照为例(以下为教学假设数据,非实测):买一价 10.00 元、买一量 3200 股;卖一价 10.02 元、卖一量 1800 股。则价差 = 10.02 − 10.00 = 0.02 元,相对价差 = 0.02 / 10.01 ≈ 0.20%(以中间价 10.01 为分母)。这 0.02 元就是盘口原始数据中 bid1 与 ask1 两个字段之差,不需要任何额外推导。

二、层级结构:从买一到买十的排列逻辑

限价订单簿的层级遵循严格的价格优先规则:买单按价格从高到低排列,卖单按价格从低到高排列。买一永远是当前最高买价,卖一永远是当前最低卖价。因此,价差恰好位于买一与卖一之间,是订单簿中唯一一段“没有挂单”的价格区间。理解这一点,就能明白为什么价差是衡量即时交易成本最直接的指标:任何市价单成交,都必须先“跨越”这段空白。

五档与十档的区别在于可见深度。五档只展示最优五个价位,十档则多出五个价位。深度越深,越能看出委托量在价格轴上的分布形态——是集中在近端(流动性厚),还是向远端稀疏铺开(流动性薄)。

限价订单簿层级结构与价差位置(示例数据) 卖盘(Ask)价格由低到高 卖五 10.10 × 900 卖四 10.08 × 1500 卖三 10.06 × 2100 卖二 10.04 × 2600 卖一 10.02 × 1800(ask1) 价差 = 0.02 元(无挂单区间) 买一 10.00 × 3200(bid1) 买盘(Bid)价格由高到低 买二 9.98 × 2800 买三 9.96 × 4100 字段与层级要点 ask1 为最低卖价,bid1 为最高买价 价差 = ask1 − bid1,位于两者之间 买盘价格递减,卖盘价格递增 委托量分布反映各价位流动性厚度 五档/十档仅改变可见深度,不改变排序规则 相对价差计算 中间价 = (10.02 + 10.00) / 2 = 10.01 相对价差 = 0.02 / 10.01 ≈ 0.20% 注:以上为教学假设数据,非实测行情

三、委托量分布:价差之外的第二个观察维度

价差告诉你“跨越一次要付多少”,委托量分布则告诉你“这个价位能承接多少”。两者结合才有实际意义。例如卖一量仅 1800 股,而买一量 3200 股,说明卖方近端挂单偏薄;若此时出现一笔 5000 股的市价买单,吃掉卖一 1800 股后还会继续向上扫卖二、卖三,实际成交均价将高于卖一价,形成冲击成本。因此,盘口分析不能只看价差数字,还要看价差两侧的“厚度”。

观察委托量分布时,可关注三个特征:其一,近端(买一/卖一)量是否显著大于远端,若是则流动性集中、价差相对稳定;其二,是否存在某一档位的“量堆”,如卖三突然出现万手大单,可能构成短期阻力;其三,买卖两侧总量是否失衡,买盘总量远大于卖盘时,价格上行压力较大。这些判断都直接来自盘口原始字段,无需复杂计算。

四、实操:从原始快照中定位价差

假设你拿到一条 JSON 格式的十档快照(教学示例):

{
  "symbol": "600XXX",
  "timestamp": "2025-03-14T10:15:30.250",
  "bids": [[10.00, 3200], [9.98, 2800], [9.96, 4100], ...],
  "asks": [[10.02, 1800], [10.04, 2600], [10.06, 2100], ...]
}

提取价差的步骤很直接:取 bids[0][0] 得买一价 10.00,取 asks[0][0] 得卖一价 10.02,相减得 0.02 元。若要计算相对价差,再取两者均值 10.01 作分母,得 0.20%。注意 bids 数组已按价格降序排列、asks 按升序排列,因此索引 0 即为最优价位,无需额外排序。若数据源未保证排序,应先校验 bids[0][0] >= bids[1][0] 且 asks[0][0] <= asks[1][0],否则价差计算会出错。

盘口快照是“瞬时切片”,两次快照之间订单簿可能已发生变化。做成本估算时,应结合快照时间戳判断数据新鲜度,避免用过期盘口计算即时成本。

五、常见误区与校验要点

第一,把“五档”误认为只有五个价位有挂单。五档只是展示前五个价位,订单簿实际深度远不止于此。第二,忽略买卖方向的定义:买一是“有人愿意买的最高价”,卖一是“有人愿意卖的最低价”,价差为正才正常;若出现 ask1 < bid1,说明数据异常或存在跨市场套利,需排查数据源。第三,用最新成交价代替中间价计算相对价差,会导致口径不一致,建议统一以 (bid1 + ask1) / 2 为分母。