3. Tick数据核心字段解析
Tick数据是行情系统中最细粒度的成交快照,它记录的是“某一笔成交或某一次盘口变化”的瞬时状态。理解Tick字段,关键不是背字段名,而是理解每个字段背后的市场语义与计算口径。同一字段在不同数据源中可能含义不同,这正是实盘策略踩坑的高发区。
一、核心原理:Tick字段的三层结构
一条标准Tick通常由三部分构成:标识层(时间、代码、交易所)、价格层(最新价、开高低收、买卖盘价)、量能层(成交量、成交额、买卖盘量)。其中最新价、成交量、成交额、买卖盘方向是策略最常消费的四个字段。
- 最新价(Last Price):最近一笔成交的成交价,是“已发生事实”,不是报价。
- 成交量(Volume):该笔成交的数量,单位可能是股、手或张,需按品种确认。
- 成交额(Turnover/Amount):该笔成交的金额,理论上等于价格×数量,但存在精度与口径差异。
- 买卖盘方向(BS Flag):标识这笔成交是主动买、主动卖还是中性,是判断资金意图的关键。
核心公式:成交额 ≈ 最新价 × 成交量 × 合约乘数。当数据源直接给出成交额时,应以数据源为准,不要自行反推,否则会因四舍五入产生累计误差。
二、方法流程:从原始Tick到可用字段
处理Tick字段的标准流程分为四步:字段映射、单位归一、方向判定、异常过滤。
- 字段映射:将数据源字段名映射到内部标准名,例如将
last_price、price、trade_price统一为last。 - 单位归一:统一成交量单位与价格精度,避免“手/股”混用导致量级错误。
- 方向判定:若数据源未提供BS标志,需用“成交价与买卖盘价比较”规则推断。
- 异常过滤:剔除价格为0、成交量为负、时间戳回退等脏数据。
# 方向推断伪代码
if last_price >= ask_price_1:
direction = "BUY" # 主动买
elif last_price <= bid_price_1:
direction = "SELL" # 主动卖
else:
direction = "NEUTRAL" # 中性/集合竞价
方向判定的逻辑本质是:成交在卖一价或以上,说明买方主动吃单;成交在买一价或以下,说明卖方主动砸单;介于买卖价之间则视为中性。
三、案例场景:一笔Tick的完整解读
假设某股票Tick如下:最新价10.05,成交量2000股,成交额20100元,买一价10.04,卖一价10.05。此时最新价等于卖一价,方向判定为主动买。成交额20100 ÷ 2000 = 10.05,与最新价一致,说明该数据源成交额口径为“价格×数量”,无额外费用。
若另一数据源给出成交额20080元,则说明其成交额可能扣除了部分费用或采用了不同精度,此时若策略用成交额反推均价,会得到10.04,与真实成交价产生偏差。这就是口径不一致的典型场景。
| 字段 | 含义 | 常见单位 | 计算/判定逻辑 |
|---|---|---|---|
| 最新价 | 最近一笔成交价 | 元 | 直接取自成交回报 |
| 成交量 | 该笔成交数量 | 股/手/张 | 直接取自成交回报 |
| 成交额 | 该笔成交金额 | 元 | 价格×数量×乘数,或数据源直供 |
| 买卖盘方向 | 主动买卖标识 | 枚举 | 比较成交价与买卖盘价 |
| 买一价/卖一价 | 最优报价 | 元 | 来自盘口快照 |
四、误区与复盘:四个高频陷阱
陷阱一:把“最新价”当成“可成交价”。最新价是历史成交,盘口买卖价才是当前可成交报价,用最新价挂单可能无法成交。
- 误区二:成交量单位混用。股票常以“手”为单位(1手=100股),期货以“手”为合约数,若未归一,策略信号量级会差百倍。
- 误区三:成交额反推均价。当数据源成交额含费用或精度截断时,反推均价会偏离真实成交价,应直接使用最新价字段。
- 误区四:方向字段缺失时强行推断。集合竞价、大宗交易、盘后固定价格交易的成交价可能不落在买卖盘区间内,此时推断方向会失真,应标记为中性或未知。
复盘建议:每次接入新数据源,先抽取100条Tick,逐条核对“最新价×成交量”与“成交额”的偏差率,偏差超过0.1%即需确认口径,再决定是否入库。
掌握Tick核心字段的关键,在于把字段当作“市场行为的证据链”来读:最新价告诉你成交在哪,成交量与成交额告诉你成交多大,买卖盘方向告诉你谁在主动。三者交叉验证,才能构建可靠的行情理解基础。