3、成交量分布(Volume Profile):成交量分布的概念、POC(Point of Control)识别、价值区域(VA)计算
好,咱们进入第三章。成交量分布,英文叫 Volume Profile,简称 VP。
这东西,说白了就是告诉你——在某个价格上,到底成交了多少量。
你想想看,传统的成交量指标,比如成交量柱状图,它只告诉你「这一分钟成交了多少」。但你没看到的是,这一分钟里,价格从 100 块跑到 101 块,到底哪个价格上成交最多?
嗯,这就是 VP 要解决的问题。
3.1 成交量分布的概念
我刚开始接触这个工具时,觉得它跟 K 线图上的成交量没啥区别。后来在实盘里跑了一段时间才发现——完全不是一回事。
成交量分布,它把每一笔成交的价格和数量都记录下来。然后按价格区间(我们叫「价位」或「tick」)去汇总。
举个例子:
- 价格 100.00 元,成交了 500 手
- 价格 100.01 元,成交了 200 手
- 价格 100.02 元,成交了 800 手
把这些数据画成一张图,横轴是成交量,纵轴是价格。你就能看到——哪个价格上,多空双方打得最激烈。
核心概念:
- 成交量分布图:按价格统计的成交量直方图
- 时间周期:通常以交易日为单位,也可以自定义
- 价位(Price Level):最小价格变动单位
我个人习惯,在分析主力合约时,会把 VP 的周期设成 1 小时。太短了噪音多,太长了又失去灵敏度。
3.2 POC(Point of Control)识别
POC,全称 Point of Control。翻译过来就是「控制点」。
什么意思呢?就是在整个成交量分布图中,成交量最大的那个价格。
你想想看,如果某个价格上成交了最多的量,说明什么?说明多空双方在这个位置达成了最大共识。换句话说,这个价格是市场最「认可」的价值。
我在项目中遇到过一件事:有一次做股指期货的回测,我发现 POC 这个位置,经常成为后续行情的「磁铁」。价格远离 POC 后,总会被拉回来。说白了,POC 就是市场的「引力中心」。
怎么识别 POC?代码实现其实很简单:
def find_poc(volume_profile):
"""
找到成交量分布中的 POC
volume_profile: dict, key=价格, value=成交量
返回: (poc_price, max_volume)
"""
poc_price = max(volume_profile, key=volume_profile.get)
max_volume = volume_profile[poc_price]
return poc_price, max_volume
嗯,这里要注意:如果多个价格成交量相同且都是最大,怎么办?
我建议取中间值。或者,你也可以取第一个出现的。但不管怎么选,一定要在策略文档里写清楚。
实战技巧:
POC 不是一成不变的。随着新数据的加入,POC 会动态移动。我个人习惯在每天收盘后重新计算一次 POC,作为第二天的参考。
3.3 价值区域(VA)计算
价值区域,Value Area,简称 VA。
它指的是——成交量占比达到 70% 的价格区间。
为什么是 70%?这是市场微观结构理论里的一个经验值。你想想看,如果 70% 的成交都集中在某个价格区间内,那这个区间就是市场真正的「价值区域」。价格跑出这个区域,要么是假突破,要么是趋势启动。
计算步骤是这样的:
- 把所有价格按成交量从大到小排序
- 从成交量最大的价格(也就是 POC)开始,向两边扩展
- 累加成交量,直到总成交量达到 70%
- 这个区间就是 VA,上边界叫 VAH,下边界叫 VAL
代码实现:
def calculate_value_area(volume_profile, total_volume, threshold=0.7):
"""
计算价值区域
volume_profile: dict, key=价格, value=成交量
total_volume: 总成交量
threshold: 阈值,默认 70%
返回: (vah, val, va_volume)
"""
# 按成交量排序
sorted_levels = sorted(volume_profile.items(),
key=lambda x: x[1], reverse=True)
# 找到 POC
poc_price = sorted_levels[0][0]
# 从 POC 向两边扩展
target_volume = total_volume * threshold
accumulated = 0
left = poc_price
right = poc_price
# 这里简化了双向扩展的逻辑
# 实际实现需要维护左右指针
while accumulated < target_volume:
# 扩展逻辑...
pass
return vah, val, accumulated
避坑指南:
我曾经在计算 VA 时犯过一个错误——直接用成交量排序后取前 70%。结果算出来的 VA 区间特别窄,完全没意义。
正确的做法是:从 POC 向两边扩展,而不是从大到小取前 N 个。
3.4 知识体系图
下面这张图,帮你理清本章的核心逻辑:
3.5 实战中的注意事项
最后,分享几个我在实战中踩过的坑:
- 数据精度问题:不同交易所的 tick 数据精度不一样。做 VP 分析时,一定要统一精度。我吃过这个亏,算出来的 POC 偏差了 0.5 个点。
- 时间窗口选择:日内交易用 30 分钟或 1 小时 VP 效果最好。日线级别用日 VP。别混用。
- 结合订单流使用:VP 告诉你「在哪里成交最多」,订单流告诉你「谁在主动买/卖」。两者结合,威力翻倍。
一句话总结:
成交量分布,就是市场的「热力图」。POC 是温度最高的点,VA 是高温区域。做交易,跟着「热」的地方走,胜率更高。
公众号:蓝海资料掘金营,微信deep3321