通达信实战macd指标(MACD类)指标公式

核心逻辑

这是一个基于MACD指标的改进型趋势追踪系统。核心原理是: 1. **基础计算**:使用EMA(12,26)和EMA(9)的差值生成DIF线,再计算DIF的EMA得到DEA线,最后用2*(DIF-DEA)得到MACD柱状图 2. **动态区间**:通过追踪DIF上穿/下穿0轴的历史位置,构建一条动态的支撑/压力线(UDGLINE),用于判断趋势方向 3. **趋势确认**:当价格上穿UDGLINE且处于上涨趋势中(JDU0)时视为强势信号,下穿(JUD0)时视为弱势信号 4. **背离检测**:比较当前价格与MACD柱状图的位置关系,识别潜在的反转机会

买卖信号

- **卖出信号**:DRAWICON(当MACD2连续4周期高点为负值且当前值回升时,显示图标1) - 表示MACD底背离可能 - **买入信号**:DRAWICON((JUD1或JDU1条件)且MACD2>=0且突破前高,显示图标2) - 表示买入时机 - **卖出信号**:DRAWICON((JDU1或JDU1条件)且MACD2<0且跌破前低,显示图标2) - 表示卖出时机

用法

1. **适用场景**:中长线趋势交易,配合均线系统使用效果更佳 2. **注意事项**: - 图标2出现时是较强的买卖信号,但需结合成交量确认 - MACD2在0轴上方表示多头趋势,下方表示空头趋势 - 动态UDGLINE作为移动止盈止损参考 - 建议结合其他指标(如均线、成交量)综合判断,避免频繁交易

公式源码

{参数:LONG:20,100,26;SHORT:5,40,12;M:2,60,9}
DIFF:=EMA(CLOSE,SHORT)-EMA(CLOSE,LONG);
DEA:=EMA(DIFF,M);
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)))));
STICKLINE(MACD2>=0,0,MACD2,2,1),COLOR0000FF;
STICKLINE(MACD2>=0 AND MACD2<REF(MACD2,1),0,MACD2,2,0),COLOR0000FF;
STICKLINE(MACD2<0,0,MACD2,2,0),COLORFFFF00;
STICKLINE(MACD2<0 AND MACD2>REF(MACD2,1),0,MACD2,2,1),COLORFFFF00;
DIF:DIFF,LINETHICK2,COLOR0000FF;
MACD:DEA,COLORFF0000;
DEF:MACD2,LINETHICK0,COLORFFFF00;
STICKLINE(CLOSE>0,0,0,2,0),COLOR808080;
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,3);}
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,2);
DRAWICON((JDU1 OR BARSLAST(JDU1)<BARSLAST(JUD1)) AND MACD2<0 AND REF(MACD2,1)>REF(DEFD2L,1) AND MACD2<DEFD2L,MACD2,2);