基于 Anna Coulling,《量价分析完全指南》(2012)
Anna Coulling是一位交易员和教育者,花了数十年研究成交量与价格之间的关系。她的工作主要借鉴了Richard Wyckoff(1873-1934)的基础性见解——技术分析的早期巨匠之一,以及Tom Williams及其成交量价差分析(VSA)方法论的后续贡献。
《量价分析完全指南》(2012)建立在一个看似简单的前提之上:成交量是市场中唯一的领先指标。价格告诉你发生了什么;成交量告诉你为什么。成交量揭示了市场主导参与者——机构投资者、做市商和专业交易商——的活动,通过正确解读成交量,交易者可以与这些主导力量保持一致,而非与之对抗。
本书的理念拒绝大多数技术分析的复杂性,转而采用一种精简的方法:两个变量(成交量和价格)、它们之间的关系以及这种关系发生的背景。没有振荡器,没有均线交叉,没有斐波那契——只有成交量和价格,逐根K线分析。
成交量提供了单独价格无法提供的信息:
| 仅有价格告诉你 | 成交量+价格告诉你 |
|---|---|
| 市场上涨了 | 市场在强劲参与下上涨——走势是真实的 |
| 市场上涨了 | 市场在弱势成交量下上涨——走势值得怀疑 |
| 市场下跌了 | 市场在恐慌性抛售中下跌——衰竭即将到来 |
| 市场下跌了 | 市场在轻量成交量下下跌——只是正常回调 |
| 支撑位被测试 | 支撑位在低成交量下被测试——需求压倒供给,支撑有效 |
| 阻力位被突破 | 阻力位在高成交量下被突破——真实突破 |
Coulling的整个框架建立在一个公理之上:成交量验证价格。每一个价格运动都必须由相应的成交量来确认才值得信任。没有成交量确认的价格运动是一种欺骗——是内部人士设置的陷阱,诱使散户交易者站在市场的错误一边。
Coulling在Wyckoff的三个基本市场定律基础上展开论述:
定律一:供需定律。 当需求超过供给时价格上涨,当供给超过需求时价格下跌。成交量揭示哪种力量占主导。上涨中的高成交量意味着需求强劲。下跌中的高成交量意味着供给压倒性。
定律二:因果定律。 每一个重大价格运动(结果)都需要一个准备期(原因)。吸筹是原因;随后的上涨是结果。派发是原因;随后的下跌是结果。原因的规模(吸筹或派发的持续时间和成交量)决定了结果的规模(随后趋势的幅度)。
定律三:努力与结果定律。 努力(成交量)应产生与之成比例的结果(价格运动)。当努力和结果和谐时,走势是真实的。当它们背离时——高努力伴随低结果,或低努力伴随大结果——说明有问题,反转或暂停很可能发生。
Wyckoff识别出一个在所有市场和时间周期中重复的四阶段周期:
关键洞察:吸筹和派发对于仅看价格的分析是不可见的,因为价格在这两个阶段都是横盘的。只有成交量能揭示聪明资金是在区间内买入还是卖出。
Coulling识别出四种基本的量价关系:
1. 价格上涨 + 成交量上升 = 看涨确认 价格上涨时需求在增加。买方愿意付出更高价格且人数在增加。上涨趋势是真实的,可能会持续。
2. 价格上涨 + 成交量下降 = 看跌预警 价格在上涨,但参与购买的人越来越少。上涨趋势正在失去动力。卖方很快将压倒正在减弱的需求。这是技术分析中最可靠的反转预警之一。
3. 价格下跌 + 成交量上升 = 两种解读
4. 价格下跌 + 成交量下降 = 看涨信号(潜在的) 抛售压力在减弱。供给正在枯竭。这是上涨趋势中回调的特征,而非新的下跌趋势。如果回调发生在支撑位,这是一个强买入信号。
| 高成交量 | 平均成交量 | 低成交量 | |
|---|---|---|---|
| 宽幅上涨 | 强看涨确认 | 正常买入 | 可疑——可能是跳空或新闻驱动 |
| 窄幅上涨 | 潜在阻力——努力未产生结果 | 正常整理 | 漂移,无承诺 |
| 宽幅下跌 | 强看跌确认或恐慌性抛售 | 正常卖出 | 可疑——可能是跳空或新闻驱动 |
| 窄幅下跌 | 潜在支撑——卖方尽管努力仍失败 | 正常整理 | 漂移,无承诺 |
努力与结果原则是量价分析中最强大的概念。它指出,所花费的成交量(努力)应产生与之成比例的价格运动(结果)。当这种关系被打破时,它揭示了隐藏的活动。
高努力,小结果(搅动):
低努力,大结果:
通过努力与结果的视角,每根K线都讲述一个故事:
吸筹是知情投资者在重大上涨之前建立仓位的过程。它必须悄悄进行——如果买入很明显,其他参与者会抢先下单,过早推高价格。
初始支撑(PS)。 在长期下跌之后,第一个显著需求的迹象出现。在一根未能创出新低的阴线上成交量增加。价格暂时稳定。
卖出高潮(SC)。 在非常高的成交量上急剧下跌,代表恐慌性抛售的最后一波。聪明资金吸收了这些供给。价格通常急剧下跌后迅速反弹(长下影线)。
自然反弹(AR)。 在抛售压力减弱后价格反弹。这建立了交易区间的上边界。成交量适中。
二次测试(ST)。 价格回到卖出高潮低点附近,测试供给是否真正耗尽。成交量应低于卖出高潮时的成交量。如果是,需求占主导。
弹簧(可选)。 价格短暂跌破交易区间低点,触发止损单并甩出弱势持有者。成交量应该低——如果是,弹簧是一个看涨陷阱,聪明资金正在买入被迫卖出的筹码。
强势信号(SOS)。 价格在成交量增加的情况下穿越交易区间中部。这是需求已经克服供给的第一个明确证据。
最后支撑点(LPS)。 拉升阶段开始前的最后一次回调。成交量应该低,确认供给已被吸收。
派发是吸筹的镜像——知情投资者在重大下跌之前清算仓位。与吸筹一样,它必须逐步执行以避免惊动市场。
初始供给(PSY)。 在长期上涨之后,第一个显著卖出的迹象出现。在一根未能创出新高的阳线上成交量增加。价格暂时停滞。
买入高潮(BC)。 在非常高的成交量上急剧上涨,代表狂热买入的最后一波。聪明资金卖入这些需求。价格通常急剧冲高后迅速回落(长上影线)。
自然回落(AR)。 随着买入热情消退价格下跌。这建立了交易区间的下边界。成交量适中。
二次测试(ST)。 价格回到买入高潮高点附近,测试需求是否真正耗尽。成交量应低于买入高潮时的成交量。如果是,供给占主导。
上冲(可选)。 价格短暂突破交易区间高点之上,触发突破追买。成交量应该低——如果是,上冲是一个看跌陷阱,聪明资金正在卖入突破的热情中。
弱势信号(SOW)。 价格在成交量增加的情况下跌穿交易区间中部。这是供给已经克服需求的第一个明确证据。
最后供给点(LPSY)。 下跌阶段开始前的最后一次反弹。成交量应该低,确认需求已被耗尽。
高潮成交量是异常巨大的成交量——通常是近期均值的2-3倍或更多——预示着主导力量的衰竭。高潮成交量出现在转折点,因为它代表了失败方最后的、绝望的行动。
卖出高潮出现的条件:
解读:恐慌性卖方的最后一波已被知情买方吸收。供给现已耗尽。底部正在形成。
买入高潮出现的条件:
解读:狂热买方的最后一波已被知情卖方迎击。需求现已耗尽。顶部正在形成。
单根高潮K线是反转的必要但非充分条件。确认来自:
在高潮成交量之后,市场必须测试主导力量是否真正耗尽。测试是吸筹和派发的确认机制:
成功的支撑测试:
失败的支撑测试:
成功的阻力测试:
失败的阻力测试:
多次测试逐步建立更强的证据:
弹簧是在低成交量下暂时跌破支撑位,随后快速反弹。这是一种有意设计的甩盘:
上冲是弹簧的镜像——在低成交量下暂时突破阻力位之上,随后快速下跌:
弹簧和上冲是量价分析中概率最高的交易形态之一:
风险/回报比很有利,因为止损很紧(仅超出弹簧或上冲极端点一点),而目标很宽(整个区间或更多)。
支撑位和阻力位并不是生而平等的。成交量决定了它们的重要性:
阻力位同理——高成交量阻力是真实的;低成交量阻力是薄弱的。
当价格突破支撑位或阻力位时,成交量决定突破是否真实:
真实突破:
假突破:
价格接近关键位时成交量的行为揭示了意图:
虽然量价分析关注成交量和价格区间,但K线形态通过开盘价和收盘价的关系以及影线的存在增添了细微差别:
看涨量价 + 看涨K线 = 高确信度:
看跌量价 + 看涨K线 = 混淆:
锤子线 + 支撑位高成交量:
流星线 + 阻力位高成交量:
十字星 + 高成交量:
吞没形态 + 成交量确认:
对于每根K线,Coulling建议按以下顺序解读:
Coulling强调,当量价分析信号在多个时间周期得到确认时,其可靠性会增加:
| 时间周期 | 角色 | 成交量意义 |
|---|---|---|
| 月线 | 长期趋势和周期识别 | 主要吸筹/派发 |
| 周线 | 中期趋势和波段方向 | 重要反转和趋势 |
| 日线 | 交易偏向和机会识别 | 最常用的量价分析时间周期 |
| 小时/4小时 | 入场和出场时机 | 日内细化 |
| 15分钟/5分钟 | 活跃交易者的精确入场 | 噪音增加;谨慎使用 |
当时间周期冲突时,更高时间周期优先:
忽视背景。 高成交量K线在不同位置有不同含义。支撑位的高成交量是看涨的;在长期上涨后的高成交量可能是派发。始终在背景中解读成交量。
使用绝对成交量而非相对成交量。 重要的不是成交量在绝对数值上是否"高",而是相对于近期平均成交量是否高。通常交易100万股的股票显示300万有意义。通常交易5000万股的股票显示300万只是安静的一天。
期望即时结果。 吸筹和派发需要时间——数周、数月,有时数年。单一的量价分析信号是一条线索,而非触发器。
混淆高潮成交量与持续成交量。 长期走势后的极高成交量通常预示衰竭,而非延续。但许多交易者看到高成交量就认为趋势在加速。
忽视收盘位置。 收盘价相对于K线区间的位置至关重要。在K线低点附近收盘的高成交量宽幅K线是看跌的,而非看涨的,尽管它在大部分时间可能是上涨的。
脱离背景交易。 试图孤立地交易量价分析信号,不考虑更广泛的市场结构、趋势和时间周期。
忽视趋势。 量价分析在用于确认或否定现有趋势时最为强大。逆势的量价分析信号需要更强的确认。
过度分析。 对每根K线都解读含义。大多数K线是噪音。专注于那些成交量真正异常的K线——那些明显突出的。
在流动性不足的市场使用成交量。 量价分析在流动性好的市场最为可靠,那里的成交量真正反映了参与度。在交投清淡的股票中,成交量可能被单笔大额订单扭曲。
不追踪成交量模式的时间演变。 单根K线是一个数据点。K线的模式——回调时成交量递减、上涨时成交量增加——讲述了一个故事。始终要放大视角。
function classifyBar(bar, recent_bars):
// 计算相对成交量
avg_volume = average(recent_bars[-20:].volume)
relative_volume = bar.volume / avg_volume
// 成交量分类
if relative_volume >= 2.0:
volume_class = "ULTRA_HIGH" // 超高
elif relative_volume >= 1.5:
volume_class = "HIGH" // 高
elif relative_volume >= 0.75:
volume_class = "AVERAGE" // 平均
else:
volume_class = "LOW" // 低
// 计算相对于近期的价差(区间)
bar_range = bar.high - bar.low
avg_range = average(recent_bars[-20:].range)
relative_range = bar_range / avg_range
// 价差分类
if relative_range >= 1.5:
spread_class = "WIDE" // 宽幅
elif relative_range >= 0.75:
spread_class = "AVERAGE" // 平均
else:
spread_class = "NARROW" // 窄幅
// K线内收盘位置分类
if bar_range == 0:
close_position = "DOJI" // 十字星
else:
close_pct = (bar.close - bar.low) / bar_range
if close_pct >= 0.70:
close_position = "HIGH" // 高位
elif close_pct >= 0.30:
close_position = "MIDDLE" // 中位
else:
close_position = "LOW" // 低位
// 确定K线方向
direction = "UP" if bar.close > bar.open else "DOWN"
return VPABar(volume_class, spread_class, close_position, direction)
function analyzeEffortResult(bar_classification):
volume = bar_classification.volume_class
spread = bar_classification.spread_class
close = bar_classification.close_position
direction = bar_classification.direction
// 和谐:努力与结果匹配
if volume in ["HIGH", "ULTRA_HIGH"] and spread == "WIDE":
if direction == "UP" and close == "HIGH":
return "STRONG_BULLISH_CONFIRMATION" // 强看涨确认
elif direction == "DOWN" and close == "LOW":
return "STRONG_BEARISH_CONFIRMATION" // 强看跌确认
// 异常:高努力,小结果(搅动)
if volume in ["HIGH", "ULTRA_HIGH"] and spread == "NARROW":
return "CHURNING_POTENTIAL_REVERSAL" // 搅动_潜在反转
// 异常:高成交量,收盘与方向相反
if volume in ["HIGH", "ULTRA_HIGH"] and spread == "WIDE":
if direction == "UP" and close == "LOW":
return "HIDDEN_SELLING" // 隐藏卖出——阳线收弱 = 派发
elif direction == "DOWN" and close == "HIGH":
return "HIDDEN_BUYING" // 隐藏买入——阴线收强 = 吸筹
// 低努力,大结果
if volume == "LOW" and spread == "WIDE":
return "VACUUM_MOVE_UNSUSTAINABLE" // 真空走势_不可持续
// 低努力,小结果
if volume == "LOW" and spread == "NARROW":
return "NO_INTEREST" // 无兴趣
return "NEUTRAL" // 中性
function detectAccumulationDistribution(bars, lookback=50):
range_bars = bars[-lookback:]
// 识别是否在交易区间内
range_high = max(range_bars.high)
range_low = min(range_bars.low)
range_width = range_high - range_low
// 检查价格是否在整理(区间震荡)
if range_width / range_bars[-1].close > 0.30:
return "NOT_IN_RANGE" // 不在区间内——太宽,可能在趋势中
// 统计成交量特征
up_volume = sum(bar.volume for bar in range_bars if bar.close > bar.open)
down_volume = sum(bar.volume for bar in range_bars if bar.close <= bar.open)
// 支撑测试时的成交量
support_tests = [bar for bar in range_bars
if bar.low < range_low + range_width * 0.10]
support_test_volumes = [bar.volume for bar in support_tests]
// 阻力测试时的成交量
resistance_tests = [bar for bar in range_bars
if bar.high > range_high - range_width * 0.10]
resistance_test_volumes = [bar.volume for bar in resistance_tests]
// 吸筹信号:
// - 阳线成交量超过阴线成交量
// - 支撑测试时成交量随时间递减
// - 区间内反弹时成交量增加
if up_volume > down_volume * 1.2:
if is_declining_sequence(support_test_volumes):
return "ACCUMULATION_LIKELY" // 可能在吸筹
// 派发信号:
// - 阴线成交量超过阳线成交量
// - 阻力测试时成交量随时间递减
// - 区间内下跌时成交量增加
if down_volume > up_volume * 1.2:
if is_declining_sequence(resistance_test_volumes):
return "DISTRIBUTION_LIKELY" // 可能在派发
return "INDETERMINATE" // 不确定
function detectSpring(bars, support_level, lookback=5):
recent = bars[-lookback:]
for i, bar in enumerate(recent):
// 弹簧:价格跌破支撑位后反弹
if bar.low < support_level:
penetration_depth = (support_level - bar.low) / support_level
// 跌破时成交量必须低
avg_vol = average(bars[-30:].volume)
relative_vol = bar.volume / avg_vol
if relative_vol < 0.80 and penetration_depth < 0.03:
// 检查反弹
if bar.close > support_level:
return SpringSignal(
type="SPRING", // 弹簧
quality="HIGH" if relative_vol < 0.50 else "MODERATE",
entry=support_level,
stop=bar.low - ATR(bars, 14) * 0.5,
confidence=0.8 if relative_vol < 0.50 else 0.6
)
return None
function detectUpthrust(bars, resistance_level, lookback=5):
recent = bars[-lookback:]
for i, bar in enumerate(recent):
if bar.high > resistance_level:
penetration_depth = (bar.high - resistance_level) / resistance_level
avg_vol = average(bars[-30:].volume)
relative_vol = bar.volume / avg_vol
if relative_vol < 0.80 and penetration_depth < 0.03:
if bar.close < resistance_level:
return UpthrusSignal(
type="UPTHRUST", // 上冲
quality="HIGH" if relative_vol < 0.50 else "MODERATE",
entry=resistance_level,
stop=bar.high + ATR(bars, 14) * 0.5,
confidence=0.8 if relative_vol < 0.50 else 0.6
)
return None
function validateBreakout(bars, level, direction):
breakout_bar = bars[-1]
avg_volume = average(bars[-30:].volume)
relative_volume = breakout_bar.volume / avg_volume
// 成交量必须确认突破
if relative_volume < 1.3:
return BreakoutAssessment(
valid=False,
reason="突破时成交量不足"
)
// 收盘价必须令人信服地超越该水平
if direction == "UP":
if breakout_bar.close < level + (breakout_bar.high - breakout_bar.low) * 0.3:
return BreakoutAssessment(
valid=False,
reason="收盘价太接近突破位"
)
elif direction == "DOWN":
if breakout_bar.close > level - (breakout_bar.high - breakout_bar.low) * 0.3:
return BreakoutAssessment(
valid=False,
reason="收盘价太接近突破位"
)
// 检查跟进(后续1-3根K线)
followthrough_bars = bars[-4:-1]
ft_volume_trend = is_sustained_volume(followthrough_bars, avg_volume)
ft_price_trend = price_continues_direction(followthrough_bars, direction)
return BreakoutAssessment(
valid=True,
strength="STRONG" if relative_volume > 2.0 else "MODERATE",
follow_through=ft_volume_trend and ft_price_trend
)
"成交量是驱动市场的燃料。没有成交量,价格运动不过是建立在空气上的运动——没有支撑且容易反转。"
"价格只是在那个时刻供需平衡的反映。成交量告诉你那个平衡的强度。"
"市场就像一座冰山。价格是水面以上每个人都能看到的部分。成交量是水面以下实际决定冰山去向的巨大体量。"
"每根K线都讲述一个故事。成交量是情节。价格区间是动作。收盘是结论。你的工作是正确地解读这个故事。"
"当成交量和价格一致时,走势是真实的。当它们背离时,表面之下正在发生某些事情——而那些事情通常意味着聪明资金正在与大众相反的方向布局。"
"弹簧是市场摇晃树木以甩掉弱势持有者的方式。聪明资金需要他们的筹码,而短暂跌破支撑位是获取它们的最快方式。"
"吸筹对未经训练的眼睛是不可见的,因为价格毫无变化。但成交量讲述了故事——股票从弱势持有者系统性地、耐心地转移到强势持有者手中。"
"K线的收盘价是最重要的信息。它告诉你谁赢得了这场战斗——买方还是卖方。高位收盘意味着买方赢了。低位收盘意味着卖方赢了。中间收盘意味着战斗未决。"
"永远不要在没有成交量确认的情况下交易突破。低成交量的突破是陷阱。高成交量的突破是邀请。"
"整个技术分析中最简单也最强大的问题是:成交量是在确认价格行为,还是反常的?如果确认,顺势而为。如果反常,停下来注意——市场正在告诉你一些重要的事情。"
本规范提炼了Anna Coulling的量价分析框架,根植于威科夫传统。核心原则是成交量是唯一的领先指标——它在价格反映之前揭示了市场主导参与者的意图和行动。通过在价格区间、收盘位置和市场结构的背景下解读成交量,交易者可以区分真实走势和陷阱,在突破发生之前识别吸筹和派发,并使自己的仓位与真正推动市场的力量保持一致。