16、订单流与市场轮廓:将订单流数据与市场轮廓理论(Market Profile)结合,理解市场结构
为什么要把订单流和市场轮廓放在一起?
说实话,我刚开始做交易那几年,市场轮廓和订单流是分开学的。市场轮廓告诉我「价格在哪里停留最久」,订单流告诉我「谁在推动价格」。直到有一次复盘一个失败的交易,我才恍然大悟——这两者根本就是一枚硬币的两面。
市场轮廓理论(Market Profile)由芝加哥商品交易所的Peter Steidlmayer在80年代提出。它的核心思想很简单:价格在某个区域停留的时间越长,这个区域就越重要。而订单流数据,恰恰能告诉我们这些「停留」背后是谁在买、谁在卖。
我个人习惯把市场轮廓看作「骨架」,订单流看作「血肉」。骨架决定了市场的整体结构,血肉则让这个结构活起来。
市场轮廓的核心概念
先快速过一下市场轮廓的几个关键要素,不然后面讲结合的时候你会懵。
- TPO(Time Price Opportunity):每个时间段内价格出现的记录。说白了就是「某个价格在某个时间段被交易过」的标记。
- 价值区域(Value Area):约70%的成交量发生的价格区间。这是市场认为「合理」的价格范围。
- 初始平衡(Initial Balance):开盘第一个小时的价格区间。这是多空双方第一次交锋的战场。
- 单边/双边市场:价格是否在价值区域内来回摆动。双边市场意味着分歧,单边市场意味着共识。
核心观点:市场轮廓的本质是「价格的时间分布」。订单流的本质是「价格的成交量分布」。两者结合,你就能看到「谁在什么时间、什么价格、花了多少钱」。
订单流如何补充市场轮廓?
市场轮廓有个天然的缺陷:它只告诉你价格在某个区域停留了多久,但不告诉你这个停留是「主动买入」还是「被动卖出」造成的。订单流正好补上这块。
举个例子。假设某只股票在100元附近形成了明显的价值区域,TPO计数很高。单看市场轮廓,你会觉得这里支撑很强。但如果你看订单流数据,发现这个区域的成交量中,被动买单占了80%,主动卖单一直在往下砸——那这个「支撑」就值得怀疑了。
我在项目中遇到过类似的情况。当时做股指期货的日内策略,市场轮廓显示上午10点到11点之间形成了一个非常漂亮的价值区域。我按传统方法在价值区域下沿做多,结果被止损了三次。后来加上订单流分析才发现,那个价值区域其实是空头在慢慢出货,每次价格跌到区域下沿都有大单主动卖出,只是被被动买单接住了而已。
嗯,从那以后我再也不单独看市场轮廓了。
结合使用的三种实战模式
下面是我自己总结的三种结合方式,每一种都经过实盘验证。
模式一:价值区域的Delta验证
当市场轮廓形成价值区域后,用订单流的Delta(主动买量 - 主动卖量)来判断这个区域的真实意图。
- 价值区域上沿:如果Delta为正且持续放大,说明突破是真实的。如果Delta为负,说明是假突破。
- 价值区域下沿:如果Delta为负且持续放大,说明跌破是真实的。如果Delta为正,说明是假跌破。
- 价值区域内部:如果Delta在零轴附近来回摆动,说明市场在平衡状态,适合做区间交易。
个人技巧:我习惯把价值区域的上下沿画在K线图上,然后在每个TPO时间段内计算累计Delta。如果累计Delta超过某个阈值(比如过去20个周期的2倍标准差),我就认为这个区域被「激活」了。
模式二:初始平衡的订单流解读
开盘第一个小时形成的初始平衡区间,是全天最重要的价格区域。用订单流可以判断这个区间的「质量」。
| 初始平衡特征 | 订单流表现 | 交易策略 |
|---|---|---|
| 窄区间(< 0.5% ATR) | Delta接近零,成交量低 | 等待突破,不做区间内交易 |
| 宽区间(> 1.5% ATR) | Delta大幅波动,成交量高 | 区间内高抛低吸,突破后追 |
| 单边初始平衡 | Delta持续单方向 | 顺势做突破,不要逆势 |
| 双边初始平衡 | Delta来回切换 | 等待价值区域形成后再入场 |
为什么会这样?因为初始平衡的本质是多空双方在开盘阶段的「试探」。如果试探过程中有一方明显占优(Delta持续为正或负),那全天大概率就是单边行情。如果双方势均力敌,那就进入双边震荡模式。
模式三:TPO与堆积量的共振
这是我最喜欢的一个模式。当某个价格水平同时满足两个条件时,我会把它标记为「关键价位」:
- TPO计数高(价格在这里停留时间长)
- 堆积量(Volume Profile)出现明显的峰值
这两个条件同时满足,意味着这个价格水平既有「时间上的认可」,又有「资金上的认可」。说白了,就是市场在这里达成了真正的共识。
避坑指南:我曾经犯过一个错误——看到TPO计数高就认为支撑强,忽略了成交量。结果在一个TPO密集区做多,被一根大阴线直接打穿。后来复盘发现,那个区域的成交量其实很小,只是价格来回晃悠了很多次而已。记住:没有成交量的TPO,就像没有子弹的枪。
代码实现:计算市场轮廓与订单流的结合指标
下面是一个简单的Python实现,用来计算每个价格水平的TPO计数和累计Delta。你可以把它集成到自己的策略中。
import pandas as pd
import numpy as np
def calculate_tpo_delta_profile(df, price_col='close', volume_col='volume',
delta_col='delta', tpo_periods=30):
"""
计算市场轮廓与订单流结合指标
参数:
df: DataFrame,包含价格、成交量、Delta数据
price_col: 价格列名
volume_col: 成交量列名
delta_col: Delta列名(主动买-主动卖)
tpo_periods: TPO统计的时间段数
返回:
profile_df: 每个价格水平的TPO计数和累计Delta
"""
# 将价格四舍五入到最近的tick
tick_size = 0.5 # 根据品种调整
df['price_bin'] = np.round(df[price_col] / tick_size) * tick_size
# 计算每个价格水平的TPO计数
tpo_counts = df.groupby('price_bin').size()
# 计算每个价格水平的累计Delta
delta_sums = df.groupby('price_bin')[delta_col].sum()
# 计算每个价格水平的累计成交量
volume_sums = df.groupby('price_bin')[volume_col].sum()
# 合并结果
profile_df = pd.DataFrame({
'tpo_count': tpo_counts,
'cumulative_delta': delta_sums,
'volume': volume_sums
}).fillna(0)
# 计算价值区域(成交量占比70%的区间)
total_volume = profile_df['volume'].sum()
profile_df = profile_df.sort_index()
profile_df['volume_pct'] = profile_df['volume'] / total_volume
profile_df['cum_volume_pct'] = profile_df['volume_pct'].cumsum()
# 找到价值区域上下沿
value_area_low = profile_df[profile_df['cum_volume_pct'] >= 0.15].index[0]
value_area_high = profile_df[profile_df['cum_volume_pct'] <= 0.85].index[-1]
# 标记关键价位
profile_df['is_key_level'] = (
(profile_df['tpo_count'] > profile_df['tpo_count'].quantile(0.8)) &
(profile_df['volume'] > profile_df['volume'].quantile(0.8))
)
return profile_df, value_area_low, value_area_high
# 使用示例
# profile, va_low, va_high = calculate_tpo_delta_profile(df)
# print(f"价值区域: {va_low} - {va_high}")
# print(f"关键价位数量: {profile['is_key_level'].sum()}")
实战建议:这个函数返回的profile_df中,is_key_level为True的价格就是TPO和成交量共振的位置。我个人习惯把这些位置画在图表上,用红色标记。如果价格再次回到这些位置,我会特别关注订单流的Delta变化。
一个完整的分析流程
最后,我分享一下自己每天开盘后的分析流程,供你参考:
- 第一步:看开盘第一个小时的初始平衡区间,记录上下沿价格。
- 第二步:用订单流数据计算初始平衡区间内的累计Delta,判断多空力量对比。
- 第三步:随着交易进行,不断更新价值区域。当价值区域与初始平衡区间重合时,这个区域的重要性加倍。
- 第四步:标记TPO计数高且成交量大的关键价位。这些价位是潜在的支撑/阻力。
- 第五步:当价格接近关键价位时,观察订单流的Delta和堆积量变化。如果Delta出现背离(价格创新高但Delta在下降),准备反向交易。
你想想看,这个流程其实就是在做一件事:用市场轮廓找到「战场」,用订单流判断「战况」。两者缺一不可。
总结一句话:市场轮廓告诉你「哪里重要」,订单流告诉你「为什么重要」。把这两个结合起来,你看到的就不再是K线,而是市场的真实博弈。
这张图把整个分析框架串起来了。左侧是市场轮廓的要素,右侧是订单流的要素,中间的结合点就是三大实战模式。你每次做分析的时候,可以对照这个框架,看看自己有没有遗漏哪个环节。