编程思路破译 SHORT赋值:12 LONG赋值:26 MID赋值:9 输出DIF:收盘价的SHORT日指数移动平均-收盘价的LONG日指数移动平均 输出DEA:DIF的MID日指数移动平均,COLOR888888 输出NOTEXT5:如果DIF>=DEA,返回DIF,否则返回无效数,画红色 输出NOTEXT6:如果DIF<DEA,返回DIF,否则返回无效数,画白色 AT1赋值:上次1日前的DIF上穿DEA距今天数 BT1赋值:AT1+1日前的收盘价>收盘价 AND AT1+1日前的DIF<DIF AND DIF上穿DEA AT2赋值:上次1日前的"KDJ的K"(9,3,3)上穿"KDJ的D"(9,3,3)距今天数 CT1赋值:上次1日前的DEA上穿DIF距今天数 DT1赋值:CT1+1日前的收盘价<收盘价 AND CT1+1日前的DIF>DIF AND DEA上穿DIF 输出MACD底背:如果BT1>0,返回-0.1,否则返回0,画红色 输出MACD顶背:如果DT1>0,返回0.1,否则返回0,COLOR00FF00 当满足条件BT1>0时,在0.5*DIF和0位置之间画柱状线,宽度为2,0不为0则画空心柱.,画红色 当满足条件DT1>0时,在0.5*DIF和0位置之间画柱状线,宽度为2,0不为0则画空心柱.,COLOR00FF00 输出平滑异同平均线:(DIF-DEA)*2,COLORSTICK 当满足条件MACD<1日前的MACDANDMACD>0时,在0和MACD位置之间画柱状线,宽度为0,0不为0则画空心柱.,COLOR44FF00 当满足条件MACD>1日前的MACDANDMACD<0时,在0和MACD位置之间画柱状线,宽度为0,0不为0则画空心柱.,COLOR0066FF M1赋值:13 M2赋值:13 A1赋值:M1日前的DIF=2*M1+1日内DIF的最高值 B1赋值:A1的M1日过滤 C1赋值:若B1则将最近M1+1周期置为1 D1赋值:C1的M1日过滤 E1赋值:若是否最后一个周期则将最近上次D1距今天数+1周期置为1 F1赋值:E1>1日前的E1 A2赋值:M2日前的DIF=2*M2+1日内DIF的最低值 B2赋值:A2的M2日过滤 C2赋值:若B2则将最近M2+1周期置为1 D2赋值:C2的M2日过滤 E2赋值:若是否最后一个周期则将最近上次D2距今天数+1周期置为1 F2赋值:E2>1日前的E2 输出压力线:当满足条件D1时,在DIF位置画直线起点,当满足条件F1时,在DIF位置画直线终点,0表示是否延长.,COLORFFFF00,DOTLINE 输出支撑线:当满足条件D2时,在DIF位置画直线起点,当满足条件F2时,在DIF位置画直线终点,0表示是否延长.,COLOR00AAFF,DOTLINE G3赋值:支撑线>1日前的支撑线并且DIF>支撑线并且1日前的支撑线=1日前的DIF的2日反向过滤 输出底抬高:当满足条件D2时,在DIF位置画直线起点,当满足条件G3时,在支撑线位置画直线终点,0表示是否延长.,画黄色,DOTLINE M赋值:3*10/5的整数部分 A12赋值:M日前的DIF=2*M+1日内DIF的最高值 B12赋值:A12的M日过滤 C12赋值:若B12则将最近M+1周期置为1 D12赋值:C12的M日过滤 R112赋值:若是否最后一个周期则将最近上次D12距今天数+1周期置为1 S112赋值:R112>1日前的R112 AL12赋值:M日前的DIF=2*M+1日内DIF的最低值 BL12赋值:AL12的M日过滤 CL12赋值:若BL12则将最近M+1周期置为1 DL12赋值:CL12的M日过滤 RL112赋值:若是否最后一个周期则将最近上次DL12距今天数+1周期置为1 SL112赋值:RL112>1日前的RL112 输出短压线:当满足条件D12时,在DIF位置画直线起点,当满足条件S112时,在DIF位置画直线终点,0表示是否延长.,COLOR99FF00,DOTLINE 输出短撑线:当满足条件DL12时,在DIF位置画直线起点,当满足条件SL112时,在DIF位置画直线终点,0表示是否延长.,COLOR0055FF,DOTLINE VARX2赋值:43日内DEA的最低值 VARX3赋值:DEA-(DIF-DEA) 低点线赋值:如果DIF<VARX2ANDDEA=VARX2,返回10日内VARX2的最高值和VARX3的较小值,否则返回VARX2 VL赋值:1日前的最低价 VAR12赋值:(最低价-VL的绝对值的13日[1日权重]移动平均)/(最低价-VL和0的较大值的13日[1日权重]移动平均)*100 VAR14赋值:VAR12的13日简单移动平均 VAR15赋值:34日内最低价的最低值 VAR18赋值:如果最低价<=VAR15,返回VAR14,否则返回0的3日指数移动平均 VAR110赋值:(收盘价-55日内最低价的最低值)/(55日内最高价的最高值-55日内最低价的最低值)*100的7日[1日权重]移动平均的5日[1日权重]移动平均 VAR111赋值:(收盘价-55日内最低价的最低值)/(55日内最高价的最高值-55日内最低价的最低值)*100的8日[1日权重]移动平均*15-VAR110*10.38 T赋值:如果VAR111<=VAR110ANDVAR18>0,返回VAR18*8,否则返回0的5日过滤 输出止跌:当满足条件TANDDIF<低点线时,在DIF*1.01位置书写文字,画黄色 A赋值:如果0上穿DEA,返回1,否则返回0 A11赋值:如果DIF<0ANDCROSS(DIF,DEA),返回1,否则返回0 SS赋值:如果A,返回A11的历史累和,否则返回0 SSB赋值:0日内SS的最高值 SSS赋值:A11的历史累和 W底赋值:SSS-SSB=2 AND SSS>1日前的SSS 当满足条件W底时,在DIF位置书写文字,COLOR0080FF MACD金叉赋值:MACD上穿DIF AND MACD>=(0-0.05) AND MACD<=0.02 当满足条件MACD金叉时,在MACD位置书写文字,COLOR00FFFF 低位金叉赋值:DIF上穿DEA AND DIF<-0.1 JCCOUNT赋值:统计上次DEA>=0距今天数日中满足DIF上穿DEA的天数 二次金叉赋值:DIF上穿DEA AND DEA<0 AND 统计21日中满足JCCOUNT=2的天数=1 当满足条件二次金叉时,在0.01位置书写文字,COLOR5500FF AA11赋值:上次1日前的DIF上穿DEA距今天数 底背离赋值:AA11+1日前的收盘价>收盘价 AND DIF>AA11+1日前的DIF AND DIF上穿DEA 输出底背:当满足条件AA11=0时,在DIF位置画直线起点,当满足条件底背离时,在DIF位置画直线终点,0表示是否延长.,画黄色,线宽为2 AA22赋值:上次1日前的DEA上穿DIF距今天数 顶背离赋值:AA22+1日前的收盘价<收盘价 AND AA22+1日前的DIF>DIF AND DEA上穿DIF 输出顶背:当满足条件AA22=0时,在DIF位置画直线起点,当满足条件顶背离时,在DIF位置画直线终点,0表示是否延长.,画绿色,线宽为2 当满足条件底背离时,在DIF*0.5位置书写文字,COLOR0055FF 当满足条件顶背离时,在DIF*0.5位置书写文字,COLOR99FF00 N赋值:3 5F赋值:(收盘价的3日指数移动平均-(收盘价的6日指数移动平均+收盘价的7日指数移动平均)/2) 5F赋值:(DIF3_6.5F的3日指数移动平均+DIF3_6.5的2日指数移动平均) AA赋值:N日前的DIF3_6.5F=2*N+1日内DIF3_6.5F的最高值 CC赋值:布林极限的N日过滤 AND DIF3_6.5F=N+1日内DIF3_6.5F的最高值 AX1赋值:上次1日前的CC距今天数 小顶背离赋值:AX1+1日前的收盘价<收盘价 AND AX1+1日前的DIF3_6.5F>DIF3_6.5F AND CC 当满足条件小顶背离时,在DIF3_6.5F*1.2位置书写文字,画绿色 当满足条件小顶背离>0时,在DIF3_6.5F*1.2位置画2号图标 AAA2赋值:N日前的DIF3_6.5F=2*N+1日内DIF3_6.5F的最低值 BBB2赋值:若AAA2则将最近N+1周期置为1 CCC2赋值:BBB2的N日过滤 AND DIF3_6.5F=N+1日内DIF3_6.5F的最低值 AX2赋值:上次1日前的CCC2距今天数 小底背离赋值:AX2+1日前的收盘价>收盘价 AND AX2+1日前的DIF3_6.5F<DIF3_6.5F 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 前低赋值:当满足条件VA4时,在MACD位置画直线起点,当满足条件1日前的VA4时,在1日前的MACD位置画直线终点,1表示是否延长. BD赋值:上次0上穿MACD的收盘价的有效数据周期数日反向过滤距今天数 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表示是否延长.,画白色 WQG赋值:统计ZZ日中满足MACD<本高/2ANDMACD>0上穿0.5的天数=1上穿0.5 AND ZZ>=0 当满足条件MACD>前高时,在MACD和前高位置之间画柱状线,宽度为0,0不为0则画空心柱.,COLORFFFFFF 当满足条件MACD<0ANDMACD<前低AND前低<0时,在MACD和前低位置之间画柱状线,宽度为0,0不为0则画空心柱.,COLORFFFFFF 当满足条件DIF上穿DEA时,在DEA位置画1号图标 当满足条件DEA上穿DIF时,在DEA位置画2号图标 输出底:("MACD.DIF"上穿"MACD.DEA"并且"MACD.DEA"<=-0.07)*"MACD.DIF"的绝对值*1.50,画淡洋红色 当满足条件底的绝对值>0时,在底*1.20位置书写文字,画黄色 程序源码 SHORT:=12; LONG:=26; MID:=9; DIF:EMA(CLOSE,SHORT)-EMA(CLOSE,LONG); DEA:EMA(DIF,MID),COLOR888888; {NOTEXT1:IF(DIF>-0.4, DIF,DRAWNULL),COLORRED; NOTEXT2:IF(DIF>0 AND DIF<REF(DIF,1), DIF,DRAWNULL),COLORGREEN; NOTEXT3:IF(DIF<0 AND DIF>REF(DIF,1), DIF,DRAWNULL),COLORFF00FF; NOTEXT4:IF(DIF<0 AND DIF<REF(DIF,1), DIF,DRAWNULL),COLORWHITE;} NOTEXT5:IF(DIF>=DEA, DIF,DRAWNULL),COLORRED; NOTEXT6:IF(DIF<DEA, DIF,DRAWNULL),COLORWHITE; AT1:=BARSLAST(REF(CROSS(DIF,DEA),1)); BT1:=REF(C,AT1+1)>C AND REF(DIF,AT1+1)<DIF AND CROSS(DIF,DEA); AT2:=BARSLAST(REF(CROSS("KDJ.K"(9,3,3),"KDJ.D"(9,3,3)),1)); CT1:=BARSLAST(REF(CROSS(DEA,DIF),1)); DT1:=REF(C,CT1+1)<C AND REF(DIF,CT1+1)>DIF AND CROSS(DEA,DIF); MACD底背:IF(BT1>0,-0.1,0),COLORRED; MACD顶背:IF(DT1>0,0.1,0),COLOR00FF00; STICKLINE(BT1>0,0.5*DIF,0,2,0),COLORRED; STICKLINE(DT1>0,0.5*DIF,0,2,0),COLOR00FF00; MACD:(DIF-DEA)*2,COLORSTICK; STICKLINE(MACD<REF(MACD,1) AND MACD>0, 0,MACD,0,0),COLOR44FF00; STICKLINE(MACD>REF(MACD,1) AND MACD<0, 0,MACD,0,0),COLOR0066FF; M1:=13; M2:=13; A1:=REF(DIF,M1)=HHV(DIF,2*M1+1); B1:=FILTER(A1,M1); C1:=BACKSET(B1,M1+1); D1:=FILTER(C1,M1); E1:=BACKSET(ISLASTBAR,BARSLAST(D1)+1); F1:=E1>REF(E1,1); A2:=REF(DIF,M2)=LLV(DIF,2*M2+1); B2:=FILTER(A2,M2); C2:=BACKSET(B2,M2+1); D2:=FILTER(C2,M2); E2:=BACKSET(ISLASTBAR,BARSLAST(D2)+1); F2:=E2>REF(E2,1); 压力线:DRAWLINE(D1,DIF,F1,DIF,0),COLORFFFF00,DOTLINE; 支撑线:DRAWLINE(D2,DIF,F2,DIF,0),COLOR00AAFF,DOTLINE; G3:=FILTERX(支撑线>REF(支撑线,1) && DIF>支撑线 && REF(支撑线,1)=REF(DIF,1),2); 底抬高:DRAWLINE(D2,DIF,G3,支撑线,0),COLORYELLOW,DOTLINE; {画趋势线} M:=INTPART(3*10/5); A12:=REF(DIF,M)=HHV(DIF,2*M+1); B12:=FILTER(A12,M); C12:=BACKSET(B12,M+1); D12:=FILTER(C12,M); R112:=BACKSET(ISLASTBAR,BARSLAST(D12)+1); S112:=R112>REF(R112,1); AL12:=REF(DIF,M)=LLV(DIF,2*M+1); BL12:=FILTER(AL12,M); CL12:=BACKSET(BL12,M+1); DL12:=FILTER(CL12,M); RL112:=BACKSET(ISLASTBAR,BARSLAST(DL12)+1); SL112:=RL112>REF(RL112,1); 短压线:DRAWLINE(D12,DIF,S112,DIF,0),COLOR99FF00,DOTLINE; 短撑线:DRAWLINE(DL12,DIF,SL112,DIF,0),COLOR0055FF,DOTLINE; VARX2:=LLV(DEA,43); VARX3:=DEA-(DIF-DEA); 低点线:=IF(DIF<VARX2 AND DEA=VARX2,MIN(HHV(VARX2,10),VARX3),VARX2); VL:=REF(LOW,1); VAR12:=(SMA(ABS(LOW-VL),13,1))/(SMA(MAX(LOW-VL,0),13,1))*100; VAR14:=MA(VAR12,13); VAR15:=LLV(LOW,34); VAR18:=EMA(IF(LOW<=VAR15,VAR14,0),3); VAR110:=SMA(SMA((CLOSE-LLV(LOW,55))/(HHV(HIGH,55)-LLV(LOW,55))*100,7,1),5,1); VAR111:=SMA((CLOSE-LLV(LOW,55))/(HHV(HIGH,55)-LLV(LOW,55))*100,8,1)*15-VAR110*10.38; T:=FILTER(IF(VAR111<=VAR110 AND VAR18>0,VAR18*8,0),5); 止跌:DRAWTEXT(T AND DIF<低点线,DIF*1.01,'止跌'),COLORYELLOW; {形态} A:=IF(CROSS(0,DEA),1,0); A11:=IF(DIF<0 AND CROSS(DIF,DEA),1,0); SS:=IF(A,SUM(A11,0),0); SSB:=HHV(SS,0); SSS:=SUM(A11,0); W底:=SSS-SSB=2 AND SSS>REF(SSS,1); DRAWTEXT(W底,DIF,'?IW底'),COLOR0080FF; MACD金叉:=CROSS(MACD,DIF) AND MACD>=(0-0.05) AND MACD<=0.02; DRAWTEXT(MACD金叉,MACD,'-MACD金叉'),COLOR00FFFF; 低位金叉:=CROSS(DIF,DEA) AND DIF<-0.1; JCCOUNT:=COUNT(CROSS(DIF,DEA),BARSLAST(DEA>=0)); 二次金叉:=CROSS(DIF,DEA) AND DEA<0 AND COUNT(JCCOUNT=2,21)=1; DRAWTEXT(二次金叉,0.01,'二次金叉'),COLOR5500FF; AA11:=BARSLAST(REF(CROSS(DIF,DEA),1)); 底背离:=REF(CLOSE,AA11+1)>CLOSE AND DIF>REF(DIF,AA11+1) AND CROSS(DIF,DEA); 底背:DRAWLINE(AA11=0,DIF,底背离,DIF,0),COLORYELLOW,LINETHICK2; AA22:=BARSLAST(REF(CROSS(DEA,DIF),1)); 顶背离:=REF(CLOSE,AA22+1)<CLOSE AND REF(DIF,AA22+1)>DIF AND CROSS(DEA,DIF); 顶背:DRAWLINE(AA22=0,DIF,顶背离,DIF,0),COLORGREEN,LINETHICK2; DRAWTEXT(底背离,DIF*0.5,'-DIF底背'),COLOR0055FF; DRAWTEXT(顶背离,DIF*0.5,'-DIF顶背'),COLOR99FF00; {小周期} N:=3; DIF3_6.5F:=(EMA(CLOSE,3)-(EMA(CLOSE,6)+EMA(CLOSE,7))/2); DEA3_6.5F:=(EMA(DIF3_6.5F,3)+EMA(DIF3_6.5,2)); AA:=REF(DIF3_6.5F,N)=HHV(DIF3_6.5F,2*N+1); CC:=FILTER(BB,N) AND DIF3_6.5F=HHV(DIF3_6.5F,N+1); AX1:=BARSLAST(REF(CC,1)); 小顶背离:=REF(CLOSE,AX1+1)<CLOSE AND REF(DIF3_6.5F,AX1+1)>DIF3_6.5F AND CC; DRAWTEXT(小顶背离,DIF3_6.5F*1.2,'-小顶背离'),COLORGREEN; DRAWICON(小顶背离>0,DIF3_6.5F*1.2,2); AAA2:=REF(DIF3_6.5F,N)=LLV(DIF3_6.5F,2*N+1); BBB2:=BACKSET(AAA2,N+1); CCC2:=FILTER(BBB2,N) AND DIF3_6.5F=LLV(DIF3_6.5F,N+1); AX2:=BARSLAST(REF(CCC2,1)); 小底背离:=REF(CLOSE,AX2+1)>CLOSE AND REF(DIF3_6.5F,AX2+1)<DIF3_6.5F; {画白柱线} 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); 前低:=DRAWLINE(VA4,MACD,REF(VA4,1),REF(MACD,1),1); BD:=BARSLAST(FILTERX(CROSS(0,MACD),BARSCOUNT(C))); 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; WQG:=CROSS(COUNT(CROSS(MACD<本高/2 AND MACD>0,0.5),ZZ)=1,0.5) AND ZZ>=0; STICKLINE(MACD>前高,MACD,前高,0,0),COLORFFFFFF; STICKLINE(MACD<0 AND MACD<前低 AND 前低<0,MACD,前低,0,0),COLORFFFFFF; DRAWICON(CROSS(DIF,DEA),DEA,1); DRAWICON(CROSS(DEA,DIF),DEA,2); 底:ABS((CROSS("MACD.DIF","MACD.DEA")&&"MACD.DEA"<=-0.07)*"MACD.DIF")*1.50,COLORLIMAGENTA; DRAWTEXT(ABS(底)>0,底*1.20,'底'),COLORYELLOW; 该公式包含未来函数:BACKSET 注: 馆内各种公式为学习编程而保存,实战使用前一定要看其中是否有未来函数并自己亲自测试成功率,决不能依据公式名称的描述和形容去投资,据此入市造成投资损失由投资者自己承担。 发文不易,如获益,欢迎赞赏,赞赏必复! |
|