基于凌波,《振荡指标MACD升级版》
凌波是中国技术分析作者,以实用、系统化的A股交易方法闻名。《振荡指标MACD升级版》提供了对移动平均收敛发散指标的全面处理,远超"MACD上穿信号线买入、下穿卖出"的标准教科书描述。
本书将MACD不是作为独立的信号生成器,而是作为阅读价格动量结构的工具。凌波的关键贡献是将MACD分析系统化为一个层次结构:零轴位置定义趋势,柱状图形态定义动量,信号线交叉定义时机——每一层都由上一层过滤。
凌波认为MACD特别适合A股交易,因为:
| 维度 | 组件 | 揭示什么 |
|---|---|---|
| 趋势 | MACD线相对于零轴的位置 | 整体趋势方向和强度 |
| 动量 | 柱状图(高度和变化方向) | 趋势强度的变化率 |
| 时机 | 信号线交叉 | 趋势内的入场和出场点 |
MACD指标由三个从指数移动平均线(EMA)导出的组件组成:
凌波指出标准参数(12, 26, 9)在A股日线图上效果良好。他警告不要过度参数优化,这会导致曲线拟合而非真正的改进。
伪代码:EMA计算
──────────────────────────────
函数 EMA(prices, period):
multiplier = 2 / (period + 1)
ema = prices[0] // 用第一个价格初始化
对于 i 从 1 到 len(prices):
ema = (prices[i] - ema) * multiplier + ema
返回 ema
虽然默认(12, 26, 9)推荐用于大多数目的,凌波讨论了具体调整:
根据凌波,柱状图是MACD最有信息的组件。它代表MACD线和信号线之间的距离,其行为揭示了价格确认之前的动量转移:
柱状图上升(柱变高): 动量在趋势方向上加速。无论在零轴上方还是下方,更高的柱意味着趋势正在加强。
柱状图下降(柱变短): 动量正在减弱。趋势可能继续,但其力量正在衰退。这是最早的潜在反转警告。
柱状图穿越零轴: MACD线已经穿越信号线——这是实际的交叉信号。但通过提前阅读柱状图收缩,交易者已经做好准备。
在中国交易软件中,柱状图通常显示为:
凌波引入了柱状图"山峰"(形成驼峰的连续红柱)和"山谷"(形成谷底的连续绿柱)的概念:
零轴是MACD分析中最重要的参考点。当MACD线(DIF)在零轴上方时,12期EMA在26期EMA上方,表明上升趋势。在零轴下方表明下降趋势。
看涨零轴交叉: DIF从下方穿越零轴。这确认从下降趋势到上升趋势的转变。凌波认为这是最高质量的MACD信号之一,因为它确认了真正的趋势变化而非仅仅是回调反弹。
看跌零轴交叉: DIF从上方穿越零轴。确认从上升趋势到下降趋势的转变。当这发生在长期上升趋势之后,是退出多头仓位的强烈警告。
看涨拒绝: DIF在上升趋势中向零轴回落但不穿越,然后重新上升。这表明上升趋势完整,回调是买入机会。
看跌拒绝: DIF在下降趋势中向零轴反弹但不穿越,然后重新下降。下降趋势完整;反弹应该卖出。
伪代码:零轴分析
──────────────────────────────
函数 analyze_zero_line(dif_series):
当前 = dif_series[-1]
前一个 = dif_series[-2]
趋势 = "看涨" 如果 当前 > 0 否则 "看跌"
// 零轴交叉
如果 前一个 < 0 且 当前 > 0:
返回 "看涨交叉 — 趋势转上"
如果 前一个 > 0 且 当前 < 0:
返回 "看跌交叉 — 趋势转下"
// 零轴拒绝(看涨)
如果 趋势 == "看涨":
近期低点 = 最小值(dif_series[-10:])
如果 近期低点 > -0.05 * ABS(最大值(dif_series[-30:])):
如果 当前 > 前一个:
返回 "看涨拒绝 — 上升趋势中的回调,买入机会"
// 零轴拒绝(看跌)
如果 趋势 == "看跌":
近期高点 = 最大值(dif_series[-10:])
如果 近期高点 < 0.05 * ABS(最小值(dif_series[-30:])):
如果 当前 < 前一个:
返回 "看跌拒绝 — 下降趋势中的反弹,卖出机会"
返回 "中性"
凌波认为背离是MACD产生的最可靠和最有利可图的信号。背离发生在价格创出新极端但MACD未确认时,表明动量未能支持价格移动。
价格创出更低的低点但MACD(DIF或柱状图)创出更高的低点。这信号卖压正在减弱,反转可能即将发生。
高质量看涨背离的条件:
价格创出更高的高点但MACD创出更低的低点。买压尽管价格更高正在减弱。
高质量看跌背离的条件:
当背离连续发生三次时(价格创出三个更高的高点但MACD创出三个更低的低点,反之亦然),信号极强。凌波认为三重背离是技术分析中最可靠的反转信号之一。
隐藏看涨背离: 在上升趋势中,价格创出更高的低点但MACD创出更低的低点。这信号趋势继续——回调是买入上升趋势的机会。
隐藏看跌背离: 在下降趋势中,价格创出更低的高点但MACD创出更高的高点。趋势继续下行——反弹应该卖出。
金叉: DIF上穿DEA。看涨信号。质量取决于相对于零轴的位置。
死叉: DIF下穿DEA。看跌信号。质量取决于相对于零轴的位置。
凌波按质量对交叉信号进行排名:
| 交叉类型 | 位置 | 质量 | 行动 |
|---|---|---|---|
| 金叉 | 零轴上方 | 最高 | 强烈买入 — 趋势延续 |
| 金叉 | 零轴附近(向上穿越) | 高 | 买入 — 新趋势开始 |
| 金叉 | 零轴下方远处 | 中等 | 可能底部,但趋势仍向下 |
| 死叉 | 零轴下方 | 最高 | 强烈卖出 — 趋势继续向下 |
| 死叉 | 零轴附近(向下穿越) | 高 | 卖出 — 趋势转下 |
| 死叉 | 零轴上方远处 | 中等 | 反弹警告,趋势可能仍向上 |
一种特殊形态,DIF和DEA几乎触点(或短暂触碰)但未完成完整交叉,然后再次在原始方向上分离。这种"亲吻"形态是强烈的延续信号:趋势 tested 但 held。
凌波的多时间周期方法使用三个层次:
关键规则:永远不要逆着更高时间周期的MACD趋势交易。
伪代码:多时间周期MACD决策
────────────────────────────────────────────
周线MACD = calculate_macd(周线价格)
日线MACD = calculate_macd(日线价格)
小时MACD = calculate_macd(小时价格)
// 从周线确定趋势
如果 周线MACD.dif > 0 且 周线MACD.柱状图 > 前期柱状图:
周线趋势 = "强劲上升"
否则如果 周线MACD.dif > 0:
周线趋势 = "上升"
否则如果 周线MACD.dif < 0 且 周线MACD.柱状图 < 前期柱状图:
周线趋势 = "强劲下降"
否则:
周线趋势 = "下降"
// 只在周线上升或强劲上升时做多
如果 周线趋势 在 ["上升", "强劲上升"]:
如果 日线MACD.金叉() 或 日线MACD.看涨背离():
如果 小时MACD.柱状图转上():
信号 = "买入"
置信度 = "高" 如果 周线趋势 == "强劲上升" 否则 "中"
// 只在周线下降或强劲下降时做空/卖出
如果 周线趋势 在 ["下降", "强劲下降"]:
如果 日线MACD.死叉() 或 日线MACD.看跌背离():
信号 = "卖出 / 回避"
当时间周期冲突时(例如,周线看涨但日线看跌),凌波建议:
MACD信号在成交量确认时显著更可靠:
成交量和MACD之间存在另一种形式的背离:
凌波建议使用移动平均线(通常20日和60日)作为支撑/阻力水平,然后使用MACD来把握入场时机:
当短期均线在长期均线上方(看涨对齐)且MACD在零轴上方且柱状图上升,代表最大趋势强度。凌波称之为"三重确认"状态——均线对齐、MACD趋势和MACD动量全部一致。
KDJ提供MACD缺乏的超买/超卖读数:
RSI提供动量极端:
布林带提供波动率背景:
凌波观察到MACD在不同A股市场板块表现不同:
A股有显著的竞价效应。凌波警告小于30分钟的时间框架上的日内MACD可能被开盘和收盘竞价机制扭曲。使用60分钟或更长用于日内MACD。
当股票达到每日价格限制(涨停/跌停)时,应谨慎解读MACD信号:
在A股,突然的政策公告可能导致缺口移动,使MACD信号失效。凌波建议将任何超过3%的缺口视为"重置事件",需要从头重新分析MACD结构。
MACD在横向、无趋势的市场中表现不佳。DIF和DEA在零轴附近反复交叉,产生买入和卖出信号,两者都失败。凌波的解决方案:当柱状图柱非常小且快速交替时,置身事外。
MACD本质上是滞后指标。它在趋势变化已经开始后才确认,而非之前。背离提供了一些领先质量,但即使背离也需要第二峰值或谷底形成后才能被识别。
并非所有明显的背离都会导致反转。在非常强劲的趋势中,MACD可以显示多个背离而价格继续趋势方向。凌波称这些为"背离陷阱",建议使用成交量和价格结构(而不仅仅是MACD)来确认背离信号。
凌波建议在交叉之间的最小时间过滤:如果金叉后在3根K线内出现死叉,将两者都视为噪音而非真实信号。质量交叉通常持续至少5-8根K线。
发生在零轴下方的金叉。这是一个具有中等可靠性的抄底信号。它表明下降动量正在放缓,但整体趋势仍是下降的。仅作为初步信号使用——等待零轴交叉以获得完全确认。
在零轴上方金叉后,DIF回落到DEA(或略低)然后再次向上交叉。零轴上方的第二次金叉是凌波最高置信度的买入信号:上升趋势已经确立,回调很小,动量正在恢复。
当柱状图形成两个相似高度的山峰,中间有接近零轴(但不穿越)的回调分隔,这创造了视觉上的"翅膀"形态。这表明强劲、持续的动量,暗示趋势将延续。
DIF在上升趋势回调期间短暂触碰或略穿透零轴,然后强劲弹回零轴上方。就像蹦床效应,短暂的零轴触碰为下一波上涨提供"弹力"。
伪代码:A股完整MACD交易系统
─────────────────────────────────────────────────────
函数 MACD_Trading_System(stock):
// 计算多时间周期的MACD
周线 = calculate_macd(stock.周线价格, 12, 26, 9)
日线 = calculate_macd(stock.日线价格, 12, 26, 9)
// 步骤1:从周线确定主要趋势
如果 周线.dif > 0:
主要趋势 = "看涨"
否则如果 周线.dif < 0 且 周线.dif > 周线.dif_prev:
主要趋势 = "恢复中"
否则:
主要趋势 = "看跌"
// 步骤2:检查日线背离
日线背离 = check_divergence(日线)
// 步骤3:生成信号
信号 = []
// 高质量买入信号
如果 主要趋势 == "看涨":
如果 日线.金叉 且 日线.dif > 0:
信号.添加(("买入", "A级:周线上升趋势中的零轴上方金叉"))
否则如果 日线.金叉 且 日线.dif > -0.1:
信号.添加(("买入", "B级:周线上升趋势中的零轴附近金叉"))
否则如果 日线.零轴看涨拒绝:
信号.添加(("买入", "B级:零轴拒绝"))
如果 日线背离 == "看涨" 且 主要趋势 != "看跌":
信号.添加(("买入", "B级:看涨背离"))
// 高质量卖出信号
如果 主要趋势 == "看跌":
如果 日线.死叉 且 日线.dif < 0:
信号.添加(("卖出", "A级:周线下降趋势中的零轴下方死叉"))
如果 日线背离 == "看跌":
信号.添加(("卖出", "A级:看跌背离"))
如果 日线.死叉 且 日线.dif > 0 且 周线.柱状图萎缩:
信号.添加(("卖出", "B级:早期警告,周线动量衰减"))
// 步骤4:成交量确认
对于 信号 中的每个:
如果 信号.类型 == "买入" 且 成交量放大():
信号.置信度 += 1
否则如果 信号.类型 == "买入" 且 成交量萎缩():
信号.置信度 -= 1
返回 信号
函数 check_divergence(macd_data):
// 找到近期价格高/低和对应的MACD值
价格高点 = find_peaks(prices, lookback=60)
macd高点 = find_peaks(macd_data.dif, lookback=60)
如果 len(价格高点) >= 2:
如果 价格高点[-1] > 价格高点[-2] 且 macd高点[-1] < macd高点[-2]:
返回 "看跌"
价格低点 = find_troughs(prices, lookback=60)
macd低点 = find_troughs(macd_data.dif, lookback=60)
如果 len(价格低点) >= 2:
如果 价格低点[-1] < 价格低点[-2] 且 macd低点[-1] > macd低点[-2]:
返回 "看涨"
返回 "无"
"MACD不是信号机器——它是一种动量语言。学会阅读它,市场就会对你说话。"
"零轴是MACD世界的赤道。在它上方,牛市控制。在它下方,熊市主导。最重要的决策发生在交叉时。"
"背离是市场在低语趋势在说谎。在它变成尖叫之前聆听低语。"
"零轴上方的金叉值得在零轴下方三个金叉。趋势中的位置比交叉本身更重要。"
"柱状图告诉你现在正在发生什么。DIF和DEA告诉你发生了什么。只有背离暗示接下来会发生什么。"
"在盘整市场中,MACD会伤害你。MACD交易者的第一个技能是识别何时不交易。"
"多时间周期对齐不是可选的——它是基础。逆着周线下降趋势交易日线金叉是在逆流而上。"
"成交量是任何MACD信号的真相血清。没有成交量的交叉是没有承诺的承诺。"