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, 1]
- 订单簿压力指数:加权后的买卖压力,考虑挂单距离当前价格的远近
我一般用深度不平衡率,因为它归一化了,方便跨品种比较。代码实现:
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 知识体系总览
下面这张图,是我自己梳理的订单簿深度分析框架。你看一眼就能明白各个模块的关系:
这四个维度不是孤立的。我一般会综合使用:先看深度图了解整体结构,再用流动性指标判断能不能做,接着用斜率评估市场「软硬」,最后用买卖压力指标确认方向。四个维度相互印证,才能看清市场全貌。
总结一下:订单簿深度分析不是看单个指标,而是看它们之间的「共振」。当深度图出现缺口、流动性下降、斜率突变、买卖压力失衡同时发生时——嗯,行情要来了。
公众号:蓝海资料掘金营,微信deep3321