副图上同时挂着两条线,一条绕着某个水平位上下摆动,另一条在零轴两侧来回穿。看久了会有一个疑问:MACD和KDJ怎么看,它们到底在描述什么。答案是两者描述的不是同一件事——一条描述两条均线之间的距离变化,另一条描述当前价在最近一段区间中的位置。
下面按两者的构成拆开写,给出可对照的算式、参数口径、三处常见误读与读数边界。文中函数写法以通达信 PC 版的公式系统为准,不同版本与券商定制版在默认参数上存在差异,请以你所用客户端帮助文档为准。
一、两个指标回答的不是同一个问题
把两个指标放在一起看之前,先分清它们各自关心的量。MACD 关心的是趋势的加速与减速,它的输入是两条不同周期的指数平均线;KDJ 关心的是当前价在窗口高低区间中的相对位置,它的输入是最高价与最低价序列。
| 比较项 | MACD | KDJ |
|---|---|---|
| 输入序列 | 收盘价的两条指数平均 | 最高价、最低价、收盘价 |
| 输出形态 | 差值、差值的平均、柱状差 | 三个在固定区间附近摆动的值 |
| 典型取值范围 | 以零轴为中心,无固定上下界 | 取值多在 0 到 100 之间,J 值可以越界 |
| 时间尺度 | 偏中期,反应偏慢 | 偏短期,反应偏快 |
第三行有一个实用含义:MACD 的数值没有固定上下界,所以它不适合用「超过多少算高」这类固定阈值去读;KDJ 的数值有相对稳定的区间,所以它可以按区间分段来读。把两者的读数方式互换,得到的判断多半站不住。
MACD和KDJ怎么看,从两者的输入就能看出分界:一个只吃收盘价,另一个还要吃最高价与最低价。只吃收盘价的序列对盘中波动不敏感,所以 MACD 的曲线更平滑;同时使用最高与最低价的序列对波动更敏感,所以 KDJ 的曲线摆动更频繁。曲线的形状差异来自输入,不是参数没调好。
二、MACD 由三层构成
MACD 的三层结构可以在一段算式里完整写出来,写成变量之后再逐层对照,比直接调用内置函数更容易理解。
{ MACD:两条指数平均线的差,以及差的移动平均 }
快线:=EMA(CLOSE,12);
慢线:=EMA(CLOSE,26);
差离值:=快线-慢线;
信号线:=EMA(差离值,9);
柱值:=2*(差离值-信号线);
第一层是两条指数平均线的差,它衡量快慢线之间的距离。第二层是把这个差值再做一次指数平均,得到一条更平滑的信号线。第三层是差值与信号线之差的倍数,画成柱状,用来放大两者的距离变化。
三层里变化幅度最大的是柱值,最小的是慢线。看交叉时看的是一二层之间的关系,看动能变化时看的是柱值的长度与方向。这两类读法常常被混在一起,导致同一张图上得出互相矛盾的印象。
三、KDJ 描述的是位置
KDJ 的核心是 RSV,也就是当前收盘价在窗口高低区间中的相对位置。把 RSV 再做两次平滑,得到 K 与 D,J 是两者的加权差。这一段算式同样可以自己写出来。
{ KDJ:当前价在窗口区间中的相对位置 }
窗口高:=HHV(HIGH,9);
窗口低:=LLV(LOW,9);
区间宽:=MAX(窗口高-窗口低,0.0001);
原始值:=(CLOSE-窗口低)/区间宽*100;
K值:=SMA(原始值,3,1);
D值:=SMA(K值,3,1);
J值:=3*K值-2*D值;
算式里给区间宽度加了 MAX 下限。窗口内最高价与最低价相等时,宽度为零,直接相除会得到无效值。这个情形在连续横盘到极致、或者窗口内只有一根数据时都会出现。
J 值取 3K 减 2D,当 K 与 D 差距较大时,J 会超出 0 到 100 的范围。这不是错误,而是这个加权公式带来的结果。用它做判断时把越界当作正常取值,不要当成数据异常。
四、参数口径与常见取值
MACD 的常见参数组合是 12、26、9,分别对应快线周期、慢线周期、信号线周期。KDJ 的常见参数组合是 9、3、3,分别对应 RSV 的窗口长度与两级平滑的权重。
- 把 MACD 的周期整体调小,得到的曲线更贴近价格,交叉次数增加,同时噪声也增加。
- 把 KDJ 的窗口长度调大,RSV 的变化范围被拉宽,钝化出现的位置更靠两端。
- 改参数会改变同一段走势上的读数,两段参数不同的曲线不可以直接对照高低。
参数调整之后建议做一次对照记录:把同一段区间分别用两组参数各跑一遍,把两条曲线的差异记下来。记到第三组参数时,就能看出哪一处差异来自参数、哪一处来自区间本身的形态。
五、三处常见误读
第一处是把交叉当作同步信号。两条线发生交叉时,描述的是之前一段时间内距离的变化方向,这个变化在交叉出现之前就已经发生。交叉标记的是变化的结果,不是变化的开始。理解这一点,就不会因为「等到交叉已经走了一段」而怀疑参数写错了。
第二处是忽视钝化。KDJ 在连续同向走势中会长时间贴着一端运行,K 与 D 之间的距离被压得很小,摆动特性暂时消失。此时按区间分段去读,得到的信息量很少,需要换一个尺度去看,例如把窗口长度调大,或者改看更长周期上的同一指标。
第三处是跨周期对照不一致。同一段行情在日线与周线上的读数不同,两个周期的曲线不能直接比高低。要让两者可比,需要把周期口径说清楚,或者只在同一周期内部做前后对照。把日线读数与周线读数并排讨论,说明的对象其实是两个不同长度的窗口,讨论到最后很难收敛。
六、读数边界
MACD和KDJ怎么看,最终落在一句区分上:MACD 读的是距离的变化,KDJ 读的是位置的高低。两者的输入不同、速度不同、取值范围不同,把它们的读数分别解释清楚,再谈组合使用才有意义。
还有一层需要说明:两个指标都只用价格序列,不含成交量信息。量能变化在它们的读数里没有体现,把两者当作完整描述会遗漏这一维。需要量能维度时,要另外挂一个量类指标一起看。把 MACD 与 KDJ 并排放在同一个副图上时,两者的坐标范围不同,纵轴刻度会按其中一条自动适配,另一条看上去被压扁,这属于显示设置而非读数变化。公式的语法与函数基础,见 通达信公式编写教程 一栏;副图指标的挂载与显示设置,见 主图与副图指标 一栏。
文中公式、参数与通项写法按通达信 PC 版公式系统的常见形态描述;不同版本与券商定制版在默认参数、平滑方式与取值边界上存在差异,具体请以你所用客户端帮助文档为准。本文只讨论指标计算机制与读数口径,不构成任何投资建议。
