有人问我 ADX、+DI、-DI 三条线到底在干嘛,我拿这篇 14 行源码讲一遍

昨天有人在评论区问 ADX 是什么,正好今天这个 020 就是标准 DMI,借它讲一遍。

先算波幅。MTR是 14 天的真实波幅之和 —— 每天取这三个里最大的:当日最高减最低当日最高减昨收昨收减当日最低,加起来。这是分母。

再算方向。HD是今天最高减昨天最高(创新高的幅度),LD是昨天最低减今天最低(创新低的幅度)。DMP把 14 天里 "HD>0 且 HD>LD" 的部分加起来 —— 只有当天确实创出更高的高点才算;DMM对称地加下跌动量。

PDI=DMP×100/MTR,这是 + DI,代表上涨方向占波幅的百分比。MDI=DMM×100/MTR,这是 - DI,代表下跌方向占波幅。

ADX=MA(|MDI-PDI|/(MDI+PDI)×100, 6)。注意 ADX 不算方向 —— 它只看 + DI 和 - DI 差多远,差得越远 ADX 越高,说明趋势越强。ADX 上升不管是涨还是跌。

最后XG:CROSS(ADX,MDI) AND PDI>REF(PDI,1)

  • ADX 上穿 MDI—— 趋势强度线从下跌动量线下方穿上来

  • PDI 比昨天高—— 上涨方向在抬头

源码直接复制,日线使用:

N:=14;
M:=6;
MTR:=SUM(MAX(MAX(HIGH-LOW,ABS(HIGH-REF(CLOSE,1))),ABS(REF(CLOSE,1)-LOW)),N);
HD:=HIGH-REF(HIGH,1);
LD:=REF(LOW,1)-LOW;
DMP:=SUM(IF(HD>0 AND HD>LD,HD,0),N);
DMM:=SUM(IF(LD>0 AND LD>HD,LD,0),N);
PDI:=DMP*100/MTR;
MDI:=DMM*100/MTR;
ADX:=MA(ABS(MDI-PDI)/(MDI+PDI)*100,M);
XG:CROSS(ADX,MDI) AND PDI>REF(PDI,1);

说个容易踩的坑:ADX 不指方向。它从低位爬上来,可能是上涨趋势,也可能是下跌趋势 —— 只是趋势在变强。这公式用ADX 上穿 MDI(-DI)+DI 在抬头来过滤方向,逻辑上是对的。但名字叫 "超跌企稳反弹",源码里没有任何超跌判断—— 没看 RSI、没看距均线多远、没看跌了多少。它只是个 "趋势刚开始转强" 的信号,至于之前跌没跌透,公式不知道。

指标仅为技术交流,不构成投资建议。市场有风险,入市需谨慎。

扩展阅读:https://mp.weixin.qq.com/s/ulNhpk6vZjTSPhlKyY4UiA



相关阅读

最近发表
在线客服
QQ:332879389
联系电话
13605084160