通达信主升浪DMIR指标副图、源码
DMI指标是趋势指标,信号稳定,对捕捉主升浪有独特作用。但DMI指标有一个很大的弱点——ADX线缺乏方向,导致与ADXR的组合无论在盘整,还是主升、主跌都不好判断方向。产生原因是ADX设计中用了绝对值函数,将PDI、MDI两线差值正数化了,差值如果是负数,ADX显示的是对应正数,ADX、ADXR是扭曲的差值。
牛牛指标网提供:www.tdx001.com}
通达信DMI指标源码:
MTR:=EXPMEMA(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:=EXPMEMA(IF(HD>0 && HD>LD,HD,0),N);
DMM:=EXPMEMA(IF(LD>0 && LD>HD,LD,0),N);
PDI: DMP*100/MTR;
MDI: DMM*100/MTR;
ADX: EXPMEMA(ABS(MDI-PDI)/(MDI+PDI)*100,M);
ADXR:EXPMEMA(ADX,M);
N默认为14,M默认为6。
ADX线缺乏方向性原因是这句公式——ADX: EXPMEMA(ABS(MDI-PDI)/(MDI+PDI)*100,M),这里用了ABS函数。弄明白这个道理后,我将之修改为: EMA(PDI-MDI)/(MDI+PDI)*100,M)。修改的关键差别是原来的ABS(MDI-PDI)改为PDI-MDI了,转换后即为EMA((DMP-DMM)/(DMP+DMM)*100,M)。用彩带表示ADX与ADXR,便于与PDI、MDI醒目区分;新设计ADX与ADXR的乖离线AAJ,相当于KDJ指标中的J线作用;增加ADX-ADXR的差值MAAD。
改进后源码如下:
TRR:=EMA(MAX(MAX(H-L,ABS(H-REF(C,1))),ABS(REF(C,1)-L)),N);
HD:=H-REF(H,1);
LD:=REF(L,1)-L;
DMP:=EMA(IF(HD>0 && HD>LD,HD,0),N);
DMM:=EMA(IF(LD>0 && LD>HD,LD,0),N);
ADX0:=EMA((DMP-DMM)/(DMP+DMM)*100,M);
ADXR0:=EMA(ADX0,M);
DRAWBAND(ADX0,RGB(155,10,10),ADXR0,RGB(0,155,0));
PDI:DMP/TRR*100,COLORWHITE;
MDI:DMM/TRR*100,COLORYELLOW;
ADX:ADX0,NODRAW,COLORMAGENTA;
ADXR:ADXR0,NODRAW,COLORGREEN;
AAJ:(3*ADX-2*ADXR),COLORMAGENTA;
MAAD:ADX-ADXR,COLORLIMAGENTA,COLORSTICK;
STICKLINE(MAAD>=REF(MAAD,1) && MAAD<=0,0,MAAD,1,0),COLORCYAN;
STICKLINE(MAAD>=REF(MAAD,1) && MAAD>0,0,MAAD,1,0),COLORLIMAGENTA;
PDIL:=IF(PDI<=11,PDI,DRAWNULL);{超跌}
MDIL:=IF(MDI<=11,MDI,DRAWNULL);{超涨}
AAJT:=IF(PDI<REF(PDI,1) && AAJ>REF(AAJ,1) && MAAD>0,AAJ,DRAWNULL);{明日可能回调}
DRAWBAND(PDIL,RGB(150,150,0),PDIL,RGB(150,150,0)),POINTDOT,LINETHICK4,COLORWHITE;
DRAWBAND(MDIL,RGB(150,150,0),MDIL,RGB(150,150,0)),POINTDOT,LINETHICK4,COLORYELLOW;
DRAWBAND(AAJT,RGB(150,150,0),AAJT,RGB(150,150,0)),POINTDOT,LINETHICK4,COLORGREEN;
N默认为14,M默认为6。
下图为上证指数近期日线截图,附图上为传统DMI指标,下为改进后的DMIR指标。
|