3、核心指标一:买卖盘口深度(Bid/Ask Depth)的计算与解读
盘口深度,说白了就是看「想买的人有多少,想卖的人有多少」。
我刚开始做量化的时候,总觉得K线图才是王道。后来被市场狠狠教育了几次,才明白盘口深度才是真正的「战场实况」。K线是历史,盘口是当下。
3.1 什么是买卖盘口深度?
买卖盘口深度,指的是在某一价格水平上,挂着的买单和卖单的总量。
举个例子:
- 买一深度:当前最高买入价上,挂了1000股
- 卖一深度:当前最低卖出价上,挂了800股
这组数字告诉你——现在想买的人比想卖的人多。嗯,这里要注意,这只是表面现象。
核心公式:
买盘深度 = 所有买单挂单量的总和(通常取前5档或前10档)
卖盘深度 = 所有卖单挂单量的总和
深度比率 = 买盘深度 / 卖盘深度
我个人习惯用前5档数据,因为再往后的挂单,说实话,撤单率太高了,参考价值有限。
3.2 为什么要关注这个指标?
你想想看,如果一只股票买一挂了10万手,卖一只有1万手。这说明什么?
- 买方意愿强烈,下方有「厚墙」托着
- 价格短期内很难跌下去
- 但要注意——这可能是主力在「挂假单」
我在项目中遇到过好几次这样的情况:盘口看着买盘厚实,我一进场,那些买单瞬间撤光。价格直接跳水。这就是典型的「托单出货」手法。
3.3 如何计算盘口深度?
计算其实不复杂。我们拿Level-2行情数据来说:
# 伪代码示例:计算前5档买卖盘口深度
def calculate_depth(bid_data, ask_data, levels=5):
"""
bid_data: 买单数据,按价格从高到低排列
ask_data: 卖单数据,按价格从低到高排列
"""
bid_depth = sum([bid_data[i]['volume'] for i in range(levels)])
ask_depth = sum([ask_data[i]['volume'] for i in range(levels)])
depth_ratio = bid_depth / ask_depth if ask_depth > 0 else float('inf')
return {
'bid_depth': bid_depth,
'ask_depth': ask_depth,
'depth_ratio': depth_ratio
}
代码很简单,但实际应用中要注意几点:
- 数据源要实时更新,延迟超过100ms就没意义了
- 要过滤掉明显的「虚假挂单」(比如挂单后3秒内撤单的)
- 不同交易所的规则不同,挂单深度含义也有差异
我的小技巧:
我会同时计算「加权深度」——把价格因素也考虑进去。比如买一的价格是10.00元,挂了1000股;买二是9.99元,挂了2000股。加权深度 = 10.00*1000 + 9.99*2000。这样更能反映真实的资金意愿。
3.4 盘口深度的实战解读
光会算不行,关键是怎么用。我总结了几种常见场景:
| 盘口特征 | 市场含义 | 操作建议 |
|---|---|---|
| 买盘深度 > 卖盘深度 2倍以上 | 买方强势,下方支撑强 | 可考虑做多,但警惕假单 |
| 卖盘深度 > 买盘深度 2倍以上 | 卖方强势,上方压力大 | 谨慎做多,考虑做空 |
| 深度比率在0.8-1.2之间 | 多空均衡,方向不明 | 观望为主,等待突破 |
| 深度突然剧烈变化 | 可能有主力资金介入 | 密切观察,准备跟随 |
我曾经吃过一次大亏:看到买盘深度突然暴增,以为要拉升了,直接追进去。结果那是主力在「堆单」吸引跟风盘,等散户进场后,他们反手做空。嗯,从那以后我多了一个心眼——看深度变化的同时,还要看成交量的配合。
3.5 盘口深度的局限性
避坑指南:
我曾经以为盘口深度是万能的,直到遇到这些情况:
- 股指期货交割日,盘口深度完全失真
- 停牌复牌首日,挂单量不代表真实意愿
- 量化基金集中调仓时,盘口数据会「打架」
记住:盘口深度是工具,不是圣杯。一定要结合其他指标一起看。
3.6 知识体系总览
下面这张图,是我自己整理的知识框架。每次讲盘口深度,我都会先过一遍这张图:
这张图我用了很久。每次做策略回测前,都会对照着检查一遍自己的逻辑有没有漏洞。
3.7 写在最后
盘口深度这个指标,说简单也简单,说复杂也复杂。简单的是计算,复杂的是解读。
我个人建议:刚开始做量化交易的朋友,先别急着上机器学习那些高大上的东西。把盘口深度吃透了,你就能看懂市场上80%的短期博弈。
记住一句话:盘口是市场的「心电图」,读懂了它,你就能感知市场的「心跳」。