2. 盘口数据基础与信号提取
盘口信号组合分析的第一步,不是急着看形态,而是把原始行情数据变成"可计算的字段"。Level-1 与 Level-2 的差别,本质上决定了你能提取出什么粒度的信号:Level-1 只给最优一档买卖价与量,Level-2 则给出多档委托队列和逐笔成交明细。理解这两类数据的结构,是后续所有信号组合的前提。
一、两类行情数据的结构差异
Level-1 快照通常包含:最新价、成交量、成交额、买一价/买一量、卖一价/卖一量,以及开盘、最高、最低、昨收等统计字段。它的更新频率多为 3 秒一次,信息密度低,适合做趋势类、量比类粗粒度信号。
Level-2 在快照基础上扩展为十档(或更多)买卖盘,并附带逐笔成交(含成交方向、成交价、成交量、成交序号)与逐笔委托(含委托序号、价格、数量、买卖方向)。逐笔数据是"事件流",每笔都有唯一序号,可还原撮合过程;委托队列则反映某一价位上排队的单量分布。二者结合,才能观察到"大单撤挂""主动买卖""队列消耗"等微观行为。
二、从原始字段到可计算信号
原始数据本身不能直接用于组合判断,需要先做字段派生。常见做法是:以快照序列为骨架,把逐笔成交按时间窗口聚合,再与盘口档位对齐。下面给出一个典型的提取流程与字段定义。
# 示例:单只股票某交易日的信号字段提取(参数为教学假设值)
输入:
snapshot.csv # 3秒快照:时间, 最新价, 买一价, 买一量, 卖一价, 卖一量, 十档...
tick.csv # 逐笔成交:序号, 时间, 价格, 数量, 方向(B/S)
派生字段:
active_buy_vol = 窗口内方向为B的成交量之和
active_sell_vol = 窗口内方向为S的成交量之和
order_imbalance = (买一量 - 卖一量) / (买一量 + 卖一量)
queue_ratio = 买一量 / 前五档买量之和
trade_intensity = 窗口成交量 / 窗口时长(秒)
big_order_flag = 单笔成交量 > 窗口均量 × 3 ? 1 : 0
这里的关键是"窗口"的选择。窗口过短,信号噪声大;过长,则微观结构被平滑掉。实践中常以 10 秒、30 秒、1 分钟三档并行计算,分别对应瞬时冲击、短期情绪与日内节奏。示例中 order_imbalance 取值在 [-1, 1],正值表示买盘占优;queue_ratio 越接近 1,说明买盘量越集中在最优档,队列越"薄",价格越容易被推动。
三、读取委托队列与档位的实操要点
委托队列不是简单的"买一量",而是同一价位上按时间先后排队的委托集合。读取时要关注两点:一是队列总量的变化方向(增/减),二是队列中是否有大单在"前部"阻挡。若买一价位队列总量持续增加但价格不涨,往往意味着有被动承接盘在堆积;若队列突然大幅减少而价格上移,则可能是主动扫单或撤单所致。
买卖盘档位的读取要注意"档位深度"与"价格间距"。十档数据中,若某几档之间价格间距异常拉大,说明流动性出现断层,此时用简单的买卖量比会失真,应改用"有效档位加权"的方式计算失衡度。
四、一个可复现的提取示例
假设某股票在 10:00:00 至 10:00:30 的窗口内,逐笔成交共 120 笔,其中方向为 B 的成交量合计 8.6 万股,方向为 S 的合计 5.2 万股;窗口末快照显示买一量 1.2 万股、卖一量 0.9 万股,前五档买量合计 4.8 万股。则:
active_buy_vol = 86000,active_sell_vol = 52000,主动买占比约 62.3%;order_imbalance = (12000 - 9000) / (12000 + 9000) ≈ 0.143,买盘略占优;queue_ratio = 12000 / 48000 = 0.25,买一档占前五档的四分之一,队列不算特别集中;trade_intensity = (86000 + 52000) / 30 ≈ 4600 股/秒,属于中等活跃度。
这些数值本身不构成买卖结论,但它们是后续"信号组合"的输入。例如,当 active_buy_vol 占比高、order_imbalance 为正、且 queue_ratio 偏低时,说明主动买盘强而买一档承接薄,价格上行阻力较小;反之若主动买占比高但 queue_ratio 很高,则可能是大单在买一档堆积、上攻意愿存疑。
active_buy_vol 与 active_sell_vol 会整体颠倒,导致后续信号全部反向。五、提取任务的验收标准
完成字段提取后,建议用三条标准自检:其一,字段在时间轴上连续、无空洞,窗口边界对齐快照时间;其二,同一窗口内 active_buy_vol + active_sell_vol 应等于该窗口逐笔成交量之和(允许因集合竞价等特殊时段有微小差异);其三,order_imbalance 与 queue_ratio 的取值范围符合定义,不出现越界值。满足这三条,才说明原始数据到信号字段的链路是可靠的,可以进入下一步的信号组合与相关性约束分析。