- Published on
VAMA Volume Adjusted Moving Average Function
- Authors

- Name
- CoresightQuant
NOTE
本文为公开交易策略的技战术复盘,聚焦方法逻辑、交易场景与风险边界。
策略解读
传统移动平均线以固定时间窗口(如 5 日、20 日)作为计算基础,无论这段时间内市场交易是否活跃,每根K线都被赋予相同的权重。这种做法的隐含假设是“时间代表信息”,但真实市场中,成交量的分布并不均匀。某些日子里市场清淡,另一些日子里则剧烈放量。若只看时间窗口,那些低成交量K线可能并不具备充分的价格发现意义。
VAMA(Volume Adjusted Moving Average,成交量调整移动平均线)正是针对这一缺陷而设计。它的核心思想是:将“周期”从时间维度转换为“成交量维度”。通俗地说,传统移动平均线每隔若干根K线计算一次均值,而 VAMA 则是在累计成交量达到某一设定水平后,才完成一次均值计算。这样,价格样本的选取始终以市场参与强度为标准,而非以日历时间为标准。
在这份公开策略脚本中,作者以单个函数的形式实现了理查德·阿姆斯的原始构想,并增加了若干实用设置。其中 SampleN 用于确定平均成交量的基准样本范围,在样本内先计算出“平均成交量”,再将这个平均成交量作为后续划分“成交量桶”的尺子。VAMA Source 决定了用于加权计算的价格,通常是收盘价,但也可替换为典型价格或加权收盘价。VAMA Length 则指定了成交量比率桶的数量——每一个桶代表的成交量增量相当于平均成交量的多少倍,这个参数直接控制移动平均线的平滑程度。
例如,若平均成交量为 100 万股,VAMA Length 设定为 10,则每累计 1000 万股成交量,就形成一个“成交量桶”,移动平均线会在每个桶形成时更新一次。这种设计让移动平均线在高波动、高成交量时段反应更灵敏,在低波动、低成交量时段则更平稳。同时,通过设置快速与慢速两条 VAMA,可以模拟传统双均线交叉策略,但交叉信号的含义会从“时间趋势转变”升级为“单位成交量下的价格动能转变”。
名词解释
VAMA(Volume Adjusted Moving Average,成交量调整移动平均线)
一种不以时间为周期基准,而以成交量累积作为周期划分依据的移动平均线。它通过比较单位成交量所对应的价格变化幅度,来更真实地反映市场参与者的平均成本与趋势强度。
移动平均线(Moving Average)
对一段时间内价格取平均值的趋势指标,用于平滑价格波动、识别方向。常见的有简单移动平均线(SMA)、指数移动平均线(EMA)等。VAMA 可视为一种特殊的加权移动平均线——其权重由成交量决定。
成交量调整
指在指标计算过程中,不将每根K线视为等权样本,而是根据成交量大小对价格数据进行加权或重新采样,使得高成交量时期在指标中占据更大影响力。
成交量比率桶(Volume Ratio Bucket)
将成交量累计值切分成若干等量区间的概念。每个“桶”代表一个固定的成交量增量,通常是“平均成交量 × 长度参数”。VAMA 每收集满一个桶的成交量,就更新一次均线值。
样本期(SampleN)
用于估算“正常成交量水平”的历史窗口。SampleN 取值越大,平均成交量越稳定;取值为 0 时,代表使用从行情开始到当前时刻的全部K线来估算平均值。该参数直接影响“成交量桶”的大小。
Arms Index(阿姆斯指数,TRIN)
由理查德·阿姆斯提出的一种市场广度指标,通过上涨/下跌家数与上涨/下跌成交量之间的比值,判断市场超买超卖和内部动能。虽与 VAMA 属于不同指标,但同源于阿姆斯“量价关系决定趋势”的核心思想。
策略思路讲解
VAMA 的策略逻辑可以拆解为四个层次:定义成交量基准、构建成交量桶、计算均线值、双线交叉交易。
第一步是确定“平均成交量”。作者提供的 SampleN 参数,其实是在回答“什么样的成交量算作正常”这个问题。如果选择最近 100 根K线的平均成交量,那么这个基准会随着市场活跃度变化而动态调整。如果选择 0,则使用全部历史数据作为基准,相当于更强调长期平均状态。这个基准值并非为了预测,而是为了给“成交量桶”提供一个标尺。
第二步,将当前价格的成交量不断累加,直到累加值达到“平均成交量 × VAMA Length”。每一次完成这个过程,就相当于“装满了一个桶”。随后,将桶内所有价格(由 VAMA Source 指定,比如收盘价)求平均,得到一个新的 VAMA 点。这实际上是一种“成交量自适应重采样”——原本固定时间间隔的K线序列被重组成固定成交量间隔的“桶序列”。
第三步,当多个桶形成之后,将桶的平均价格按顺序连接,就得到了 VAMA 曲线。由于每个桶所包含的K线数量不同,VAMA 在高成交量区间的价格变化会更快地反映到曲线上,而在低成交量区间则类似“慢放”。这就像用变焦镜头拍摄市场:热闹的时候捕捉每个细节,冷清的时候只记录关键节点。
第四步,交易者可以设置两条 VAMA——一条短周期(快速)和一条长周期(慢速),例如 VAMA Length 分别为 5 和 20。当快速 VAMA 上穿慢速 VAMA 时,意味着单位成交量所推动的价格上涨动能正在增强,视为买入信号;反之,下穿则视为卖出信号。与传统双均线相比,这种交叉较少受到“沉闷行情”的干扰,因为低成交量时均线变化缓慢,不会频繁发出假信号。
此外,VAMA 的斜率本身也可作为趋势强度参考。若 VAMA 处于上升状态且斜率变大,说明价格在持续放量中上涨,属于健康趋势;若价格新高而 VAMA 却走平甚至下降,则可能意味着上涨动能未能得到成交量确认,存在背离风险。
优点
-
更贴近市场真实参与度
时间均线把每一分钟、每一天看得同样重要,但市场并非每天都有相同的信息量。VAMA 以成交量作为尺度,能够过滤掉大量低成交量噪音,使均线更聚焦于真实的交易活动。 -
对放量行情反应灵敏
当突然出现大单放量时,传统均线可能需要数根K线才能缓慢转向,而 VAMA 会立即在一个成交量桶中吸收这些价格变化,使趋势信号提前闪现,特别适合捕捉突破行情。 -
减少横盘期的无效信号
在成交量萎缩的盘整阶段,时间均线仍然会不断刷新数值并频繁交叉,造成大量假信号。VAMA 因为成交量桶累积缓慢,均线更新频率降低,交叉信号自然减少,有助于交易者保持耐心。 -
参数设置灵活,可适配多周期
SampleN 与 Length 两个参数组合,可以构造出从极短期到中长期的各种均线。既能用于日内分钟数据,也能用于日线或周线。同时,通过调整 VAMA Source,可以将算法的关注重点从收盘价转移到更稳定的加权价格上。 -
与经典技术分析体系兼容
VAMA 可以作为替代指标直接替换现有均线系统,而不必改变整体交易框架。趋势跟踪、均值回归、轨道突破等策略都可以沿用原有逻辑,只需将均线换成 VAMA,信号质量往往能获得提升。
缺点
-
计算复杂度较高
每次新增K线时,都需要重新累计成交量并判断是否达到桶的阈值,还要维护不同桶的价格列表。虽然现代计算机处理起来毫无压力,但在数据量极大的回测中,相比简单移动平均线,VAMA 的迭代逻辑会占用更多计算资源。 -
“平均成交量”基准可能失真
SampleN 的选择直接影响桶的大小。如果市场环境发生结构性变化(例如从熊市转入牛市),历史平均成交量会严重偏离当前真实水平。此时桶的大小要么过小导致均线剧烈跳动,要么过大导致反应迟钝,需要人工频繁调整参数。 -
成交量数据质量依赖性强
不同交易所、不同市场对成交量的统计口径可能存在差异,部分市场还包含集合竞价、大宗交易等特殊成交。若原始成交量数据含有异常值或遗漏,则 VAMA 的计算结果会明显失真,且这种误差很难通过平滑操作消除。 -
信号数量较少,可能错过部分机会
由于过滤掉了低成交量的波动,VAMA 在趋势启动初期往往信号偏晚。尤其是在缓慢攀升的缩量牛市中,价格已经上涨一大段,VAMA 还迟迟未出现交叉,从而压缩了盈利空间。 -
缺少公认的标准化实现
虽然理查德·阿姆斯提出了思想基础,但不同交易社区对 VAMA 的具体计算细节并无统一标准。例如,桶内价格取算术平均还是加权平均?成交量桶是滚动重置还是持续累积?这些差异会导致同一指标在不同平台上表现迥异,影响策略的复现性。
起源年份考证
需要说明的是:本文考证的是“成交量调整移动平均”这一大类方法的出现与流行时间线,而非特指本脚本或某个确切指标诞生的精确年份。目前公开资料中难以找到理查德·阿姆斯本人发布 VAMA 的确切日期,但可以从量价分析方法的发展脉络中勾勒出时间坐标。
- 1960年代:理查德·阿姆斯(Richard W. Arms Jr.)开始系统研究成交量与价格之间的关系。他于1967年提出了著名的阿姆斯指数(TRIN),用于衡量市场内部多空力量。
- 1970年代:Arms 在其著作中推广了“等量图”(Equivolume)概念,该图形不再以时间为横轴,而是使用成交量作为横轴,每个K线的宽度与成交量成正比。这一思想与 VAMA 的“以成交量代替时间”完全同源。
- 1980年代:在计算机辅助交易逐渐普及的背景下,成交量加权移动平均线(VWMA)等指标开始被部分软件厂商和交易者使用。VAMA 作为将“成交量维度”引入移动平均的变体,也在这一时期内逐渐孕育。
- 1990年代:随着技术分析软件的普及,许多量化交易者开始测试各种成交量自适应均线。理查德·阿姆斯本人也多次在访谈中提及成交量应参与价格平均的观点,但并未公布严格的数学公式。
- 2000年以后:公开交易社区中出现了大量自定义实现,将 Arms 的成交量调整思想封装为函数或指标。本文所描述的单函数版本便属于这一类社区创造成果,其具体编写时间已无法考证。
综上,VAMA 的思想根基可追溯至 1960-1970 年代,而作为一种编程形式的可交易指标,大约在 1990 年代后期至 2000 年代初期才开始在个人交易者群落中广泛出现。严格来说,“VAMA 函数”的完整算法并无单一权威出处,它属于量价自适应均线家族中的一员。
改进建议
-
引入动态样本基准
将 SampleN 从固定值改为自适应窗口,例如使用标准差或 ATR 来动态调整平均成交量的计算范围。当成交量波动加剧时,自动缩短样本期;当市场稳定时,适当延长样本期,以避免基准失真。 -
加入成交量归一化处理
在计算桶容量之前,先对成交量进行去异常值处理。比如移除单根K线中成交量超过 5 倍平均值的极端值,或者用中位数代替平均数作为基准,从而降低闪崩、停牌恢复等异常交易对桶大小的冲击。 -
结合价格通道或波动率过滤器
VAMA 双线交叉信号可进一步叠加波动率条件,例如仅当价格突破某一周期的唐奇安通道或 ATR 通道时才触发交易,这样可以过滤掉成交量平稳但价格横盘的无效交叉。 -
增加成交量动能确认模块
除了 VAMA 快慢线交叉,还可以引入成交量自身的变化率(如成交量动量)。只有当交叉发生且成交量连续两根K线高于其自身平均量时,才确认信号,防止单一放量伪装成趋势。 -
采用多长度对比的评分机制
不再只依赖一条快速和一条慢速均线,而是同时测试多组长度(如 5/20、8/30、13/50)的 VAMA,并根据各组多头排列的一致性给出综合评分,从而提升策略的鲁棒性。 -
允许桶容量按行情方向分型
上涨过程中,桶容量可以设置为成交量的一定比例,而下跌过程中则设置为另一个比例,以反映多空双方不同的参与意愿。例如,上涨时更重视增量资金,下跌时更重视存量抛压,从而使均线对上升趋势更敏感、对下跌趋势更稳健。 -
与周期均线结合使用
将 VAMA 与传统时间均线(如 SMA)的差值作为辅助指标。当两者方向一致且间距扩大时,说明量价共振,趋势可信;当两者方向背离时,则警惕潜在反转。这样可以兼得时间维度和成交量维度的信息。
总结
VAMA 以成交量而非时间作为移动平均线的周期刻度,是对技术分析基础工具的一次深刻改良。它继承了理查德·阿姆斯对“量价一体”的执着追求,将市场参与强度真正嵌入到趋势识别过程中。对于普通交易者而言,VAMA 并不复杂——只需理解“成交量桶”的概念,就能很容易地解读它的走势。而其快慢双线交叉策略,则是一种既尊重传统趋势逻辑,又更具市场敏感度的进化版均线系统。
当然,VAMA 并非万能钥匙。它的表现高度依赖于成交量数据的质量以及样本基准选择的合理性。与所有技术指标一样,单独使用 VAMA 并不足以构成完整的交易系统,只有将其与价格形态、风险控制、市场环境过滤等维度结合,才能真正发挥量价关系的威力。正如成交量是市场的气体,价格是固化的浪,VAMA 则是试图用气体流动来预测浪形走向的尝试。它未必每次都对,但那种“以交易量而非时钟来衡量市场节奏”的视角,值得每一位技术分析者深入品味。