← 返回《初阶量化交易:策略编写及系统搭建》
📑 查看全课大纲(第 34 / 38 节)

tick数据的意义

约 26 分钟

📺 正在播放小象官方高清录播(支持倍速与清晰度调节)

最根本的数据处理:Level 1 Tick 与 K 线合成引擎

小象实战讲义 · 初阶量化交易:策略编写及系统搭建 本讲义仅用于编程与量化方法教学,不构成任何投资建议。

在量化交易向专业级赛道跨越的过程中,许多开发者习惯于直接使用第三方整理好的日 K 线或分钟 K 线。然而,在真实高频交易与券商实盘交易系统中,交易所向市场推送的真实底层数据并非 K 线,而是高频的 Tick 级快照流(Snapshot)与逐笔成交数据。不同行情软件对分钟切分点、左右时间戳靠拢方式、涨跌停与集合竞价的处理存在细微差异,若无法从底层 Tick 数据自主合成 K 线,就无法进行毫秒级的订单排查与低延迟高频策略研发。

本讲系统介绍Level 1 快照与 Level 2 逐笔行情的本质区别;深入推导从 Level 1 Tick(3 秒快照)流式合成 1 分钟、5 分钟乃至日 K 线(OHLCV)的工业级算法;并详细拆解涨跌停板流动性受限、除权因子与停复牌状态的底层工程处理规范。


💡 核心导读

  • Level 1 快照行情 vs Level 2 逐笔行情全景对比
    • Level 1(快照行情 Snapshot):交易所约 3 秒推送一次截面快照,包含最新价、当日累积成交量/成交额、买一至买五/卖一至卖五五档盘口(免费/通用);
    • Level 2(逐笔行情 Order-by-Order & Tick):包含委托挂单明细、逐笔成交明细(包含买卖主动性方向)、十档或千档深层盘口(付费/专业高频标配)。
  • 从 Tick 流式合成 1 分钟 K 线的五大核心规则Ticks 序列 {T1,T2,,Tk}1-Min Bar (Open,High,Low,Close,ΔVolume)\text{Ticks 序列 } {T_1, T_2, \dots, T_k} \xrightarrow{\quad} \text{1-Min Bar } (Open, High, Low, Close, \Delta Volume)
    1. OpenOpen(开盘价):该分钟内接收到的第 1 笔有效 Tick 的成交价;
    2. HighHigh(最高价):该分钟内所有 Tick 成交价的最大值 max(P1,,Pk)\max(P_1, \dots, P_k)
    3. LowLow(最低价):该分钟内所有 Tick 成交价的最小值 min(P1,,Pk)\min(P_1, \dots, P_k)
    4. CloseClose(收盘价):该分钟内最后一笔有效 Tick 的成交价;
    5. ΔVolume\Delta Volume(成交量增量):该分钟最后一笔 Tick 的累积成交量减去上一分钟末笔的累积成交量(差分增量)。
  • 三大底层高频工程陷阱
    • 涨跌停板(Limit Up/Down):一字涨停时买盘无法成交,一字跌停时卖盘无法卖出;回测撮合若在封死跌停板时强行以收盘价平仓属于严重作弊;
    • 集合竞价(09:15-09:25):09:25 产出当日第一笔由撮合算法得出的标准开盘 Tick;
    • 时间戳左右闭合规范:明确 [09:30:00, 09:31:00) 的半开半闭区间归属,避免重复计算。
┌─────────────────────────────────────────────────────────────┐
│                    Tick 快照流聚合 1 分钟 K 线时序图            │
└──────────────────────────────┬──────────────────────────────┘

 09:30:05  09:30:15  09:30:25  09:30:35  09:30:45  09:30:55  09:31:00
 ───┼────────┼────────┼────────┼────────┼────────┼────────┼────────► (时间)
    │        │        │        │        │        │        │
  [10.05]  [10.12]  [10.15]  [10.02]  [10.08]  [10.10]    ▼
    │        │        │        │        │        │    ┌──────────────────┐
    └────────┴────────┴────────┴────────┴────────┴───►│ 1-Min Bar:       │
                                                      │ • Open: 10.05    │
                                                      │ • High: 10.15    │
                                                      │ • Low:  10.02    │
                                                      │ • Close:10.10    │
                                                      │ • Vol:  3200     │
                                                      └──────────────────┘

一、为什么专业量化必须掌握底层 Tick 处理?

  1. 排查回测与实盘不一致:不同数据提供商合成分钟线的切分算法差异,会导致技术指标在临界点产生不同买卖信号;
  2. 捕捉微观结构 Alpha:通过盘口挂单买卖五档力量对比(委比、量比、大单流入),可挖掘出日 K 级别无法察觉的日内高频动量;
  3. 真实流动性撮合:依据买一卖一挂单量与价格撮合,防止策略在实盘中因冲击成本导致滑点亏损。

二、Tick 到多周期 K 线的层级累积

Level 1 Ticks (3秒快照)


1 分钟 K 线 (1min Bars)

  ├──► 5 分钟 / 15 分钟 / 30 分钟 / 60 分钟 K 线

  └──► 日 K 线 (不复权 / 后复权)

         └──► 周 K 线 / 月 K 线

📝 动手练一练

下面我们用 Python 编写一段 Level 1 Tick 实时聚合 1 分钟 K 线(Tick-to-Bar Aggregator)合成器,模拟连续推送 3 秒级 Tick 并在整分钟窗口结束时自动产出标准 OHLCV 蜡烛图:

import pandas as pd
import numpy as np

def aggregate_ticks_to_1min_bar(tick_records):
    """
    Level 1 Tick 快照流聚合 1 分钟 K 线 (Tick-to-Bar Aggregator)
    - Open: 该分钟首笔 Tick 价格
    - High: 该分钟所有 Tick 最高价
    - Low: 该分钟所有 Tick 最低价
    - Close: 该分钟末笔 Tick 价格
    - Volume: 该分钟成交量增量 (差分计算)
    """
    df = pd.DataFrame(tick_records)
    df['datetime'] = pd.to_datetime(df['time'])
    df = df.set_index('datetime')
    
    bars = []
    grouped = df.groupby(pd.Grouper(freq='1min'))
    
    for dt, group in grouped:
        if len(group) == 0:
            continue
        bar = {
            'time': dt.strftime('%Y-%m-%d %H:%M:%S'),
            'open': group['price'].iloc[0],
            'high': group['price'].max(),
            'low': group['price'].min(),
            'close': group['price'].iloc[-1],
            'volume': group['cum_volume'].iloc[-1] - group['cum_volume'].iloc[0] + group['volume_delta'].iloc[0],
            'ticks_count': len(group)
        }
        bars.append(bar)
        
    return pd.DataFrame(bars)

def test_tick_run():
    # 模拟 09:30 内每隔 10 秒推送的 6 笔 Tick 快照及 09:31 第 1 笔 Tick
    ticks = [
        {'time': '2023-05-10 09:30:05', 'price': 10.05, 'cum_volume': 1200, 'volume_delta': 200},
        {'time': '2023-05-10 09:30:15', 'price': 10.12, 'cum_volume': 1800, 'volume_delta': 600},
        {'time': '2023-05-10 09:30:25', 'price': 10.15, 'cum_volume': 2500, 'volume_delta': 700},
        {'time': '2023-05-10 09:30:35', 'price': 10.02, 'cum_volume': 3100, 'volume_delta': 600},
        {'time': '2023-05-10 09:30:45', 'price': 10.08, 'cum_volume': 3600, 'volume_delta': 500},
        {'time': '2023-05-10 09:30:55', 'price': 10.10, 'cum_volume': 4200, 'volume_delta': 600},
        # 09:31 首笔 Tick
        {'time': '2023-05-10 09:31:05', 'price': 10.11, 'cum_volume': 4500, 'volume_delta': 300}
    ]
    
    bars = aggregate_ticks_to_1min_bar(ticks)
    print("================ Level 1 Tick 聚合 1 分钟 K 线结果 ================")
    print(bars[['time', 'open', 'high', 'low', 'close', 'volume', 'ticks_count']])
    print("------------------------------------------------------------------")
    print("工程精要: Tick 合成严格遵循时间窗口闭合与成交量增量差分计算!")
    print("==================================================================")

if __name__ == "__main__":
    test_tick_run()

运行结果输出:

================ Level 1 Tick 聚合 1 分钟 K 线结果 ================
                  time   open   high    low  close  volume  ticks_count
0  2023-05-10 09:30:00  10.05  10.15  10.02  10.10    3200            6
1  2023-05-10 09:31:00  10.11  10.11  10.11  10.11     300            1
------------------------------------------------------------------
工程精要: Tick 合成严格遵循时间窗口闭合与成交量增量差分计算!
==================================================================

本章小结

  1. 洞悉行情数据最底层:理解 Level 1 快照与 Level 2 逐笔委托的数据构成与传输机制。
  2. 掌握 Tick-to-Bar 算法:严密实现高开低收与差分成交量的分钟线聚合流水线。
  3. 防范涨跌停与撮合误区:在回测中加入涨跌停不可交易约束,保证策略逻辑与真实交易所撮合规则 100% 契合。

📋 行动清单 (Action Checklist)

  • 运行本讲 Tick 聚合代码,观察多笔快照如何精准折算为 OHLC 蜡烛;
  • 尝试添加涨停板判定逻辑(price >= limit_up_price 时禁止买入撮合);
  • 预习下一讲,深入剖析海龟交易法则与多因子 Alpha 两大经典实战量化策略。

— 小象教研组

配套学习资源与课件
  • 第6章课件:进入专业量化赛道的必修课(PDF · 4.3MB)
    下载
  • 第6章配套代码包:tick数据与量化系统搭建(ZIP · 9KB)
    下载
  • 开发环境准备:软件安装指导(PDF · 0.9MB · 建议第3章动手实践前先通读)
    下载
  • 量化入门推荐书单(PDF · 318KB)
    下载
🎁 免费学习资源

领取《小象 11GB VIP 课件资料包与大厂真题手册》

包含全套实战 Jupyter 源码、清洗后数据集、大厂高频面试真题与专属学员答疑交流群。

  • 完整 Python / 数据分析 Jupyter 实战源码
  • 大厂真实业务数据集与练习题
  • 微信扫码添加课程顾问,免费获取网盘下载链接
微信二维码:扫码添加课程顾问微信扫码添加顾问