编程思路破译 输出DIF:收盘价的12日指数移动平均-收盘价的26日指数移动平均 输出DEA:DIF的9日指数移动平均 如果DIF,返回DIF,否则返回无效数,画白色 如果DIF>1日前的DIF,返回DIF,否则返回无效数,画红色 如果DIF<1日前的DIF,返回DIF,否则返回无效数,画绿色 输出DEA1:DIF,画白色,CROSSDOT 输出平滑异同平均线:"MACD.MACD",NODRAW 输出W1:当满足条件MACD>0时,在MACD和0位置之间画柱状线,宽度为0,1不为0则画空心柱.,画红色 输出W2:当满足条件MACD<0时,在MACD和0位置之间画柱状线,宽度为0,1不为0则画空心柱.,画绿色 VA1赋值:上次MACD<0距今天数+1日内MACD距今天数 VA2赋值:若0上穿MACD则将最近1日前的VA1+2周期置为1上穿0.5 QG赋值:若0上穿MACDOR(ISLASTBARANDMACD>0)则将最近1日前的VA1+2周期置为1上穿0.5 输出前高:当满足条件VA2时,在MACD位置画直线起点,当满足条件1日前的VA2时,在1日前的MACD位置画直线终点,1表示是否延长.,画洋红色 VA3赋值:上次MACD>0距今天数+1日内MACD距今天数 VA4赋值:若MACD上穿0则将最近1日前的VA3+2周期置为1上穿0.5 BD赋值:上次0上穿MACD的收盘价的有效数据周期数日反向过滤距今天数 输出前低:当满足条件VA4时,在MACD位置画直线起点,当满足条件1日前的VA4时,在1日前的MACD位置画直线终点,1表示是否延长. BDTJ赋值:如果MACD<0,返回MACD=上次MACD>0距今天数日内MACD的最低值的收盘价的有效数据周期数日反向过滤,否则返回无效数 TSBDTJ赋值:上次BDTJ距今天数 BDZH赋值:MACD<BD+1日内MACD的最低值的最后一日取值设为常数的收盘价的有效数据周期数日反向过滤 BDTS赋值:上次BDZH距今天数 输出本低:如果BD+1>=1,返回BD+1日内MACD的最低值的最后一日取值设为常数,否则返回无效数 BDCL赋值:统计TSBDTJ日中满足MACD>本低/2ANDMACD<0上穿0.5的天数=1上穿0.5 AND TSBDTJ>=0 终点赋值:如果ISLASTBARANDMACD>0ANDMACD=上次MACD<0距今天数日内MACD的最高值,返回1,否则返回如果QG的收盘价的有效数据周期数日反向过滤,返回2,否则返回无效数 UU赋值:(终点=1 OR 终点=2) AND MACD>0 ZZ赋值:UU的收盘价的有效数据周期数日反向过滤 输出本高:当满足条件ZZ时,在MACD位置画直线起点,当满足条件1日前的ZZ时,在1日前的MACD位置画直线终点,1表示是否延长.,画白色 横线赋值:上次ZZ距今天数日前的MACD的最后一日取值设为常数 WW赋值:MACD>横线 起始点赋值:1日后的上次WW距今天数=1的收盘价的有效数据周期数日反向过滤 输出天数:上次起始点距今天数,画黄色,NODRAW 上横线赋值:当满足条件起始点时,在横线位置画直线起点,当满足条件ZZ时,在横线位置画直线终点,0表示是否延长.,画绿色,DOTLINE 下横线赋值:当满足条件BDZH时,在BD+1日内MACD的最低值的最后一日取值设为常数位置画直线起点,当满足条件BDTJ=1时,在MACD位置画直线终点,0表示是否延长.,COLOR8080FF,DOTLINE 当满足条件BDTJ时,在BD+1日内MACD的最低值的最后一日取值设为常数*0.9位置书写数字 当满足条件ZZ时,在上横线*1.1位置书写数字 TJ赋值:如果起始点,返回下次ZZ距今天数,否则返回无效数 输出红柱数量:如果天数>0AND天数<=天数日前的TJ,返回MACD>0的天数日累和,否则返回无效数,画白色,NODRAW 输出横线起始价:天数日前的收盘价,NODRAW 输出空间评估:(横线起始价-收盘价)/收盘价*100,NODRAW TT赋值:上次ZZ距今天数 WQG赋值:统计ZZ日中满足MACD<本高/2ANDMACD>0上穿0.5的天数=1上穿0.5 AND ZZ>=0 当满足条件MACD>前高AND本高>前高ANDBARSLAST(MACD<本高/2上穿0.5)>0ANDMACD>(前高+本高)/2时,在MACD和前高位置之间画柱状线,宽度为1,0不为0则画空心柱.,画黄色 输出前高本高二分位:如果MACD>0AND本高不等于前高,返回当满足条件WQG时,在(前高+本高)/2位置画直线起点,当满足条件1日前的WQG时,在1日前的(前高+本高)/2位置画直线终点,1表示是否延长.,否则返回无效数,COLORC0C000,DOTLINE 输出AA:字符串相加,NODRAW 当满足条件WQG时,在MACD*1.1位置书写文字,画白色 当满足条件BDCL时,在MACD*1.1位置书写文字,画白色 当满足条件MACD>前高时,在MACD和前高位置之间画柱状线,宽度为0,0不为0则画空心柱.,画黄色 当满足条件WQG时,在MACD和0位置之间画柱状线,宽度为1,0不为0则画空心柱.,画绿色 当满足条件MACD<0ANDMACD<前低AND前低<0时,在MACD和前低位置之间画柱状线,宽度为0,0不为0则画空心柱.,画蓝色 B1赋值:如果MACD<0上穿0.5,返回下次BDTJ距今天数,否则返回无效数 TSB1赋值:上次MACD>0距今天数-1 当满足条件上次BDCL距今天数>=0ANDMACD<前低ANDMACD<0时,在MACD和前低位置之间画柱状线,宽度为1,0不为0则画空心柱.,画绿色 当满足条件BDCL时,在MACD和0位置之间画柱状线,宽度为1,0不为0则画空心柱.,画白色 当满足条件MACD>前高AND本高>前高ANDBARSLAST(WQG)>0时,在MACD和前高位置之间画柱状线,宽度为1,0不为0则画空心柱.,画红色 当满足条件VA2ANDVA2不等于UU时,在MACD/10位置书写文字 当满足条件BDTJ时,在(MACD/10)*9位置书写文字,画红色 如果上次BDCL距今天数>=0,返回本低/2,否则返回无效数,画红色,DOTLINE 当满足条件1时,在横轴0纵轴0位置书写文字,画洋红色 程序源码 DIF:EMA(CLOSE,12)-EMA(CLOSE,26); DEA:EMA(DIF,9); {此段为DIF线变色} IF(DIF,DIF,DRAWNULL),COLORWHITE; IF(DIF>REF(DIF,1),DIF,DRAWNULL),COLORRED; IF(DIF<REF(DIF,1),DIF,DRAWNULL),COLORGREEN; DEA1:DIF,COLORWHITE,CROSSDOT; MACD:"MACD.MACD",NODRAW; W1:STICKLINE(MACD>0,MACD,0,0,1),COLORRED; W2:STICKLINE(MACD<0,MACD,0,0,1),COLORGREEN; VA1:=HHVBARS(MACD,BARSLAST(MACD<0)+1); VA2:=CROSS(BACKSET(CROSS(0,MACD),REF(VA1,1)+2),0.5); QG:=CROSS(BACKSET(CROSS(0,MACD) OR (ISLASTBAR AND MACD>0),REF(VA1,1)+2),0.5); 前高:DRAWLINE(VA2,MACD,REF(VA2,1),REF(MACD,1),1),COLORMAGENTA; VA3:=LLVBARS(MACD,BARSLAST(MACD>0)+1); VA4:=CROSS(BACKSET(CROSS(MACD,0),REF(VA3,1)+2),0.5); BD:=BARSLAST(FILTERX(CROSS(0,MACD),BARSCOUNT(C))); 前低:DRAWLINE(VA4,MACD,REF(VA4,1),REF(MACD,1),1); BDTJ:=IF(MACD<0,FILTERX(MACD=LLV(MACD,BARSLAST(MACD>0)), BARSCOUNT(C)),DRAWNULL); TSBDTJ:=BARSLAST(BDTJ); BDZH:=FILTERX(MACD<CONST(LLV(MACD,BD+1)),BARSCOUNT(C)); BDTS:=BARSLAST(BDZH); 本低:IF(BD+1>=1,CONST(LLV(MACD,BD+1)),DRAWNULL); BDCL:=CROSS(COUNT(CROSS(MACD>本低/2 AND MACD<0,0.5),TSBDTJ)=1,0.5) AND TSBDTJ>=0; 终点:=IF(ISLASTBAR AND MACD>0 AND MACD=HHV(MACD,BARSLAST(MACD<0)),1, IF(FILTERX(QG,BARSCOUNT(C)),2,DRAWNULL)); UU:=(终点=1 OR 终点=2) AND MACD>0; ZZ:=FILTERX(UU,BARSCOUNT(C)); 本高:DRAWLINE(ZZ,MACD,REF(ZZ,1),REF(MACD,1),1),COLORWHITE; 横线:=CONST(REF(MACD,BARSLAST(ZZ))); WW:=MACD>横线; 起始点:=FILTERX(REFX(BARSLAST(WW),1)=1,BARSCOUNT(C)); 天数:BARSLAST(起始点),COLORYELLOW,NODRAW; 上横线:=DRAWLINE(起始点,横线,ZZ,横线,0),COLORGREEN,DOTLINE; 下横线:=DRAWLINE(BDZH,CONST(LLV(MACD,BD+1)),BDTJ=1,MACD,0),COLOR8080FF,DOTLINE; DRAWNUMBER(BDTJ,CONST(LLV(MACD,BD+1))*0.9,BDTS); DRAWNUMBER(ZZ,上横线*1.1,天数); TJ:=IF(起始点,BARSNEXT(ZZ),DRAWNULL); 红柱数量:IF(天数>0 AND 天数<=REF(TJ,天数),SUM(MACD>0,天数),DRAWNULL),COLORWHITE,NODRAW; 横线起始价:REF(C,天数),NODRAW; 空间评估:(横线起始价-C)/C*100,NODRAW; TT:=BARSLAST(ZZ); WQG:=CROSS(COUNT(CROSS(MACD<本高/2 AND MACD>0,0.5),ZZ)=1,0.5) AND ZZ>=0; STICKLINE(MACD>前高 AND 本高>前高 AND BARSLAST(CROSS(MACD<本高/2,0.5))>0 AND MACD>(前高+本高)/2,MACD,前高,1,0),COLORYELLOW; 前高本高二分位:IF(MACD>0 AND 本高!=前高,DRAWLINE(WQG,(前高+本高)/2,REF(WQG,1),REF((前高+本高)/2,1),1) ,DRAWNULL),COLORC0C000,DOTLINE; AA:STRCAT(STRCAT(STRCAT('〖','上升空间'),'〗'),CON2STR(IF(空间评估,空间评估, DRAWNULL),2)),NODRAW; DRAWTEXT(WQG,MACD*1.1,'高成'),COLORWHITE; DRAWTEXT(BDCL,MACD*1.1,'低成'),COLORWHITE; STICKLINE(MACD>前高,MACD,前高,0,0),COLORYELLOW; STICKLINE(WQG,MACD,0,1,0),COLORGREEN; STICKLINE(MACD<0 AND MACD<前低 AND 前低<0,MACD,前低,0,0),COLORBLUE; B1:=IF(CROSS(MACD<0,0.5),BARSNEXT(BDTJ),DRAWNULL); TSB1:=BARSLAST(MACD>0)-1; STICKLINE(BARSLAST(BDCL)>=0 AND MACD<前低 AND MACD<0,MACD,前低,1,0),COLORGREEN; STICKLINE(BDCL,MACD,0,1,0),COLORWHITE; STICKLINE(MACD>前高 AND 本高>前高 AND BARSLAST(WQG)>0, MACD,前高,1,0),COLORRED; {DRAWTEXT(VA2 AND VA2!=UU,(MACD/10)*9,'前');} DRAWTEXT(VA2 AND VA2!=UU,MACD/10,'高'); {DRAWTEXT(ZZ,(MACD/10)*9,'本'),COLORWHITE; DRAWTEXT(ZZ,MACD/10,'高'),COLORWHITE;} DRAWTEXT(BDTJ,(MACD/10)*9,'低'),COLORRED; {DRAWTEXT(BDTJ,MACD/10,'本'),COLORRED;} IF(BARSLAST(BDCL)>=0,本低/2,DRAWNULL),COLORRED,DOTLINE; DRAWTEXT_FIX(1,0,0,0,'【黑马拉升由两个阶段构成:同步上涨阶段(黄芯柱) 和惯性上涨阶段(背离阶段、红芯柱)】'),COLORMAGENTA; 该公式包含未来函数:BACKSET 注: 馆内各种公式为学习编程而保存,实战使用前一定要看其中是否有未来函数并自己亲自测试成功率,决不能依据公式名称的描述和形容去投资,据此入市造成投资损失由投资者自己承担。 发文不易,如获益,欢迎赞赏,赞赏必复! |
|