【Python量化实战全攻略 #30】盘口与高频数据处理手册:逐笔、五档怎么用(附代码)
摘要:【Python量化实战全攻略 #30】盘口与高频数据处理手册:逐笔、五档怎么用(附代码) 手册定位:模块四第 6 篇。前面都是日频,本篇进入 盘口/高频 ——五档买卖盘、逐笔成交。这是短线/做市/博弈视角的数据底座。
手册定位:模块四第 6 篇。前面都是日频,本篇进入盘口/高频——五档买卖盘、逐笔成交。这是短线/做市/博弈视角的数据底座。本篇讲怎么聚合逐笔、算 VWAP、盘口不平衡度。
数据来源复用 #01 实时行情(/hs/real/five/{代码}五档、/hs/real/zbjy/{代码}当天逐笔)。
1. 你将得到什么
- 从逐笔成交聚合出 VWAP、主动买卖量的代码;
- 从五档盘口算盘口不平衡度;
- 高频数据的存储与降采样思路;
- 高频处理的 4 个坑(时间戳、复权无关、容量、滑点)。
2. 取数约定(复用)
| 用途 | 来源端点 | 见 |
|---|---|---|
| 五档盘口 | /hs/real/five/{代码} |
#01 |
| 当天逐笔 | /hs/real/zbjy/{代码} |
#01 |
| 历史逐笔 | /hs/real/zbjy/{日期}/{代码} |
#01 |
3. 数据来源(复用,不重复罗列)
详见 #01 实时行情接口手册(五档、逐笔端点)。
4. 核心模板函数(自包含可跑)
import pandas as pd
import numpy as np
_MOCK = True
def aggregate_ticks(ticks):
df = pd.DataFrame(ticks, columns=["价", "量", "方向"])
vwap = (df["价"] * df["量"]).sum() / df["量"].sum()
net_buy = (df.loc[df["方向"] == 1, "量"].sum() - df.loc[df["方向"] == -1, "量"].sum())
return vwap, net_buy
def book_imbalance(bids, asks):
bid1 = bids[0][2]
ask1 = asks[0][2]
return (bid1 - ask1) / (bid1 + ask1 + 1e-9)
def run_check():
ticks = [(10.0, 100, 1), (10.1, 200, 1), (9.9, 150, -1), (10.0, 50, -1)]
vwap, nb = aggregate_ticks(ticks)
imb = book_imbalance([[1, 10.0, 800]], [[1, 10.1, 500]])
assert 9.9 <= vwap <= 10.1 and nb == 100
assert abs(imb - 0.23) < 0.01
print("校验通过 | VWAP=%.3f 净主动买量=%d 盘口不平衡=%.2f" % (vwap, nb, imb))
return vwap, nb, imb
if __name__ == "__main__":
run_check()
5. 跑通示例
vwap, nb, imb = run_check()
print("盘口解读:", "买盘强" if imb > 0 else "卖盘强", " 净主动买量:", nb)
6. 坑与注意事项
- 时间戳:逐笔要按交易所时间排序,跨日/跨市场统一时区。
- 复权无关:高频价格不含分红跳空,但要标记除权日避免异常量。
- 数据容量:逐笔一天一只票几十万条,全市场存几年是 TB 级,要降采样。
- 滑点:高频策略收益薄,回测必须按盘口厚度估计可成交量与滑点。
7. 小结与下一篇预告
盘口/高频数据底座就位。下一篇讲策略参数遍历与优化——网格、随机搜索。
下一篇预告:《【Python量化实战全攻略 #31】策略参数遍历与优化手册:网格、随机搜索(附代码)》
8. 免责声明
本文为高频数据处理示例,演示数据为虚构,不构成投资建议。
关于数据来源:本文盘口/逐笔所需的实时行情接口来自智兔数服(www.zhituapi.com)官方文档(详见本系列 #01),覆盖 200+ 已验证路径,注册可领免费 token 做研究测试。
更多实战手册见技术博客:zhituapi.com/blog.html。
本系列《Python量化实战全攻略》共 32 篇,下一篇讲参数优化。
想亲自试一下?免费获取证书