3、订单簿深度分析:深度图绘制、流动性度量、订单簿斜率、买卖压力指标

订单簿深度分析,说白了就是看透市场的「底牌」。

你想想看,盘口上那些挂单,不只是价格和数量。它们背后藏着大资金的意图、市场的承接力、以及潜在的爆发点。我个人习惯把深度分析当作「市场透视镜」——透过它,你能看到普通K线看不到的东西。

3.1 深度图绘制:把订单簿「画」出来

深度图,就是把买单和卖单的累积量画成两条曲线。横轴是价格,纵轴是累积挂单量。

我刚开始做量化时,觉得这图没啥用。直到有一次,我发现某币种在深度图上出现了一个「悬崖」——卖单在某个价位突然消失。嗯,那之后价格果然快速拉升。从那以后,我每天开盘前必看深度图。

核心要点:

  • 买盘深度曲线:从当前价格向左下方延伸,代表不同价位上的买单累积量
  • 卖盘深度曲线:从当前价格向右上方延伸,代表不同价位上的卖单累积量
  • 深度缺口:曲线突然变平缓的地方,说明该价位附近挂单稀疏

绘制深度图的代码其实不复杂。我一般用Python的matplotlib,几行就能搞定:

import matplotlib.pyplot as plt
import numpy as np

def plot_depth(bids, asks, current_price):
    """
    bids: [[price, volume], ...]  买单数据
    asks: [[price, volume], ...]  卖单数据
    """
    # 计算累积量
    bid_prices = [b[0] for b in bids]
    bid_volumes = np.cumsum([b[1] for b in bids])
    
    ask_prices = [a[0] for a in asks]
    ask_volumes = np.cumsum([a[1] for a in asks])
    
    # 绘制
    plt.figure(figsize=(12, 6))
    plt.plot(bid_prices, bid_volumes, 'g-', label='买盘深度', linewidth=2)
    plt.plot(ask_prices, ask_volumes, 'r-', label='卖盘深度', linewidth=2)
    plt.axvline(x=current_price, color='gray', linestyle='--', alpha=0.5)
    plt.xlabel('价格')
    plt.ylabel('累积挂单量')
    plt.title('订单簿深度图')
    plt.legend()
    plt.grid(True, alpha=0.3)
    plt.show()

我的小技巧:深度图最好用对数坐标。因为价格波动范围大,线性坐标下远端细节根本看不清。对数坐标能让整个曲线更「舒展」。

3.2 流动性度量:市场到底「厚不厚」?

流动性,说白了就是市场能不能「吃得下」你的单子。我见过太多人只看成交量,其实流动性度量更精细。

常用的流动性指标有这几个:

指标 定义 我的用法
市场深度 某个价格区间内的总挂单量 一般看±0.5%区间的深度
深度比率 买盘深度 / 卖盘深度 大于1说明买盘厚实
滑点成本 吃掉一定量订单需要的价格偏移 做市策略最关注这个
Amihud非流动性指标 日收益率绝对值 / 日成交额 衡量大单对价格的冲击

我曾经踩过一个坑:只看市场深度,忽略了滑点成本。结果有一次做套利,明明深度看着不错,一进去滑点直接吃掉了一半利润。嗯,从那以后我必算滑点成本。

避坑指南:流动性是会「伪装」的。有些币种在盘口挂了大单,但一成交就撤单。这叫「虚挂单」。我曾经被这种手法坑过,后来加了撤单率监控才解决。

3.3 订单簿斜率:判断市场「软硬」程度

订单簿斜率,衡量的是价格变动对挂单量的敏感度。斜率越大,说明价格稍微一动,挂单量就剧烈变化——市场很「硬」。

计算方式其实很简单:

def orderbook_slope(bids, asks, price_range=0.01):
    """
    计算订单簿斜率
    price_range: 价格范围(百分比)
    """
    mid_price = (bids[0][0] + asks[0][0]) / 2
    lower = mid_price * (1 - price_range)
    upper = mid_price * (1 + price_range)
    
    # 计算范围内的累积量
    bid_vol = sum(b[1] for b in bids if b[0] >= lower)
    ask_vol = sum(a[1] for a in asks if a[0] <= upper)
    
    # 斜率 = 累积量 / 价格范围
    slope = (bid_vol + ask_vol) / (mid_price * price_range * 2)
    return slope

我个人习惯把斜率分成三个区间:

  • 低斜率(< 100):市场「软」,流动性好,适合大单交易
  • 中斜率(100-500):正常状态,注意控制仓位
  • 高斜率(> 500):市场「硬」,一碰就跳,适合短线

实战经验:斜率突变往往预示着行情启动。我记得有一次,某币种斜率从200突然跳到800,我立刻警觉起来。果然,半小时后一波拉升来了。斜率变化比价格变化更早反映市场情绪。

3.4 买卖压力指标:谁在「用力」?

买卖压力指标,就是看买方和卖方谁更「着急」。常用的指标有:

  1. 买卖盘口差:买一总量 - 卖一总量。正数说明买方强势
  2. 深度不平衡率:(买盘深度 - 卖盘深度) / (买盘深度 + 卖盘深度)。范围[-1, 1]
  3. 订单簿压力指数:加权后的买卖压力,考虑挂单距离当前价格的远近

我一般用深度不平衡率,因为它归一化了,方便跨品种比较。代码实现:

def depth_imbalance(bids, asks, depth_levels=10):
    """
    计算深度不平衡率
    depth_levels: 取前N档挂单
    """
    bid_depth = sum(b[1] for b in bids[:depth_levels])
    ask_depth = sum(a[1] for a in asks[:depth_levels])
    
    if bid_depth + ask_depth == 0:
        return 0
    
    imbalance = (bid_depth - ask_depth) / (bid_depth + ask_depth)
    return imbalance

我的经验:不平衡率超过0.3或低于-0.3时,往往意味着短期方向。但要注意——大资金会故意制造不平衡来诱多或诱空。我曾经被这种「假信号」骗过几次,后来加了成交量确认才改善。

3.5 知识体系总览

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

订单簿深度分析知识体系 订单簿深度分析 深度图绘制 流动性度量 订单簿斜率 买卖压力指标 买盘/卖盘曲线 深度缺口识别 对数坐标优化 市场深度 深度比率 滑点成本 Amihud指标 斜率计算 低/中/高区间 斜率突变预警 买卖盘口差 深度不平衡率 订单簿压力指数 四个维度相互印证,才能看清市场全貌

这四个维度不是孤立的。我一般会综合使用:先看深度图了解整体结构,再用流动性指标判断能不能做,接着用斜率评估市场「软硬」,最后用买卖压力指标确认方向。四个维度相互印证,才能看清市场全貌。

总结一下:订单簿深度分析不是看单个指标,而是看它们之间的「共振」。当深度图出现缺口、流动性下降、斜率突变、买卖压力失衡同时发生时——嗯,行情要来了。


公众号:蓝海资料掘金营,微信deep3321