【小白必看】五档盘口如何做量化

用户头像sh_***416jmt75L
2026-09-16 发布

📌 摘要 / 快速解答 (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.SH
  • 000001.SZ
  • 920047.BJ
  • AAPL.US
  • 00700.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 官方支持多种分钟周期,包括 1m5m15m30m60m

② 行情层

再读取当前行情:

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_timeend_timecount 等参数,方便做指定区间以及历史截面研究。


九、交易员避坑:盘口策略最容易犯的三个错误

坑一:把挂单量当成真实成交量

盘口中的挂单是报价层面的数据。

所以:

挂单 ≠ 成交。

做研究的时候必须把盘口挂单量和实际成交量区分开。

坑二:看到盘口差异就直接下结论

例如:

“买五档比卖五档大,所以明天涨。”

这种结论没有经过历史检验。

正确做法是把盘口特征记录下来,然后观察不同盘口状态下后续收益、波动等结果。

坑三:回测出现未来函数

如果策略在某个时间点使用盘口数据,那么所有特征必须来自当时已经可以获得的信息。

特别是在分钟级研究中,时间戳一定要处理清楚。

另外,如果同时使用 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 股量化数据研究,可以直接从五档盘口这个小切口开始,把“看盘经验”逐步变成可计算、可回测的量化因子。

评论