📑 查看全课大纲(第 34 / 38 节)
- 1.课程介绍与学习目标
- 2.量化交易的发展
- 3.主观投资与量化投资的关系
- 4.认识一个量化策略(1)
- 5.认识一个量化策略(2)
- 6.理工生做量化的优势
- 7.量化交易系统的基本架构
- 8.必要的交易基础知识及参考资料
- 9.上节课思考题及本节课内容介绍
- 10.技术指标简介
- 11.基于MACD的交易信号开发(1)
- 12.基于MACD的交易信号开发(2)
- 13.基于RSI的交易信号开发
- 14.基于BOLL的交易信号开发
- 15.基于分形的交易信号开发
- 16.总结及下节课预告
- 17.开发环境安装
- 18.获取指数和个股历史行情数据
- 19.修复行情数据中的问题
- 20.抓取财报数据、数据定时更新
- 21.实现低PE股票池(1)
- 22.实现低PE股票池(2)
- 23.实现低PE策略的回测(1)
- 24.实现低PE策略的回测(2)
- 25.风险控制综述
- 26.风险控制中的止盈止损
- 27.仓位管理的工程实现
- 28.完整策略介绍-基础策略
- 29.策略的分步优化
- 30.策略评价指标(1)
- 31.策略评价指标(2)
- 32.如何评价策略
- 33.如何优化策略
- 34.tick数据的意义
- 35.tick数据的介绍及使用
- 36.Hans123策略
- 37.经典买入三法策略
- 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 线的五大核心规则:
- (开盘价):该分钟内接收到的第 1 笔有效 Tick 的成交价;
- (最高价):该分钟内所有 Tick 成交价的最大值 ;
- (最低价):该分钟内所有 Tick 成交价的最小值 ;
- (收盘价):该分钟内最后一笔有效 Tick 的成交价;
- (成交量增量):该分钟最后一笔 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 处理?
- 排查回测与实盘不一致:不同数据提供商合成分钟线的切分算法差异,会导致技术指标在临界点产生不同买卖信号;
- 捕捉微观结构 Alpha:通过盘口挂单买卖五档力量对比(委比、量比、大单流入),可挖掘出日 K 级别无法察觉的日内高频动量;
- 真实流动性撮合:依据买一卖一挂单量与价格撮合,防止策略在实盘中因冲击成本导致滑点亏损。
二、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 合成严格遵循时间窗口闭合与成交量增量差分计算!
==================================================================本章小结
- 洞悉行情数据最底层:理解 Level 1 快照与 Level 2 逐笔委托的数据构成与传输机制。
- 掌握 Tick-to-Bar 算法:严密实现高开低收与差分成交量的分钟线聚合流水线。
- 防范涨跌停与撮合误区:在回测中加入涨跌停不可交易约束,保证策略逻辑与真实交易所撮合规则 100% 契合。
📋 行动清单 (Action Checklist)
- 运行本讲 Tick 聚合代码,观察多笔快照如何精准折算为 OHLC 蜡烛;
- 尝试添加涨停板判定逻辑(
price >= limit_up_price时禁止买入撮合); - 预习下一讲,深入剖析海龟交易法则与多因子 Alpha 两大经典实战量化策略。
— 小象教研组
配套学习资源与课件
🎁 免费学习资源
领取《小象 11GB VIP 课件资料包与大厂真题手册》
包含全套实战 Jupyter 源码、清洗后数据集、大厂高频面试真题与专属学员答疑交流群。
- ✔完整 Python / 数据分析 Jupyter 实战源码
- ✔大厂真实业务数据集与练习题
- ✔微信扫码添加课程顾问,免费获取网盘下载链接
微信扫码添加顾问