4. 深交所逐笔委托核心字段解析

深交所逐笔委托(Order)消息是Level-2行情中最基础、信息密度最高的数据之一。它记录的是每一笔进入撮合系统的委托指令本身,而不是成交结果。理解这条消息,关键不在于记住字段名称,而在于搞清楚每个字段的编码方式、取值范围和业务含义,因为后续的字段映射、订单簿重建、委托生命周期跟踪,全部建立在对这些字段的正确解读之上。

本节以深交所Binary格式逐笔委托消息为对象,逐项拆解核心字段,并完成一条真实结构消息的字段提取演练。

一、消息整体结构与字段布局

深交所逐笔委托消息采用定长二进制结构,标准长度为28字节(不含消息头)。各字段按固定偏移排列,解析时必须严格按偏移量读取,不能依赖分隔符。核心字段包括:通道号、消息类型、委托序号、委托价格、委托数量、买卖方向、订单类型等。其中委托序号、价格、数量、方向、订单类型是本节重点。

需要特别说明的是价格与数量的精度约定:深交所逐笔委托中的委托价格字段以“分”为单位存储为整数,实际价格 = 字段值 ÷ 10000(即保留4位小数,单位为元);委托数量字段以“股”为单位存储为整数,直接读取即可,无需换算。这一约定在字段映射时极易出错,必须先在解析层统一处理。

二、核心字段逐项拆解

委托序号(ApplSeqNum):8字节无符号整数,是当日该通道内委托消息的单调递增序号。它不等同于交易所的原始订单号,而是行情快照中的消息序号,用于排序和去重。取值范围为1到当日最大委托笔数,跨日后重新计数。映射时通常对应到标准模型的 order_seq 字段,作为订单簿插入顺序的依据。

委托价格(Price):8字节整数,单位为“分”的万分之一,即字段值 123400 表示 12.34 元。市价委托时该字段可能填 0 或特定标记值,需结合订单类型判断,不能直接当作有效价格使用。

委托数量(OrderQty):8字节整数,单位为股。深市A股最小委托单位为100股,但逐笔委托中可能出现零股(如卖出零股余额),因此不能假设一定是100的整数倍。

买卖方向(Side):1字节枚举。深交所约定:'1' 表示买入,'2' 表示卖出。注意这是字符编码而非数值1/2,解析时需按ASCII码判断,映射到标准模型时通常转为 Buy/Sell 枚举。

订单类型(OrdType):1字节枚举,是本节最容易被低估的字段。深交所逐笔委托中常见取值:'1' 表示市价,'2' 表示限价,'U' 表示本方最优。订单类型直接决定价格字段是否有效、撮合逻辑如何解释,是字段映射中必须优先判断的分支条件。

此外还有通道号(ChannelNo)用于区分不同撮合通道,消息类型(MsgType)标识消息种类,二者在映射时作为路由和过滤依据。

三、单条消息字段提取演练

下面给出一条示例消息的十六进制字节流(示例数据,用于教学演示,非实测行情):

01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

为便于讲解,我们按字段偏移构造一条可读的示例记录:通道号=1,委托序号=100023,委托价格字段=123400,委托数量=500,买卖方向='1',订单类型='2'。提取过程如下:

  1. 按偏移读取委托序号,得到 100023,作为该笔委托在当日通道内的排序键。
  2. 读取价格字段 123400,除以10000,得到 12.34 元。
  3. 读取数量字段 500,单位为股,即500股。
  4. 读取方向字节,ASCII为 '1',判定为买入。
  5. 读取订单类型字节,ASCII为 '2',判定为限价委托,价格字段有效。

提取结果可整理为一条标准化的中间记录:{seq:100023, price:12.34, qty:500, side:"Buy", ordType:"Limit"}。这条记录即可进入后续的订单簿插入或字段映射流程。

判断依据:只有当订单类型为限价('2')或本方最优('U')时,价格字段才具有可比意义;市价委托('1')的价格字段应标记为无效,避免污染订单簿价格档位。

四、字段映射中的常见陷阱

第一,方向与类型的字符编码。很多开发者习惯用数值1/2判断方向,但深交所返回的是ASCII字符,直接比较数值会全部判错。第二,价格精度。忘记除以10000会导致价格放大一万倍,订单簿档位完全错乱。第三,委托序号跨通道不唯一。不同通道的序号各自递增,映射时必须用“通道号+委托序号”作为联合主键,否则会出现序号冲突。第四,订单类型缺失。部分历史数据或简化接口可能不带订单类型,此时需按默认限价处理并在映射层标注假设来源。

下图展示了单条逐笔委托消息从原始字节到标准化字段的提取路径,以及各字段的编码规则与映射去向,可作为字段提取时的对照参考。

逐笔委托消息:字节 → 字段 → 标准模型 原始消息字节 定长28字节 · 按偏移读取 通道号 ChNo 委托序号 Seq 委托价格 Price 委托数量 Qty 买卖方向 Side 订单类型 OrdType 消息类型 MsgType 编码规则与取值范围 整数,区分撮合通道 8字节无符号,通道内递增 整数,单位=元×10000 整数,单位=股 '1'=买 '2'=卖(ASCII) '1'市价 '2'限价 'U'本方最优 标识消息种类 标准模型字段 channel_no order_seq price(元,4位小数) qty(股) side(Buy/Sell) ord_type(Limit/Market) msg_type 示例:Seq=100023,Price=123400 → 12.34元,Qty=500股,Side='1'→Buy,OrdType='2'→Limit

完成字段提取后,建议立即做一次自检:价格是否落在合理区间(如0.01~10000元)、数量是否为正整数、方向与类型是否在枚举集合内、联合主键是否唯一。这四项检查能拦截绝大多数映射错误,是逐笔委托数据入库前的必要关口。