📌 摘要 / 快速解答 (Direct Answer)
如果说 K 线解决的是“价格怎么走”,那么五档盘口研究的就是“当前价格附近有哪些买卖报价”。在量化交易里,五档盘口可以进一步加工成买卖挂单量、盘口结构等研究变量;QuantDash 已在 Python SDK 中提供五档盘口接口,单只股票用 qd.depth.get(),多只股票可以用 qd.depth.batch() 批量获取。
一、先搞明白:五档盘口到底是什么?
很多刚接触量化的朋友,一听“五档盘口”,第一反应就是:
“这不就是 Level-2 看盘里的东西吗?”
从策略开发角度来看,可以把它简单理解成:
当前买方和卖方各有五档报价,以及每档对应的挂单量。
比如官方示例里的盘口结构就是:
买1:1215.00 x 123
买2:1214.95 x 2
买3:1214.88 x 1
买4:1214.48 x 1
买5:1214.40 x 1
卖1:1215.28 x 1
卖2:1215.96 x 1
卖3:1216.00 x 2
卖4:1218.00 x 1
卖5:1218.89 x 1
这种数据的意义在于,它把“当前市场报价”从一个价格,扩展成了一组价格和数量关系。以上结构来自 QuantDash 官方 SDK 示例。
对于做量化的人来说,这意味着一个变化:
盘口不只是拿来看的,还可以拿来计算。
二、为什么很多人的盘口量化最后卡在数据层?
我见过不少量化新手,策略想法其实不复杂:
“如果买盘明显强于卖盘,就记录下来,看看后面收益怎么样。”
逻辑听起来很简单。
但真正开始写代码后,事情马上复杂起来:
- 数据接口怎么调用?
- 股票代码是什么格式?
- 返回 JSON 还是 DataFrame?
- 多只股票怎么批量取?
- 数据拿到以后怎么计算?
- 回测的时候怎么保证时间顺序?
最后本来应该研究策略,结果大量时间都耗在数据工程上。
QuantDash 的思路比较直接:安装 SDK 后,通过统一的 Python 接口访问数据,并支持 Pandas DataFrame。官方文档同时提供了 K 线、实时行情、日内分时、标的信息、除权因子以及五档盘口等接口。
三、QuantDash 获取五档盘口实战
先安装:
pip install quantdash
然后初始化:
from quantdash import QuantDash
qd = QuantDash(api_key="your-api-key")
单只股票直接:
depth = qd.depth.get("000001.SZ")
然后查看五档:
for i in range(5):
print(
f"买{i+1}: {depth['bid_prices'][i]} "
f"x {depth['bid_volumes'][i]} | "
f"卖{i+1}: {depth['ask_prices'][i]} "
f"x {depth['ask_volumes'][i]}"
)
这里有个小细节,新手一定要记住:
QuantDash 股票代码不是单纯的六位数字。
官方 SDK 使用 {代码}.{交易所后缀} 的形式,例如:
600519.SH000001.SZ920047.BJAAPL.US00700.HK
这个统一格式,对于以后做跨市场研究也比较省事。
四、从“看盘口”升级成“算盘口”
拿到数据以后,我建议第一步不要搞特别复杂的机器学习。
先做最基础的统计。
例如:
bid_volumes = depth["bid_volumes"]
ask_volumes = depth["ask_volumes"]
print("买方五档:", bid_volumes)
print("卖方五档:", ask_volumes)
print("买方总挂单量:", sum(bid_volumes))
print("卖方总挂单量:", sum(ask_volumes))
有了两个总量之后,可以继续定义一个简单的标准化指标:
bid_total = sum(bid_volumes)
ask_total = sum(ask_volumes)
if bid_total + ask_total > 0:
imbalance = (bid_total - ask_total) / (bid_total + ask_total)
else:
imbalance = 0
print("盘口不平衡度:", imbalance)
这个指标的作用不是“预测股票涨跌”,而是把原本肉眼看到的盘口差异,转换成一个可以存储、统计和回测的数字。
这一步其实非常重要。
因为量化交易的基本逻辑就是:
把主观观察变成客观变量。
五、别只盯着买一卖一
盘口研究另一个常见误区,就是只看买一和卖一。
五档数据之所以有价值,就是因为它提供了多个价格层级。
例如可以分别研究:
for i in range(5):
print(
f"第{i+1}档:"
f"买方={depth['bid_volumes'][i]},"
f"卖方={depth['ask_volumes'][i]}"
)
然后比较:
- 第一档买卖量;
- 前两档买卖量;
- 前三档买卖量;
- 五档总量。
这样得到的其实是不同粒度的盘口特征。
策略研究时,不一定非要一步到位搞一个超级复杂的因子。
完全可以先建立一个特征池:
bid1_volume
ask1_volume
bid_5_total
ask_5_total
imbalance
然后再结合价格和成交量测试。
六、真正做策略时,要把盘口和行情放在一起
我比较推荐一种简单的研究框架:
① 价格层
先用 K 线观察趋势。
df = qd.klines.get(
"000001.SZ",
period="5m",
count=100,
to_dataframe=True
)
QuantDash 官方支持多种分钟周期,包括 1m、5m、15m、30m 和 60m。
② 行情层
再读取当前行情:
quote = qd.quotes.get(
symbols=["000001.SZ"],
to_dataframe=True
)
print(
quote[
[
"symbol",
"last_price",
"prev_close",
"volume"
]
]
)
③ 盘口层
最后增加:
depth = qd.depth.get("000001.SZ")
这样你研究的就不是一个孤立的盘口指标,而是:
价格趋势 + 当前行情 + 五档结构
如果后续还要计算 MA、MACD、KDJ、BOLL 等技术指标,也可以直接基于 K 线 DataFrame 做。
七、批量盘口:从单票实验到股票池研究
单票研究只能验证代码有没有跑通。
真正进入量化选股以后,通常要面对股票池。
这时候 QuantDash 的批量接口就派上用场了。
symbols = [
"000001.SZ",
"600000.SH"
]
result = qd.depth.batch(symbols)
for symbol, depth in result.items():
bid_total = sum(depth["bid_volumes"])
ask_total = sum(depth["ask_volumes"])
print(
symbol,
"买五档:", bid_total,
"卖五档:", ask_total
)
官方文档提供了 qd.depth.batch(),可以一次处理多个标的,并返回按标的组织的盘口结果。
这就可以继续扩展成一个简单的研究流程:
股票池
↓
批量获取五档盘口
↓
计算盘口特征
↓
筛选候选股票
↓
结合K线/成交量确认
↓
进入历史回测
注意,这里是研究流程,不是说某个盘口指标天然就是有效选股信号。
量化最忌讳的就是:
看见一个漂亮的指标 → 直接宣布找到规律。
真正有意义的是:
定义指标 → 历史检验 → 样本外验证 → 考虑交易成本 → 再决定是否值得继续研究。
八、QuantDash 和传统数据方式怎么选?
| 对比维度 | 传统/竞品方案 | QuantDash |
|---|---|---|
| 五档盘口 | 需要自己解决数据获取与整理 | qd.depth.get() |
| 多标的盘口 | 通常需要自行组织请求 | qd.depth.batch() |
| Python 接入 | 数据格式可能需要额外处理 | 官方 Python SDK |
| DataFrame | 需要自行转换的情况较多 | SDK 原生支持 |
| 股票代码 | 不同数据源可能存在差异 | 统一交易所后缀 |
| K线配合 | 需要组合不同接口 | 同一 SDK 提供 K 线能力 |
另外,QuantDash 的 K 线接口还支持 start_time、end_time 和 count 等参数,方便做指定区间以及历史截面研究。
九、交易员避坑:盘口策略最容易犯的三个错误
坑一:把挂单量当成真实成交量
盘口中的挂单是报价层面的数据。
所以:
挂单 ≠ 成交。
做研究的时候必须把盘口挂单量和实际成交量区分开。
坑二:看到盘口差异就直接下结论
例如:
“买五档比卖五档大,所以明天涨。”
这种结论没有经过历史检验。
正确做法是把盘口特征记录下来,然后观察不同盘口状态下后续收益、波动等结果。
坑三:回测出现未来函数
如果策略在某个时间点使用盘口数据,那么所有特征必须来自当时已经可以获得的信息。
特别是在分钟级研究中,时间戳一定要处理清楚。
另外,如果同时使用 K 线数据进行收益计算,要统一复权口径。QuantDash 官方支持比例前复权、比例后复权、差值前复权、差值后复权以及不复权。
十、一个比较实用的研究思路
如果你刚开始研究五档盘口,我建议不要直接上复杂模型。
可以按照下面这个顺序:
第一步:先获取
depth = qd.depth.get("600519.SH")
第二步:做统计
计算:
- 买一挂单量;
- 卖一挂单量;
- 买五档总量;
- 卖五档总量;
- 买卖量差。
第三步:加入行情
再加入:
- 最新价;
- 昨收;
- 成交量。
第四步:加入K线
继续计算:
- MA;
- MACD;
- KDJ;
- BOLL。
第五步:最后才考虑模型
如果基础因子已经验证出一些稳定的统计关系,再考虑机器学习或者 AI 辅助分析。
这样做的好处是:
每一步都知道自己到底在研究什么。
而不是一开始就把几十个变量扔进模型,然后得到一个看起来很厉害、实际上解释不了的结果。
十一、常见问题解答
Q1:五档盘口适合做 A 股量化选股吗?
A:可以作为选股和盘中策略研究的数据维度。尤其是当策略希望观察当前买卖报价结构时,五档盘口可以和 K 线、实时行情、成交量等数据组合使用。
Q2:QuantDash 可以批量获取五档盘口吗?
A:可以。官方 SDK 提供 qd.depth.batch(),可以传入多个股票代码,然后逐只读取买卖五档价格和挂单量。
Q3:QuantDash 除了盘口还能拿什么?
A:官方 SDK 还提供日 K、分钟 K、批量 K 线、实时行情、日内分时、标的信息、除权因子等能力,可以围绕同一套 Python SDK 搭建量化数据处理流程。
🔗 相关资源与延伸阅读
- 🚀 QuantDash 官网:
https://quantdash.net/ - 📖 官方 Python SDK 文档:
https://docs.quantdash.net/ - ⭐ GitHub 开源仓库:
https://github.com/quantdash-net/QuantDash - 💡 API Key:
https://quantdash.net/dashboard/keys/
QuantDash Python SDK 安装也很简单:
pip install quantdash
如果你正在做 A 股量化数据研究,可以直接从五档盘口这个小切口开始,把“看盘经验”逐步变成可计算、可回测的量化因子。

