通达信大机构版MACD指标公式源码
发布日期: 2025-07-15 | 阅读量:20
{ === MACD 基础指标 === }
DIFFF:=EMA(CLOSE,12) - EMA(CLOSE,26);
DEAAA:=EMA(DIFFF,9);
MACD2:=2*(DIFFF - DEAAA);
{ === 反转信号逻辑 === }
DU0 := CROSS(DIFFF,0);
UD0 := CROSS(0,DIFFF);
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 === }
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)))) );
{ === MACD彩色柱状图 === }
STICKLINE(MACD2 >= 0, 0, MACD2, 2, 0), COLORYELLOW; { 上涨柱:黄 }
STICKLINE(MACD2 >= 0 AND MACD2 < REF(MACD2,1), 0, MACD2, 2, 1), COLORCYAN; { 下跌柱:青 }
STICKLINE(MACD2 < 0, 0, MACD2, 2, 0), COLORCYAN; { 下跌柱:青 }
STICKLINE(MACD2 < 0 AND MACD2 > REF(MACD2,1), 0, MACD2, 2, 1), COLORYELLOW; { 回升柱:黄 }
{ 零轴虚线 }
0, DOTLINE, COLORGRAY;
{ === 中值MID及均线偏离度 A1~A40 === }
MID := (7*CLOSE + LOW + OPEN + HIGH)/10;
MA0 := MA(MID,40);
A1 := MA(MID,1) - MA0;
A2 := MA(MID,2) - MA0;
A3 := MA(MID,3) - MA0;
A4 := MA(MID,4) - MA0;
A5 := MA(MID,5) - MA0;
A6 := MA(MID,6) - MA0;
A7 := MA(MID,7) - MA0;
A8 := MA(MID,8) - MA0;
A9 := MA(MID,9) - MA0;
A10 := MA(MID,10) - MA0;
A11 := MA(MID,11) - MA0;
A12 := MA(MID,12) - MA0;
A13 := MA(MID,13) - MA0;
A14 := MA(MID,14) - MA0;
A15 := MA(MID,15) - MA0;
A16 := MA(MID,16) - MA0;
A17 := MA(MID,17) - MA0;
A18 := MA(MID,18) - MA0;
A19 := MA(MID,19) - MA0;
A20 := MA(MID,20) - MA0;
A21 := MA(MID,21) - MA0;
A22 := MA(MID,22) - MA0;
A23 := MA(MID,23) - MA0;
A24 := MA(MID,24) - MA0;
A25 := MA(MID,25) - MA0;
A26 := MA(MID,26) - MA0;
A27 := MA(MID,27) - MA0;
A28 := MA(MID,28) - MA0;
A29 := MA(MID,29) - MA0;
A30 := MA(MID,30) - MA0;
A31 := MA(MID,31) - MA0;
A32 := MA(MID,32) - MA0;
A33 := MA(MID,33) - MA0;
A34 := MA(MID,34) - MA0;
A35 := MA(MID,35) - MA0;
A36 := MA(MID,36) - MA0;
A37 := MA(MID,37) - MA0;
A38 := MA(MID,38) - MA0;
A39 := MA(MID,39) - MA0;
A40 := MA(MID,40) - MA0;
{ === 均线发散与粘合 === }
LC := (A6+A7+A8+A9+A10+A11+A12+A13+A14+A15+A16+A17+A18+A19+A20)/15;
VAR1 := LC;
VAR2 := REF(LC,1);
VAR3 := VAR1 > VAR2 AND REF(LC,1) < REF(LC,2); {上升拐点}
VAR4 := VAR1 < VAR2 AND REF(LC,1) > REF(LC,2); {下降拐点}
{绘制发散与粘合}
均线发散: STICKLINE(VAR1 > VAR2, LC, REF(LC,1), 3, 0), COLORRED;
均线粘合: STICKLINE(VAR1 < VAR2, LC, REF(LC,1), 3, 0), COLORGREEN;
{ === EMA5 / EMA10 === }
EMA5: MA(VAR1,5), COLORWHITE;
EMA10: MA(VAR1,10), COLORYELLOW;
{ === 动能柱 MACDD / MARDD === }
DIFF := EMA(CLOSE,21) - EMA(CLOSE,34);
DEAA := EMA(DIFF,8);
MACDD := 8*(DIFF - DEAA);
MARDD := SMA(MACDD,2,1);
{绘制多空动能柱}
STICKLINE(MACDD > MARDD, MACDD, MARDD, 1.8, 0), COLORMAGENTA;
STICKLINE(MACDD < MARDD, MACDD, MARDD, 1.8, 0), COLORFF8000;
DIFFF:=EMA(CLOSE,12) - EMA(CLOSE,26);
DEAAA:=EMA(DIFFF,9);
MACD2:=2*(DIFFF - DEAAA);
{ === 反转信号逻辑 === }
DU0 := CROSS(DIFFF,0);
UD0 := CROSS(0,DIFFF);
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 === }
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)))) );
{ === MACD彩色柱状图 === }
STICKLINE(MACD2 >= 0, 0, MACD2, 2, 0), COLORYELLOW; { 上涨柱:黄 }
STICKLINE(MACD2 >= 0 AND MACD2 < REF(MACD2,1), 0, MACD2, 2, 1), COLORCYAN; { 下跌柱:青 }
STICKLINE(MACD2 < 0, 0, MACD2, 2, 0), COLORCYAN; { 下跌柱:青 }
STICKLINE(MACD2 < 0 AND MACD2 > REF(MACD2,1), 0, MACD2, 2, 1), COLORYELLOW; { 回升柱:黄 }
{ 零轴虚线 }
0, DOTLINE, COLORGRAY;
{ === 中值MID及均线偏离度 A1~A40 === }
MID := (7*CLOSE + LOW + OPEN + HIGH)/10;
MA0 := MA(MID,40);
A1 := MA(MID,1) - MA0;
A2 := MA(MID,2) - MA0;
A3 := MA(MID,3) - MA0;
A4 := MA(MID,4) - MA0;
A5 := MA(MID,5) - MA0;
A6 := MA(MID,6) - MA0;
A7 := MA(MID,7) - MA0;
A8 := MA(MID,8) - MA0;
A9 := MA(MID,9) - MA0;
A10 := MA(MID,10) - MA0;
A11 := MA(MID,11) - MA0;
A12 := MA(MID,12) - MA0;
A13 := MA(MID,13) - MA0;
A14 := MA(MID,14) - MA0;
A15 := MA(MID,15) - MA0;
A16 := MA(MID,16) - MA0;
A17 := MA(MID,17) - MA0;
A18 := MA(MID,18) - MA0;
A19 := MA(MID,19) - MA0;
A20 := MA(MID,20) - MA0;
A21 := MA(MID,21) - MA0;
A22 := MA(MID,22) - MA0;
A23 := MA(MID,23) - MA0;
A24 := MA(MID,24) - MA0;
A25 := MA(MID,25) - MA0;
A26 := MA(MID,26) - MA0;
A27 := MA(MID,27) - MA0;
A28 := MA(MID,28) - MA0;
A29 := MA(MID,29) - MA0;
A30 := MA(MID,30) - MA0;
A31 := MA(MID,31) - MA0;
A32 := MA(MID,32) - MA0;
A33 := MA(MID,33) - MA0;
A34 := MA(MID,34) - MA0;
A35 := MA(MID,35) - MA0;
A36 := MA(MID,36) - MA0;
A37 := MA(MID,37) - MA0;
A38 := MA(MID,38) - MA0;
A39 := MA(MID,39) - MA0;
A40 := MA(MID,40) - MA0;
{ === 均线发散与粘合 === }
LC := (A6+A7+A8+A9+A10+A11+A12+A13+A14+A15+A16+A17+A18+A19+A20)/15;
VAR1 := LC;
VAR2 := REF(LC,1);
VAR3 := VAR1 > VAR2 AND REF(LC,1) < REF(LC,2); {上升拐点}
VAR4 := VAR1 < VAR2 AND REF(LC,1) > REF(LC,2); {下降拐点}
{绘制发散与粘合}
均线发散: STICKLINE(VAR1 > VAR2, LC, REF(LC,1), 3, 0), COLORRED;
均线粘合: STICKLINE(VAR1 < VAR2, LC, REF(LC,1), 3, 0), COLORGREEN;
{ === EMA5 / EMA10 === }
EMA5: MA(VAR1,5), COLORWHITE;
EMA10: MA(VAR1,10), COLORYELLOW;
{ === 动能柱 MACDD / MARDD === }
DIFF := EMA(CLOSE,21) - EMA(CLOSE,34);
DEAA := EMA(DIFF,8);
MACDD := 8*(DIFF - DEAA);
MARDD := SMA(MACDD,2,1);
{绘制多空动能柱}
STICKLINE(MACDD > MARDD, MACDD, MARDD, 1.8, 0), COLORMAGENTA;
STICKLINE(MACDD < MARDD, MACDD, MARDD, 1.8, 0), COLORFF8000;
