1.macd算法本质 详解
首先看 最基本的一条线: price 他是收盘价连线
macd 实际上确实就是对 收盘价连线 求导数 用的方法是差离
第一步:DIF 是12天price线上点 和 26天price线上点 差离 这就一阶导了
第二步:macd 是 dif线上点 再和 dif的9天均值线上点 差离 这就二阶导了
倘若 再把macd线上点 再和 macd的n天均值线上点 差离 这就三节导了
如此下去 理论上 可以把 price连线 这样一条曲线 无限求导 正如任何一条曲线都可以无限求导一样
求导的意义不外乎计算曲线的拐点 但高阶导数 无限求下去 就是伪命题了
需要注意的是无论怎么计算 他都只涉及收盘价这一个变量
没有涉及到其他任何变量,如高,开,低,量等
把macd更进一步求导是可以的 我觉得三阶导就极限了
这方面飞狐的自带特SE指标macd实站已经玩的够了 再下去是无意义的
网上有不少macd的改版 怕新同学分不清良秀 我把搜来的原版的
飞狐macd实站改tdx版本的 放在这里了[感谢原作者]
2.另一趋势类指标adx(dmi)介绍
adx(dmi)是经典指标 a公认反映趋势比较好
为何:他是考虑高低点各种的波动 与 均价波动 之间的关系
就是说 他的内涵 含有KD的 摆动性 但是比kd多了一个趋势的位置感.
含有macd的趋势性 但多了一个高低点的观察
软件自带dmi指标 由于线条较多 用起来不太舒服
更改一下图示 其实就可以和macd一样用起来很舒服 而且定义不增不减
理想阿强老师已经做过此类尝试 有兴趣的同学可以参考 搜索
这里我发的指标是类似的
从图上看 他站上0轴比macd更早 背离比macd更早
为何?因为 macd只考虑了收盘价一个变量
而adx考虑了高低点所占的比重变化 内涵丰富
adx用法简介:
1.看位置:0线之上 相当于 macd的水上 30以上 更好.
2.其他如 金叉,死叉,背离等等 与kd,macd用法一致
DIFF:=(EMA(CLOSE,12) - EMA(CLOSE,26));
DEA:=EMA(DIFF,9);
MACD2:=(2 * (DIFF - DEA));
DU0:=CROSS(DIFF,0);
UD0:=CROSS(0,DIFF);
TDU0:=BARSLAST(DU0);
TUD0:=BARSLAST(UD0);
DU3:=REF(DU0,1);
UD3:=REF(UD0,1);
TDU3:=BARSLAST(DU3);
TUD3:=BARSLAST(UD3);
UDGLINE:=IF((TDU3 < TUD3),REF(HHV(HIGH,2),TDU3),REF(LLV(LOW,2),TUD3));
JDU0:=(((REF(CLOSE,1) <= REF(UDGLINE,1)) AND (CLOSE > UDGLINE)) AND (TDU0 < TUD0));
JUD0:=(((REF(CLOSE,1) >= REF(UDGLINE,1)) AND (CLOSE < UDGLINE)) AND (TUD0 < TDU0));
JDU1:=(JDU0 AND (COUNT(JDU0,TDU0) = 1));
JUD1:=(JUD0 AND (COUNT(JUD0,TUD0) = 1));
JDU2:=(JDU1 AND (REF(BARSLAST(JUD1),1) < REF(BARSLAST(JDU1),1)));
JUD2:=(JUD1 AND (REF(BARSLAST(JUD1),1) > REF(BARSLAST(JDU1),1)));
JDU3:=(JDU1 AND (REF(BARSLAST(JUD1),1) > REF(BARSLAST(JDU1),1)));
JUD3:=(JUD1 AND (REF(BARSLAST(JUD1),1) < REF(BARSLAST(JDU1),1)));
BSLINE:=IF((BARSLAST(JDU2) < BARSLAST(JUD2)),IF(REF(CROSS(0,MACD2),1),LLV(LOW,2),REF(LLV(LOW,2),BARSLAST(REF(CROSS(0,MACD2),1)))),IF(REF(CROSS(MACD2,0),1),HHV(HIGH,2),REF(HHV(HIGH,2),BARSLAST(REF(CROSS(MACD2,0),1)))));
DRAWICON((JDU1 OR (BARSLAST(JDU1) < BARSLAST(JUD1))),0, 0) ;
DRAWICON((JUD1 OR (BARSLAST(JDU1) > BARSLAST(JUD1))),0,0) ;
STICKLINE((MACD2 >= 0),0,MACD2,2,1),COLORRED ;
STICKLINE(((MACD2 >= 0) AND (MACD2 < REF(MACD2,1))),0,MACD2,2,0),COLORRED;
STICKLINE((MACD2 < 0),0,MACD2,2,0),COLORFFFF00;
STICKLINE(((MACD2 < 0) AND (MACD2 > REF(MACD2,1))),0,MACD2,2,1),COLORFFFF00;
DIF:DIFF,LINETHICK2,COLORYELLOW ;
DEF:DEA ,COLORLIMAGENTA ;
MACD:MACD2,LINETHICK0,COLORFFFF00 ;
STICKLINE((CLOSE > 0),0,0,0 ,0) ;
DEFUT:=BARSLAST(CROSS(MACD2,0));
DEFDT:=BARSLAST(CROSS(0,MACD2));
DEFUL:=IF((MACD2 >= 0),HHV(MACD2,(DEFUT + 1)),REF(HHV(MACD2,(DEFUT + 1)),(DEFDT + 1)));
DEFDL:=IF((MACD2 < 0),LLV(MACD2,(DEFDT + 1)),REF(LLV(MACD2,(DEFDT + 1)),(DEFUT + 1)));
DEFU2L:=REF(DEFUL,(DEFUT + 1));
DEFD2L:=REF(DEFDL,(DEFDT + 1));
DRAWICON(((((LLV(MACD2,4) > 0) AND (MACD2 < REF(MACD2,1))) AND (REF(MACD2,1) > REF(MACD2,2))) AND (REF(MACD2,2) > REF(MACD2,3))),MACD2,2) ;
DRAWICON(((((HHV(MACD2,4) < 0) AND (MACD2 > REF(MACD2,1))) AND (REF(MACD2,1) < REF(MACD2,2))) AND (REF(MACD2,2) < REF(MACD2,3))),MACD2,1);
DRAWICON(((((JUD1 OR (BARSLAST(JDU1) > BARSLAST(JUD1))) AND (MACD2 >= 0)) AND (REF(MACD2,1) < REF(DEFU2L,1))) AND (MACD2 > DEFU2L)),MACD2,12) ;
DRAWICON(((((JDU1 OR (BARSLAST(JDU1) < BARSLAST(JUD1))) AND (MACD2 < 0)) AND (REF(MACD2,1) > REF(DEFD2L,1))) AND (MACD2 < DEFD2L)),MACD2,12);
|