技术分析 · 第 8 节

MACD 的三个陷阱

技术分析 · 第 8 页。上一节讲它怎么算,这一节讲它怎么让人亏钱。

一句话速览 三个陷阱都会真金白银地伤人。最贵的那个是震荡市:本节实测 42 个交易日里价格几乎没动,MACD 做了 4 笔亏掉 10.75%,而手续费只占其中 0.92 个百分点。
这节课要你带走的 三个陷阱各自的成因和量化代价, 以及一个能挡住其中两个的过滤条件。
1

震荡市反复金叉死叉

上一节 那段行情的中段单独拿出来。这 42 个交易日里,价格在 11.37 到 12.53 之间来回,起点 12.30,终点 12.42,整段只涨了 0.98%。

同一段时间里,MACD(12, 26, 9) 交叉了 7 次,完成 4 笔交易:

第几笔毛收益扣 0.25% 成本后
第 1 笔−3.24%−3.49%
第 2 笔−4.26%−4.51%
第 3 笔−3.92%−4.17%
第 4 笔+1.31%+1.06%
合计−9.82%−10.75%
注意成本只占 0.92 个百分点。 也就是说,就算完全免手续费,这段还是要亏 9.82%。

亏损的真正来源是信号本身的时机:金叉出现时反弹已经走完大半, 死叉出现时回落也已经走完大半。每一笔都是买在相对高点、卖在相对低点。

这一点值得说透。很多人以为震荡市的问题是「手续费磨损」,但真正的问题是滞后指标在无趋势环境里会系统性地追反了方向。上一节算过,MACD 是二阶滞后的:它需要价格朝一个方向走一段才发信号,而震荡市的定义就是价格朝任何方向都走不了多远

所以这不是 MACD 没调好,是把趋势跟随工具用在了没有趋势的环境里

2

参数拟合:调参数救不了

遇到上面这种结果,多数人的第一反应是调参数。那就调给你看。

在这同一段震荡行情里,把快线周期从 5 试到 15、慢线从快线 +5 试到 35、DEA 从 5 试到 12,一共 1848 组参数,全部跑一遍

试过的参数组合1,848 组
其中表现最好的一组MACD(8, 19, 12)
它在这段行情里的收益−5.39%

1848 组参数里,最好的那一组也是亏的。

这个结果比「调不出好参数」更有信息量:它说明问题不在参数,在于这段行情根本不适合这类策略。而调参数这个动作,会让你误以为问题出在参数上,从而在错误的方向上花掉大量时间。

更麻烦的是下一步。假设这段行情里确实有一组参数是赚钱的,你把它选出来用到后面的行情上会怎样?我把 MACD(8, 19, 12) 拿到样本外那段(后 33 个交易日)跑了一次:

参数样本内样本外
MACD(8, 19, 12) 优化出来的−5.39%−8.05%
MACD(12, 26, 9) 默认的−10.75%0.00%(未触发交易)

优化出来的参数,在样本外比默认参数还差。这正是 过拟合那一节 讲的事情:样本内的优势来自噪音的偶然排列,换一段数据就消失了,甚至反向。

3

背离的主观性

「顶背离」指价格创新高但 MACD 没有创新高。听起来是个客观判据,但它有三个地方要你自己定:

  1. 拿哪两个高点比?相邻两个波峰,还是隔了几个波峰的两个? 换一组高点,背离可能就不存在了。这跟 趋势线选点 是同一类问题。
  2. 比 DIF 还是比柱状图?两者经常给出不同结论。
  3. 「没创新高」差多少算数?差 0.001 算不算?没有标准。

三个自由度叠在一起,结果是:一段行情里,你几乎总能找到某种「背离」。而找到之后,确认偏误 会让你觉得它很明显。

还有一个更硬的问题:背离可以持续很久。顶背离出现之后继续涨三个月是常态,这一点在 指标背离 那一节用专门篇幅讲,因为它是这一篇里最容易造成实际亏损的概念。

调参数救不了工具用错场景,只会让你在错的方向上更努力。

一个能挡住前两个陷阱的过滤条件

既然问题是「趋势工具用在无趋势环境」,那解法就是先判断有没有趋势,再决定用不用它

一个可判定的做法:只在价格位于某条长期均线(比如 60 日)上方时,才接受 MACD 的金叉。其余时间一律不做。

这不能提高信号质量,它做的是减少你参与的次数,也就是把上面那种「42 天做 4 笔全亏」的场景直接跳过。按 成本侵蚀 那一节的结论,减少交易频率本身就是最有效的改善手段之一。

代价也要说清楚:这个过滤会让你错过部分底部反转的行情,因为那时价格通常还在长期均线下方。这是取舍,不是免费的改进。

怎么用 MACD 才算合理

  1. 当趋势状态的描述用,不当信号用。DIF 在零轴上方且 DEA 也在上方, 说明目前是多头结构。这是对现状的概括,不是对未来的预测。
  2. 柱状图看加速度,不看方向。柱子缩短是「涨得慢了」,不是「要跌了」, 见 上一节
  3. 参数就用默认的,不要优化。既然优化出来的参数样本外更差, 那就没有优化的意义。用默认参数至少不会让你产生「我找到了什么」的错觉。

今天就做这一件事

打开一只你熟悉的票的日线,找一段横盘震荡的时期,至少一个月。

数一下那段时间里 MACD 交叉了几次。

然后按每次交叉都操作来算一遍:买在金叉当日收盘,卖在死叉当日收盘。

把结果跟「那段时间什么都不做」比一比。这个对比大多数人从来没算过, 而它就是「震荡市不做交易」这条老话的全部依据。

带走这一条:震荡市的亏损主要来自信号时机而不是手续费(实测 10.75% 里成本只占 0.92)。 调参数救不了场景错配:1848 组里最优的也亏 5.39%,且样本外更差。 解法是加趋势过滤条件减少参与次数,而不是优化参数。