1. 课程导入与目标设定

十档盘口是A股Level-2行情中最具信息密度的部分之一:买一到买十、卖一到卖十共二十个价位,每个价位都带有价格与委托数量,行情快照通常以3秒为间隔推送。单看某一帧快照,交易者只能看到"此刻的挂单厚度";而真正决定盘口解读价值的,是这些挂单在时间轴上的变化过程——大单是撤了还是被吃了、买卖力量是持续失衡还是瞬间脉冲、某个价位是反复堆积还是快速消耗。本课程要解决的核心问题就是:如何把连续快照中的十档盘口状态,转化为可回放、可对比、可检索的可视化历史,让"盘口记忆"从人脑的模糊印象变成可复用的分析资产。

为什么需要"历史状态"而不是"实时快照"

实时盘口软件大多只呈现当前一帧,历史帧要么被覆盖,要么只能以逐笔成交或分时图间接推断。这带来三个典型痛点:其一,撤单不可见。某档位数量从8000手降到2000手,可能是被成交吃掉,也可能是撤单,二者对后续走势的含义完全不同,仅看快照无法区分。其二,节奏不可感。盘口失衡持续了5秒还是5分钟,决定了它是噪声还是信号,而单帧没有时间维度。其三,复盘不可查。事后想验证"当时卖五压单突然消失后价格是否上攻",缺少可定位到具体时刻的盘口画面。

因此,本课程的目标不是做一个"更漂亮的盘口界面",而是建立一条完整链路:原始快照 → 状态结构化 → 变化事件提取 → 历史可视化 → 洞察与验证。可视化只是链路的呈现端,前面的数据组织方式决定了后面能看出什么。

十档盘口历史状态可视化:从数据到洞察的完整链路 ① 原始快照 买一~买十 / 卖一~卖十 价格 + 委托量 · 3秒一帧 ② 状态结构化 档位对齐 · 缺失补位 时间戳归一 · 单位统一 ③ 变化事件提取 增挂 / 撤单 / 成交消耗 失衡度 · 大单异动 ④ 历史可视化 热力条带 · 时间轴回放 档位对比 · 事件标注 ⑤ 洞察与验证 假设 → 回放核对 信号有效性检验 验证结果反哺事件规则与阈值 盘口状态示意(某一帧) 卖盘(卖十 → 卖一) 卖十10.52 / 320手 卖九10.51 / 480手 卖八10.50 / 240手 卖七10.49 / 640手 卖六10.48 / 370手 卖五10.47 / 1080手 卖四10.46 / 290手 卖三10.45 / 420手 买盘(买一 → 买十) 买一10.43 / 380手 买二10.42 / 590手 买三10.41 / 260手 买四10.40 / 450手 买五10.39 / 860手 买六10.38 / 210手 买七10.37 / 340手 买八10.36 / 500手 价差 0.04元 注:图中价格与手数为教学示例,非真实行情数据

课程工具链与最终交付物

为了让链路可落地,本课程统一使用一套轻量工具链,避免陷入复杂工程环境:Python + pandas负责快照数据的清洗与状态表构建,NumPy处理档位矩阵运算,Plotly或Matplotlib完成时间轴热力图与回放视图,Jupyter Notebook作为交互式分析载体。数据源可以是券商Level-2历史快照文件(常见为逐帧CSV或二进制解析后的结构化表),也可以是自行录制的行情样本。课程不依赖特定商业终端,所有示例都以"一张包含时间戳、买卖十档价格与数量的宽表"为起点。

最终交付物是一份盘口历史状态可视化报告,包含三部分:一张按时间展开的十档挂单热力条带图(横轴为时间,纵轴为二十个档位,颜色深浅表示委托量),一组关键变化事件的标注(如"卖五1080手在14:32:15被连续成交消耗至120手"),以及一段可回放的区间视图,支持按时间窗口截取并对比前后状态。这份报告既是分析成果,也是后续章节逐步搭建的目标。

学习路径与关键约定

课程将按"数据准备—状态建模—事件识别—可视化实现—案例验证"的顺序推进。在开始前需要明确两个约定,全文与所有图示保持一致:第一,档位编号方向,买一为最接近当前价的下方一档,买十为下方第十档;卖一同理向上。第二,数量单位统一为"手",价格统一保留两位小数,时间戳统一为"时:分:秒"并保留毫秒用于事件定位。这两个约定看似琐碎,但在后续做档位对齐和跨帧比较时,方向或单位不一致会直接导致失衡度计算反向,是初学者最常见的错误来源。

建议在动手前先准备一段不少于30分钟的连续快照样本,覆盖至少一次明显的盘口异动(如大单撤挂或集中成交),这样后续每一节的可视化都能在真实节奏上得到检验,而不是停留在静态示意。

需要强调的是,可视化的目的不是"把数据画出来",而是让原本隐藏在连续帧中的状态转移变得可观察。当你能在一条时间轴上指出"这一刻卖压开始堆积、那一刻买盘被抽走",并且能用事件规则解释颜色变化的原因,这条从数据到洞察的链路才算真正打通。接下来的章节将从快照数据的读取与字段规范开始,逐步把这张图上的每一个元素变成可计算、可复现的结果。