4. 盘口深度分析:深度图绘制、买卖盘口不平衡指标、订单簿斜率与市场压力
盘口深度分析,说白了就是看透订单簿背后的博弈。我做了这么多年量化,发现很多人只盯着成交价看,却忽略了订单簿里藏着的“暗流”。今天咱们就把这块硬骨头啃下来。
4.1 深度图(Depth Chart)绘制:把订单簿“画”出来
深度图是什么?就是把买卖双方的挂单量,按价格从近到远累加起来,画成两条曲线。买盘在左,卖盘在右,中间就是当前市价。
我个人习惯用 matplotlib 来画,但要注意一点:数据预处理很关键。我曾经踩过一个坑——直接拿原始订单簿数据画图,结果曲线锯齿严重,根本看不出趋势。
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
def plot_depth_chart(bids, asks, price_col='price', vol_col='volume'):
"""
bids: 买单DataFrame,按价格降序排列
asks: 卖单DataFrame,按价格升序排列
"""
# 计算累计量
bids_cum = bids[vol_col].cumsum()
asks_cum = asks[vol_col].cumsum()
# 画图
plt.figure(figsize=(12, 6))
plt.step(bids[price_col], bids_cum, where='post',
label='买盘深度', color='green', linewidth=2)
plt.step(asks[price_col], asks_cum, where='post',
label='卖盘深度', color='red', linewidth=2)
plt.xlabel('价格')
plt.ylabel('累计挂单量')
plt.title('订单簿深度图')
plt.legend()
plt.grid(True, alpha=0.3)
plt.show()
小技巧:画深度图时,我建议把价格轴做归一化处理。比如以当前市价为基准,显示±2%的价格区间。这样不同时间点的深度图才有可比性。
4.2 买卖盘口不平衡指标:谁在“用力”
盘口不平衡,说白了就是买方和卖方谁更“着急”。我常用的指标有三个:
| 指标名称 | 计算公式 | 含义 |
|---|---|---|
| Volume Imbalance (VI) | (买盘量 - 卖盘量) / (买盘量 + 卖盘量) | [-1, 1]区间,正值偏多 |
| Depth Imbalance (DI) | ∑(买盘量×权重) - ∑(卖盘量×权重) | 考虑价格距离的加权 |
| Order Flow Imbalance (OFI) | 新买单 - 新卖单 - 撤单 | 实时订单流变化 |
嗯,这里要注意:VI 指标虽然简单,但容易受大单干扰。我遇到过一种情况——某个价位突然挂了一笔巨量卖单,VI 瞬间变成负值,但实际只是做市商在调整仓位,并不是真的看空。
实战经验:我一般把 VI 和 OFI 结合起来用。VI 看静态不平衡,OFI 看动态变化。如果 VI 为正且 OFI 持续为正,说明买方在主动加仓,这才是真正的买盘压力。
4.3 订单簿斜率与市场压力
订单簿斜率,这个概念有点抽象。你想想看,深度图上的曲线越陡,说明什么?说明在某个价格区间内,挂单量非常集中。反过来,曲线越平缓,说明挂单分散,流动性好。
我习惯用线性回归来拟合深度图的前 N 档价格,斜率就是回归系数。具体做法:
from sklearn.linear_model import LinearRegression
def compute_depth_slope(levels, cum_volumes):
"""
levels: 价格水平数组
cum_volumes: 对应的累计挂单量
"""
X = levels.reshape(-1, 1)
y = cum_volumes
model = LinearRegression()
model.fit(X, y)
return model.coef_[0] # 斜率
# 使用示例
buy_slope = compute_depth_slope(bids['price'][:10], bids_cum[:10])
sell_slope = compute_depth_slope(asks['price'][:10], asks_cum[:10])
斜率越大,说明市场压力越大。举个例子:如果卖盘斜率突然变陡,说明卖方在某个价格区间集中挂单,形成“压力位”。买盘斜率变陡,则形成“支撑位”。
避坑指南:我曾经犯过一个错误——只看斜率绝对值。后来发现,斜率还要结合成交量来看。如果斜率很陡但成交量很小,说明只是个别大户在挂单,不代表整体市场压力。真正的压力位,一定是斜率陡 + 成交量大的组合。
4.4 知识体系总览
下面这张图,是我自己梳理的盘口深度分析框架。你看一眼就能明白各个模块之间的关系:
这三个模块其实是环环相扣的。深度图给你直观的视觉感受,不平衡指标给你定量的判断依据,斜率分析则帮你找到关键的压力位和支撑位。三者结合,才能读懂订单簿背后的语言。
我的习惯:每天开盘前,我会先跑一遍这三个指标。如果发现某个品种的盘口不平衡超过0.6且斜率异常,我就会特别警惕——这往往是行情启动的前兆。