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 知识体系总览

下面这张图,是我自己梳理的盘口深度分析框架。你看一眼就能明白各个模块之间的关系:

盘口深度分析知识体系 深度图绘制 盘口不平衡指标 订单簿斜率分析 数据预处理 累计计算 可视化呈现 Volume Imbalance Depth Imbalance Order Flow Imbalance 线性回归拟合 斜率计算 压力/支撑判断 核心目标:识别市场参与者的真实意图与压力分布

这三个模块其实是环环相扣的。深度图给你直观的视觉感受,不平衡指标给你定量的判断依据,斜率分析则帮你找到关键的压力位和支撑位。三者结合,才能读懂订单簿背后的语言。

我的习惯:每天开盘前,我会先跑一遍这三个指标。如果发现某个品种的盘口不平衡超过0.6且斜率异常,我就会特别警惕——这往往是行情启动的前兆。

专注资料整理