第五章:订单流分析——逐笔成交数据、订单流不平衡、买卖压力指标、订单流与价格关系
各位同学,欢迎来到订单流分析这一章。
说实话,做量化交易这几年,我越来越觉得:K线图是给外人看的,订单流才是给内行看的。你想想看,一根K线收盘后,里面到底发生了什么?谁在买?谁在卖?买卖双方的力量对比如何?这些信息,K线根本不会告诉你。
订单流分析,说白了就是扒开K线的外衣,直接看每一笔交易的细节。我个人习惯把订单流比作「市场的X光片」——它能让你看到价格背后的真实博弈。
5.1 逐笔成交数据:最原始的市场语言
逐笔成交数据,就是交易所里每一笔真实成交的记录。它不像Tick数据那样只记录报价变化,而是记录了「谁以什么价格买了多少」。
一个标准的逐笔成交数据,通常包含以下字段:
| 字段 | 含义 | 示例 |
|---|---|---|
| 时间戳 | 成交发生的精确时间 | 2024-01-15 09:30:01.234 |
| 成交价 | 该笔交易的价格 | 15.68 |
| 成交量 | 该笔交易的股数/手数 | 2000 |
| 成交额 | 该笔交易的金额 | 31360 |
| 买卖方向 | 主动买还是主动卖 | B / S |
这里有个关键点:买卖方向。交易所不会直接告诉你「这笔是买方主动」还是「卖方主动」,但我们可以通过成交价与买卖盘口的对比来判断。
核心判断逻辑:
- 如果成交价等于卖一价,说明买方主动吃单 → 记为主动买(B)
- 如果成交价等于买一价,说明卖方主动砸单 → 记为主动卖(S)
- 如果成交价在买卖盘口之间,通常视为中性或按规则分配
我在项目中遇到过一个问题:有些交易所的数据源会把买卖方向标反。嗯,这很坑。我曾经花了一整天调试一个策略,结果发现是数据源把B和S搞反了。所以,拿到数据后第一件事——先手动验证几笔,别盲目相信。
5.2 订单流不平衡:谁在主导市场?
有了逐笔成交数据,我们就可以计算一个非常核心的指标——订单流不平衡(Order Flow Imbalance, OFI)。
公式其实很简单:
OFI = 主动买成交量 - 主动卖成交量
如果OFI > 0,说明买方力量更强;如果OFI < 0,说明卖方占优。绝对值越大,力量越悬殊。
但光看绝对值还不够。我个人习惯看累积订单流不平衡(Cumulative OFI),也就是把一段时间内的OFI累加起来。这能反映出资金的持续流向。
实战小技巧:
我建议把OFI和价格走势放在同一张图上对比。你会发现一个有趣的现象:价格可能还在涨,但OFI已经开始走弱了。这就是所谓的「量价背离」,往往是反转的前兆。
举个例子:某只股票价格从15元涨到16元,但累积OFI却在下降。这说明虽然价格在涨,但主动买盘的力量在减弱。这时候,我会开始警惕——可能有人在拉高出货。
5.3 买卖压力指标:量化多空博弈
OFI虽然好用,但它只考虑了成交量,没有考虑价格深度。于是就有了更精细的指标——买卖压力指标。
我最常用的两个指标是:
- VPIN(成交量加权订单流不平衡):把成交量作为权重,计算每个价格档位的OFI加权值。说白了,就是看「大单在往哪边跑」。
- Delta指标:逐笔计算主动买与主动卖的差值,然后按时间窗口聚合。比如1分钟Delta = 该分钟内主动买量 - 主动卖量。
这里我贴一段我自己写的计算代码,你们可以直接拿去用:
def calculate_delta(trade_data, window='1min'):
"""
计算Delta指标
trade_data: DataFrame,包含['time', 'price', 'volume', 'side']
side: 'B'表示主动买,'S'表示主动卖
"""
# 先标记方向
trade_data['delta'] = trade_data['volume'].where(
trade_data['side'] == 'B', -trade_data['volume']
)
# 按时间窗口聚合
delta_series = trade_data.resample(window, on='time')['delta'].sum()
return delta_series
注意:Delta指标对数据频率非常敏感。如果你用1秒窗口,噪声会很大;如果用1小时窗口,又会丢失很多细节。我个人习惯在5分钟到15分钟之间调试,找到最适合你交易品种的参数。
5.4 订单流与价格关系:从微观到宏观
订单流和价格的关系,其实就一句话:订单流是原因,价格是结果。
你想想看,价格为什么会涨?因为有人在不断用主动买单吃掉卖盘。价格为什么会跌?因为有人在不断用主动卖单砸穿买盘。没有订单流的推动,价格就是死水一潭。
我总结了一个简单的框架,用来分析订单流与价格的关系:
- 价格涨 + OFI为正 → 健康的上涨,买方持续发力
- 价格涨 + OFI为负 → 虚假上涨,可能是诱多
- 价格跌 + OFI为负 → 健康的下跌,卖方主导
- 价格跌 + OFI为正 → 下跌中的吸筹,可能是底部
这个框架虽然简单,但非常实用。我记得有一次做股指期货的日内策略,就是靠这个框架抓住了几次关键的反转点。当时价格在下跌,但OFI开始转正,我果断做多,结果半小时后价格就反弹了。
当然,订单流分析也不是万能的。它最大的问题是——数据量大。逐笔成交数据一天可能几百万条,处理起来对计算资源要求很高。我建议你们先用小样本数据跑通逻辑,再上全量数据。
本章核心要点:
- 逐笔成交数据是订单流分析的基础,买卖方向判断是关键
- 订单流不平衡(OFI)量化了买卖力量的对比
- 买卖压力指标(VPIN、Delta)提供了更精细的视角
- 订单流是价格变动的驱动力,两者结合可以识别真假突破
好了,这一章的内容就到这里。订单流分析是一个需要大量实践才能掌握的技能,建议你们找几天的历史数据,自己动手算一算OFI和Delta,看看能不能发现一些规律。