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% 的成交都集中在某个价格区间内,那这个区间就是市场真正的「价值区域」。价格跑出这个区域,要么是假突破,要么是趋势启动。

计算步骤是这样的:

  1. 把所有价格按成交量从大到小排序
  2. 从成交量最大的价格(也就是 POC)开始,向两边扩展
  3. 累加成交量,直到总成交量达到 70%
  4. 这个区间就是 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 知识体系图

下面这张图,帮你理清本章的核心逻辑:

成交量分布(Volume Profile)知识体系 成交量分布概念 POC 识别 价值区域计算 按价格统计成交量 价位(Price Level) 时间周期选择 最大成交量价格 市场共识点 动态更新 70% 成交量区间 VAH / VAL 从 POC 双向扩展 核心逻辑:找到市场最「认可」的价格区间

3.5 实战中的注意事项

最后,分享几个我在实战中踩过的坑:

  • 数据精度问题:不同交易所的 tick 数据精度不一样。做 VP 分析时,一定要统一精度。我吃过这个亏,算出来的 POC 偏差了 0.5 个点。
  • 时间窗口选择:日内交易用 30 分钟或 1 小时 VP 效果最好。日线级别用日 VP。别混用。
  • 结合订单流使用:VP 告诉你「在哪里成交最多」,订单流告诉你「谁在主动买/卖」。两者结合,威力翻倍。

一句话总结:

成交量分布,就是市场的「热力图」。POC 是温度最高的点,VA 是高温区域。做交易,跟着「热」的地方走,胜率更高。


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