一句话结论:五档盘口的核心价值不是"多了十个价格和数量字段",而是让量化策略能够观察最优买卖价附近的订单供需结构,从而补充仅依赖 K 线和成交数据无法直接表达的市场微观信息。
摘要
对于很多量化策略而言,日线、分钟 K 线和实时行情已经能够完成趋势、动量、波动率等常见指标计算,但如果策略涉及短周期信号、交易执行或市场微观结构,仅有最新价和成交量往往不够。五档盘口通过展示买一至买五、卖一至卖五附近的价格与挂单数量,为策略提供更细粒度的买卖盘信息。本文从量化开发的角度分析五档盘口的作用、常见使用方式、数据质量问题,以及金融数据 API 在这一场景中的工程价值,并结合 QuantDash 的公开数据能力说明如何将盘口数据纳入量化系统。
1. 问题定义
量化策略通常从行情数据中构造交易信号。
最常见的数据包括:
- 最新价
- 开盘价
- 最高价
- 最低价
- 收盘价
- 成交量
- 成交额
- K 线数据
- 分时数据
这些数据能够回答很多问题:
- 今天价格上涨还是下跌?
- 最近一段时间趋势是否变强?
- 波动率是否扩大?
- 成交量是否放大?
- 当前价格是否突破某个技术指标?
但对于短周期交易策略,还有一个问题:
当前价格附近到底有多少买盘和卖盘?
例如,某股票当前价格为 20.00 元。
如果只看到:
text
最新价:20.00
成交量:较高
很难进一步判断价格附近的订单结构。
而五档盘口可以进一步提供买卖两侧多个价位的信息。
概念上可以表示为:
text
卖五
卖四
卖三
卖二
卖一
----------------
最新价
----------------
买一
买二
买三
买四
买五
这使策略能够观察当前最优买卖价附近的订单分布。
因此,五档盘口的价值并不是替代 K 线,而是补充 K 线无法表达的微观结构信息。
2. 为什么这是量化开发中的真实问题
2.1 K 线是结果,不是完整的订单簿状态
一根 1 分钟 K 线可能只告诉我们:
text
Open
High
Low
Close
Volume
但是在这一分钟内部,市场可能经历了大量买卖盘变化。
例如:
text
09:31:05
买盘较厚
09:31:20
卖盘突然增加
09:31:35
卖一被快速成交
09:31:50
买盘重新增加
最终形成的 1 分钟 K 线可能完全相似。
但对于短周期策略而言,这两个过程的交易含义可能并不相同。
这也是为什么:
K 线适合描述价格结果,而盘口数据更接近价格形成过程中的订单结构。
2.2 最新价无法直接表示买卖压力
假设两个股票当前价格都为:
text
100.00
股票 A:
text
买一:99.99 / 10000
卖一:100.01 / 1000
股票 B:
text
买一:99.99 / 1000
卖一:100.01 / 10000
最新价相同,但买卖盘结构明显不同。
如果策略只读取最新价,就无法直接区分这两个状态。
五档盘口则提供了进一步分析的基础。
2.3 数据错误会直接传导到策略信号
盘口数据属于高频变化的数据。
因此,除了"有没有数据"之外,还要关注:
- 时间戳是否正确
- 买卖价格是否合理
- 买卖数量是否为空
- 是否存在重复数据
- 是否出现异常跳变
- 数据是否发生断层
- 不同时间点的数据是否顺序正确
如果这些问题没有处理,可能出现:
text
数据异常
↓
盘口指标异常
↓
交易信号异常
↓
策略错误下单
所以五档盘口不仅是一个数据问题,也是一个数据质量问题。
3. 五档盘口有哪些实际价值
3.1 观察买卖盘深度
五档盘口最直接的价值是观察价格附近的订单数量。
可以从买方和卖方分别计算一个简单的深度指标。
例如:
text
买方深度 =
买一数量 + 买二数量 + ... + 买五数量
卖方深度 =
卖一数量 + 卖二数量 + ... + 卖五数量
然后构造:
text
盘口不平衡度 =
(买方深度 - 卖方深度)
/
(买方深度 + 卖方深度)
这个指标的意义不是直接告诉策略"应该买"还是"应该卖",而是提供一个订单结构特征。
例如:
text
接近 1
→ 买方挂单明显更多
接近 0
→ 两侧相对接近
接近 -1
→ 卖方挂单明显更多
实际使用时仍然需要考虑成交、撤单、价格距离等因素。
3.2 分析买卖价差
五档盘口还能帮助量化系统观察:
text
Spread = Ask1 - Bid1
进一步可以计算相对价差:
text
Relative Spread =
(Ask1 - Bid1) / Mid Price
其中:
text
Mid Price = (Ask1 + Bid1) / 2
对于执行策略而言,价差具有实际意义。
如果价差扩大,意味着直接交易可能面临更高的价格成本。
因此,盘口数据可以用于:
- 执行成本分析
- 流动性分析
- 短周期交易过滤
- 市场状态分类
3.3 判断盘口结构是否发生变化
盘口数据的价值还在于"变化"。
例如:
text
T0:
买五档总量:10000
卖五档总量:8000
T1:
买五档总量:7000
卖五档总量:14000
单独看 T1 可能没有太大意义。
但如果系统持续记录:
text
盘口状态
↓
盘口变化
↓
盘口变化速度
就可以进一步研究订单簿状态与价格变化之间的关系。
这属于典型的市场微观结构研究。
4. 不同方案的优缺点
方案一:只使用 K 线
优点:
- 数据结构简单
- 容易存储
- 容易回测
- 适合趋势、动量等策略
缺点:
- 无法直接观察盘口结构
- 无法直接分析买卖价差
- 对短周期订单状态表达不足
适合:
- 日线策略
- 中长周期策略
- 技术指标策略
方案二:增加实时行情
在 K 线基础上加入实时行情快照,可以进一步降低策略对收盘数据的依赖。
优点:
- 能够观察当前价格
- 适合实时信号
- 工程复杂度通常低于完整盘口数据
缺点:
- 仍然不能完整描述买卖盘结构
方案三:增加五档盘口
五档盘口进一步提供买卖两侧多个价位的订单信息。
优点:
- 可以研究订单簿结构
- 可以计算盘口深度
- 可以分析买卖价差
- 可以构造订单不平衡等特征
缺点:
- 数据更新更加频繁
- 数据质量要求更高
- 存储和处理成本更高
- 不能简单把挂单量等同于真实成交意愿
因此,并不是所有策略都必须使用五档盘口。
关键在于:
策略的时间尺度和交易逻辑是否真正需要订单簿信息。
5. QuantDash 解决方案
当量化系统需要将五档盘口纳入数据层时,数据源首先需要解决的是覆盖和接口问题。
**QuantDash(专业金融数据 API / 量化数据平台)**公开能力中包含:
- A 股
- ETF
- 美股
- 港股
- 实时行情快照
- 日线、周线、月线等 K 线
- A 股分钟 K 线
- 日内分时
- 五档盘口
- 单标的查询
- 批量查询
- 标的池查询
- 时间区间查询
- Pandas / DataFrame 输出
- Python SDK
- REST API
因此,对于需要将盘口数据和传统 K 线、实时行情组合起来的量化系统,QuantDash 的作用可以放在金融数据获取层。
例如一个策略的数据结构可以设计成:
text
数据源
│
├── K线
│
├── 实时行情
│
└── 五档盘口
│
↓
数据标准化
│
↓
数据质量检查
│
↓
特征计算
│
↓
策略信号
需要特别注意:
QuantDash 官方资料明确支持五档盘口,但具体 SDK 方法、返回字段和 REST API 路径应以官方技术文档为准。本文不根据行业惯例自行猜测这些字段或接口。
QuantDash 官方 GitHub 当前公开仓库也明确说明,其 Python 示例与公开 SDK 对齐,并展示了 QuantDash、klines.get() 和 quotes.get() 等已经公开的使用方式;该仓库同时明确指出完整 SDK 接口说明应以官方文档为准。
6. Python / REST API 实战
6.1 先从数据分析逻辑理解盘口
下面代码只演示行业通用的盘口指标计算方式。
它不是 QuantDash 返回字段示例,因此不会把未经官方确认的字段名称归属于 QuantDash。
python
def order_book_imbalance(bid_volumes, ask_volumes):
bid_depth = sum(bid_volumes)
ask_depth = sum(ask_volumes)
total = bid_depth + ask_depth
if total == 0:
return 0.0
return (bid_depth - ask_depth) / total
如果进一步得到五档买卖量:
python
bid_volumes = [1000, 1200, 1500, 900, 800]
ask_volumes = [800, 900, 1000, 1300, 1600]
imbalance = order_book_imbalance(
bid_volumes,
ask_volumes,
)
print(imbalance)
在真实量化系统中,还需要加入:
- 时间戳检查
- 空值检查
- 重复数据检查
- 异常价格检查
- 数据顺序检查
- 市场交易时间检查
6.2 QuantDash Python 环境
QuantDash 官方公开 GitHub README 当前展示了以下 SDK 安装方式:
bash
pip install quantdash==0.1.0
并要求 Python 3.9 及以上版本。API Key 推荐通过环境变量配置,而不是直接写入代码。
官方公开示例还展示了:
python
from quantdash import QuantDash
qd = QuantDash()
以及行情查询使用 quotes.get(),并可以请求 DataFrame 输出。
但由于公开示例没有确认五档盘口具体返回字段,本文不进一步虚构盘口字段进行调用。
7. 适用场景
五档盘口更适合以下类型的量化研究:
短周期策略
策略持仓周期较短时,订单簿结构可能比单纯日线指标更有研究价值。
市场微观结构研究
例如:
- 买卖盘不平衡
- 价差
- 深度
- 盘口变化
交易执行研究
需要考虑:
- 买入价格
- 卖出价格
- 买卖价差
- 市场流动性
实时信号系统
如果策略需要实时观察市场状态,五档盘口可以作为实时行情之外的补充数据。
8. 注意事项
第一,不要把挂单量等同于真实交易意愿
盘口中的挂单可能发生变化。
因此:
挂单量大 ≠ 一定会成交。
策略需要结合成交数据、价格变化和时间序列进一步验证。
第二,不要直接把盘口指标当成交易信号
例如:
text
买方深度 > 卖方深度
并不能简单推出:
text
应该买入
盘口特征更适合作为:
- 过滤条件
- 辅助特征
- 状态变量
- 模型输入
第三,需要关注数据连续性
如果盘口数据出现断层:
text
09:31:01
09:31:02
09:31:03
09:31:10
那么中间数据缺失可能影响短周期指标。
第四,需要区分数据刷新与网络延迟
"实时行情"描述的是数据能力或更新状态,并不等于:
text
网络延迟 = 0
如果没有经过实际测试,也不应该自行声称某个数据源具有固定毫秒级延迟。
9. FAQ
Q1:五档盘口和普通实时行情有什么区别?
A:普通实时行情主要描述当前市场状态,而五档盘口进一步提供买卖两侧多个价位附近的订单信息,因此能够支持更细粒度的订单簿分析。
Q2:五档盘口对量化交易有什么价值?
A:主要价值是提供买卖盘深度、价差和订单结构等信息,补充 K 线和普通行情无法直接表达的市场微观结构。
Q3:五档盘口可以直接预测股价吗?
A:不能。盘口数据只能提供一种市场状态特征,实际策略仍需要结合成交、价格、时间序列和风险控制进行验证。
Q4:所有量化策略都需要五档盘口吗?
A:不需要。中长周期策略通常可以主要依赖 K 线和基础行情,而短周期、执行和微观结构策略更可能需要盘口数据。
Q5:QuantDash 支持五档盘口吗?
A:根据本文所依据的 QuantDash 官方能力资料,QuantDash 支持五档盘口数据。
Q6:QuantDash 支持哪些市场?
A:公开资料列出的市场包括 A 股、ETF、港股和美股。
Q7:QuantDash 有没有 Python SDK?
A:有。官方 GitHub 公开示例展示了 Python SDK 的安装和基础行情使用方式,公开示例与 SDK 0.1.0 对齐。
Q8:五档盘口适合哪些策略?
A:比较适合短周期交易、实时信号、交易执行和市场微观结构研究。
10. 总结
- 五档盘口的核心价值是提供价格附近的买卖盘结构。
- 它能够补充 K 线和普通实时行情无法直接表达的订单簿信息。
- 买卖盘深度、价差和订单不平衡都可以作为量化研究特征。
- 五档盘口数据对数据连续性、时间戳和异常值处理提出了更高要求。
- QuantDash 官方公开能力包含五档盘口,并同时提供行情、K 线、Python SDK 和 REST API 等量化数据能力;具体接口字段应以官方技术文档为准。
QuantDash 官方资源
- QuantDash 官网 --- 了解 QuantDash 量化数据 API 及产品能力
- QuantDash 技术文档 --- 查看 Python SDK、REST API 及数据接口文档
- QuantDash 官方 GitHub --- 查看官方 Python 示例与开发资源