我修改的版本只能用于日线或以上,
因为文字的坐标固定,
用于分钟周期的时候就有缺陷,
在分钟周期柱线会被压扁,
希望有大神能帮忙修改
文件包含我修改的和原始的代码
上图是我改的,下图是原来的
说明:DIF线红色是多头,紫色是空头,黄色是转变信号;
macd柱线的空心柱是多头,实心柱是空头。
源码:
{我修改的macd}
{大机构MACD的柱线}
DIF:EMA(CLOSE,12)-EMA(CLOSE,26);
DEA:EMA(DIF,9);
MACD2:=2*(DIF-DEA);
(CLOSE<0 AND CROSS(DIF,0),H*1.3),COLOR000080,NODRAW;
(CLOSE<0 AND CROSS(MACD2,0),H*1.3),COLOR000080,NODRAW;
(CLOSE<0 AND CROSS(0,DIF),H*1.3),COLOR808080,NODRAW;
(CLOSE<0 AND CROSS(0,MACD2),H*1.3),COLOR808080,NODRAW;
DU0:=CROSS(DIF,0);
UD0:=CROSS(0,DIF);
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),COLORRED;
STICKLINE(MACD2>=0 AND MACD2<REF(MACD2,1),0,MACD2,2,0),COLORLIRED;
STICKLINE(MACD2<0,0,MACD2,2,0),COLORCYAN;
STICKLINE(MACD2<0 AND MACD2>REF(MACD2,1),0,MACD2,2,1),COLORFF8000;
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,5);
DRAWICON((JDU1 OR BARSLAST(JDU1)<BARSLAST(JUD1)) AND MACD2<0 AND REF(MACD2,1)>REF(DEFD2L,1) AND MACD2<DEFD2L,MACD2,3);
VAR111:=JDU1 OR BARSLAST(JDU1)<BARSLAST(JUD1);
VAR112:=HHV(MACD2,4)<0 AND MACD2>REF(MACD2,1) AND REF(MACD2,1)<REF(MACD2,2) AND REF(MACD2,2)<REF(MACD2,3);
SHORT:=12;LONG:=26;MID:=9;
VA:=IF(CLOSE>REF(CLOSE,1),VOL,-VOL);
OBV1:=SUM(IF(CLOSE=REF(CLOSE,1),0,VA),0);
OBV2:=EMA(OBV1,3)-MA(OBV1,9);
OBV3:=EMA(IF(OBV2>0,OBV2,0),3);
MAC3:=MA(C,3);
DIF1:EMA(CLOSE,SHORT)-EMA(CLOSE,LONG),COLORYELLOW,LINETHICK2;
DEA1:EMA(DIF1,MID),COLORBLUE;
DIF2:IF(DIF1>REF(DIF1,1),DIF1,DRAWNULL),COLOR8000FF,LINETHICK2;
DIF3:IF(DIF1<REF(DIF1,1),DIF1,DRAWNULL),COLORFF0080,LINETHICK2;
低位金叉:=CROSS(DIF1,DEA1) AND DIF1<-0.1;
DRAWTEXT(低位金叉,-0.5,'★低位金叉'),COLORWHITE;
JCCOUNT:=COUNT(CROSS(DIF1,DEA1),BARSLAST(DEA1>=0));
二次金叉:=CROSS(DIF1,DEA1) AND DEA1<0 AND COUNT(JCCOUNT=2,21)=1;
DRAWICON(二次金叉,DEA1*0.9,1);
DRAWTEXT(二次金叉,0.5,'★二次金叉'),COLORYELLOW;
A1:=BARSLAST(REF(CROSS(DIF1,DEA1),1));
底背离:=REF(CLOSE,A1+1)>CLOSE AND DIF1>REF(DIF1,A1+1) AND CROSS(DIF1,DEA1);
DRAWTEXT(底背离,-1,'▲底背离'),COLORFF00FF;
A2:=BARSLAST(REF(CROSS(DEA1,DIF1),1));
顶背离:=REF(CLOSE,A2+1)<CLOSE AND REF(DIF1,A2+1)>DIF1 AND CROSS(DEA1,DIF1);
DRAWTEXT(顶背离,1,'●顶背离'),COLORGREEN;
DRAWTEXT(低位金叉 AND 二次金叉 AND 底背离,0,'★三项全能'),COLORYELLOW;
DIFF:=EMA(CLOSE,12)-EMA(CLOSE,26);
DEA2:=EMA(DIFF,9);
MACD3:=2*(DIFF-DEA2);
(CLOSE<0 AND CROSS(DIFF,0),H*1.3),COLOR000080,NODRAW;
(CLOSE<0 AND CROSS(MACD3,0),H*1.3),COLOR000080,NODRAW;
(CLOSE<0 AND CROSS(0,DIFF),H*1.3),COLOR808080,NODRAW;
(CLOSE<0 AND CROSS(0,MACD3),H*1.3),COLOR808080,NODRAW;
DU0_2:=CROSS(DIFF,0);
UD0_2:=CROSS(0,DIFF);
TDU0_2:=BARSLAST(DU0_2);
TUD0_2:=BARSLAST(UD0_2);
DU3_2:=REF(DU0_2,1);
UD3_2:=REF(UD0_2,1);
TDU3_2:=BARSLAST(DU3_2);
TUD3_2:=BARSLAST(UD3_2);
UDGLINE_2:=IF(TDU3_2<TUD3_2,REF(HHV(HIGH,2),TDU3_2),REF(LLV(LOW,2),TUD3_2));
JDU0_2:=REF(CLOSE,1)<=REF(UDGLINE_2,1) AND CLOSE>UDGLINE_2 AND TDU0_2<TUD0_2;
JUD0_2:=REF(CLOSE,1)>=REF(UDGLINE_2,1) AND CLOSE<UDGLINE_2 AND TUD0_2<TDU0_2;
JDU1_2:=JDU0_2 AND COUNT(JDU0_2,TDU0_2)=1;
JUD1_2:=JUD0_2 AND COUNT(JUD0_2,TUD0_2)=1;
JDU2_2:=JDU1_2 AND REF(BARSLAST(JUD1_2),1)<REF(BARSLAST(JDU1_2),1);
JUD2_2:=JUD1_2 AND REF(BARSLAST(JUD1_2),1)>REF(BARSLAST(JDU1_2),1);
JDU3_2:=JDU1_2 AND REF(BARSLAST(JUD1_2),1)>REF(BARSLAST(JDU1_2),1);
JUD3_2:=JUD1_2 AND REF(BARSLAST(JUD1_2),1)<REF(BARSLAST(JDU1_2),1);
BSLINE_2:=IF(BARSLAST(JDU2_2)<BARSLAST(JUD2_2),IF(REF(CROSS(0,MACD3),1),LLV(LOW,2),REF(LLV(LOW,2),BARSLAST(REF(CROSS(0,MACD3),1)))),IF(REF(CROSS(MACD3,0),1),HHV(HIGH,2),REF(HHV(HIGH,2),BARSLAST(REF(CROSS(MACD3,0),1)))));
STICKLINE(MACD3>=0,0,MACD3,2,1),COLOR0000FF;
STICKLINE(MACD3>=0 AND MACD3<REF(MACD3,1),0,MACD3,2,0),COLOR0000FF;
STICKLINE(MACD3<0,0,MACD3,2,0),COLORFFFF00;
STICKLINE(MACD3<0 AND MACD3>REF(MACD3,1),0,MACD3,2,1),COLORFFFF00;
DIF4:DIFF,LINETHICK2,COLOR0000FF;
MACD4:DEA2,COLORFF0000;
DEF:MACD3,LINETHICK0,COLORFFFF00;
STICKLINE(CLOSE>0,0,0,2,0),COLOR808080;
DEFUT_2:=BARSLAST(CROSS(MACD3,0));
DEFDT_2:=BARSLAST(CROSS(0,MACD3));
DEFUL_2:=IF(MACD3>=0,HHV(MACD3,DEFUT_2+1),REF(HHV(MACD3,DEFUT_2+1),DEFDT_2+1));
DEFDL_2:=IF(MACD3<0,LLV(MACD3,DEFDT_2+1),REF(LLV(MACD3,DEFDT_2+1),DEFUT_2+1));
DEFU2L_2:=REF(DEFUL_2,DEFUT_2+1);
DEFD2L_2:=REF(DEFDL_2,DEFDT_2+1);
DRAWICON(LLV(MACD3,4)>0 AND MACD3<REF(MACD3,1) AND REF(MACD3,1)>REF(MACD3,2) AND REF(MACD3,2)>REF(MACD3,3),MACD3,2);
DRAWICON(HHV(MACD3,4)<0 AND MACD3>REF(MACD3,1) AND REF(MACD3,1)<REF(MACD3,2) AND REF(MACD3,2)<REF(MACD3,3),MACD3,1);
DRAWICON((JUD1_2 OR BARSLAST(JDU1_2)>BARSLAST(JUD1_2)) AND MACD3>=0 AND REF(MACD3,1)<REF(DEFU2L_2,1) AND MACD3>DEFU2L_2,MACD3,5);
DRAWICON((JDU1_2 OR BARSLAST(JDU1_2)<BARSLAST(JUD1_2)) AND MACD3<0 AND REF(MACD3,1)>REF(DEFD2L_2,1) AND MACD3<DEFD2L_2,MACD3,3);
VAR111_2:=JDU1_2 OR BARSLAST(JDU1_2)<BARSLAST(JUD1_2);
VAR112_2:=HHV(MACD3,4)<0 AND MACD3>REF(MACD3,1) AND REF(MACD3,1)<REF(MACD3,2) AND REF(MACD3,2)<REF(MACD3,3);