指标修改技巧——指标减肥法 【声明:此乃转自网上“中国其货”先生!不知道是先生??女士??】 感觉对于编写指标的人有很大帮助!———版主能置顶最好!!! 指标修改技巧(3) 指标减肥法 指标公式是由若干条语句组成的,在网上我们常常看到有的指标少则几十条,多则近百条,指标大的让人望而生畏。因为指标语句之间关联密切,互相调用,层层嵌套,有时编者也搞不清楚哪些语句被调用哪些没被调用,或者来不及校对,遗留下许多废语句也在所难免。要知道,我们在使用指标时计算机对每条语句都要进行计算后才得出结果,太多的废语句会使计算速度降低(当然我们凭肉眼是看不出来的),而且占用空间。说不定你现在使用的指标就肥指标,特别是很长的指标,有时间还是给指标减肥吧!下面结合实例介绍减肥的方法:{VAR2:=1; VAR3:=MA(CLOSE,13); VAR4:=100-ABS(((CLOSE-VAR3)/(VAR3))*(100)); VAR5:=LLV(LOW,75); VAR6:=HHV(HIGH,75); VAR7:=(VAR6-VAR5)/(100); VAR8:=SMA((CLOSE-VAR5)/(VAR7),20,1); VAR9:=SMA((OPEN-VAR5)/(VAR7),20,1); VARA:=(3)*(VAR8)-(2)*(SMA(VAR8,15,1)); VARB:=(3)*(VAR9)-(2)*(SMA(VAR9,15,1)); VARC:=100-VARB; VARE:=(REF(LOW,1))*(0.89999997); VARF:=(LOW)*(0.89999997); VAR10:=((VARF)*(VOL)+(VARE)*(CAPITAL-VOL))/(CAPITAL); VAR11:=EMA(VAR10,30); VAR12:=CLOSE-REF(CLOSE,1); VAR13:=MAX(VAR12,0); VAR14:=ABS(VAR12); VAR15:=((SMA(VAR13,7,1))/(SMA(VAR14,7,1)))*(100); VAR16:=((SMA(VAR13,13,1))/(SMA(VAR14,13,1)))*(100); VAR17:=BARSCOUNT(CLOSE); VAR18:=((SMA(MAX(VAR12,0),6,1))/(SMA(ABS(VAR12),6,1)))*(100); VAR19:=(((-200))*(HHV(HIGH,60)-CLOSE))/(HHV(HIGH,60)-LLV(LOW,60))+100; VAR1A:=((CLOSE-LLV(LOW,15))/(HHV(HIGH,15)-LLV(LOW,15)))*(100); VAR1B:=SMA((SMA(VAR1A,4,1)-50)*(2),3,1); VAR1C:=((INDEXC-LLV(INDEXL,14))/(HHV(INDEXH,14)-LLV(INDEXL,14)))*(100); VAR1D:=SMA(VAR1C,4,1); VAR1E:=SMA(VAR1D,3,1); VAR1F:=((HHV(HIGH,30)-CLOSE)/(CLOSE))*(100); VAR20:=(VAR18<=25) AND (VAR19<(-95)) AND (VAR1F>20) AND (VAR1B<(-30)) AND (VAR1E<30) AND (VAR11- CLOSE>=(-0.25)) AND (VAR15<22) AND (VAR16<28) AND (VAR17>50); VAR21:=(HIGH+LOW+CLOSE)/(3); VAR22:=(VAR21-MA(VAR21,14))/((0.015)*(AVEDEV(VAR21,14))); VAR23:=(VAR21-MA(VAR21,70))/((0.015)*(AVEDEV(VAR21,70))); VAR24:=IF((VAR22>=150) AND (VAR22<200) AND (VAR23>=150) AND (VAR23<200),10,0); VAR25:=IF((VAR22<=(-150)) AND (VAR22>(-200)) AND (VAR23<=(-150)) AND (VAR23>(-200)),(-10),VAR24); VAR20,Color0000FF,Linethick2; CROSS(VAR20,0.5) AND (COUNT((VAR20=1),10)=1),Color00FFFF,Linethick2;} VAR26:=((CLOSE-LLV(LOW,27))/(HHV(HIGH,27)-LLV(LOW,27)))*(100); {VAR27:=REVERSE(VAR26);} VAR28:=SMA(VAR26,3,1); 快线:SMA(VAR28,3,1),Color0000FF; 慢线:SMA(快线,3,1),Color00FFFF; 金叉买:IF(CROSS(快线,慢线) AND (快线<40),35,0),Color0000FF,Linethick2;这是一个经测试能通过的指标,那么公式还有问题吗?我们来分析一下就知道了。 第一步:打开指标编辑器,把指标源码复制粘贴到指标编辑器里,给指标随便取个名,点击测试通过,说明这个指标可用,没有不可识别的标示符,点击确认,回到K线图上调出该指标,看图形的效果。 第二步:在图形上看到了两条线和一个脉冲信号,那么这两条线和脉冲信号都调用了哪些指标语句呢?从指标的最后一条语句逐条往上看,金叉买这条语句调用了慢线和快线语句,慢线调用了快线语句,快线调用了VAR28语句,VAR28调用了VAR26语句,而VAR26往上没有调用任何语句,那么就可以认定这个指标是由VAR26、VAR28、快线、慢线、金叉买这5条语句构成的一个指标,其它的全是无用的废语句。 第三步:为了验证自己的判断是否正确,用大括号{}将VAR26上面的语句至VAR2全部括起来,再把VAR27括起来,点测试通过,再点确认,验证一下图形,效果如初,OK! 第四步:打开指标编辑器,把用大括弧括起的那部分(在指标编辑器里显示的是绿色[见下图])删除,点测试通过,确认,OK!这是减肥后的指标:VAR26:=((CLOSE-LLV(LOW,27))/(HHV(HIGH,27)-LLV(LOW,27)))*(100); VAR28:=SMA(VAR26,3,1); 快线:SMA(VAR28,3,1),Color0000FF; 慢线:SMA(快线,3,1),Color00FFFF; 金叉买:IF(CROSS(快线,慢线) AND (快线<40),35,0),Color0000FF,Linethick2; 再看这个指标: {var2:=1/WINNER(CLOSE);} var3:=MA(CLOSE,13); var4:=100-ABS((CLOSE-var3)/var3*100); {var5:=LLV(LOW,75); var6:=HHV(HIGH,75); var7:=(var6-var5)/100; var8:=SMA((CLOSE-var5)/var7,20,1); var9:=SMA((OPEN-var5)/var7,20,1); varA:=3*var8-2*SMA(var8,15,1); varB:=3*var9-2*SMA(var9,15,1); varC:=100-varB;} 动力线: MA(WINNER(CLOSE*0.95)*100,3),LINETHICK2 ; {varD:=动力线>var4; varE:=REF(LOW,1)*0.9; varF:=LOW*0.9; var10:=(varF*VOL+varE*(CAPITAL-VOL))/CAPITAL; var11:=EMA(var10,30); var12:=CLOSE-REF(CLOSE,1); var13:=MAX(var12,0); var14:=ABS(var12); var15:=SMA(var13,7,1)/SMA(var14,7,1)*100; var16:=SMA(var13,13,1)/SMA(var14,13,1)*100; var17:=BARSCOUNT(CLOSE); var18:=SMA(MAX(var12,0),6,1)/SMA(ABS(var12),6,1)*100; var19:=(-200)*(HHV(HIGH,60)-CLOSE)/(HHV(HIGH,60)-LLV(LOW,60))+100; var1A:=(CLOSE-LLV(LOW,15))/(HHV(HIGH,15)-LLV(LOW,15))*100; var1B:=SMA((SMA(var1A,4,1)-50)*2,3,1); var1C:=(INDEXC-LLV(INDEXL,14))/(HHV(INDEXH,14)-LLV(INDEXL,14))*100; var1D:=SMA(var1C,4,1); var1E:=SMA(var1D,3,1); var1F:=(HHV(HIGH,30)-CLOSE)/CLOSE*100; var20:=var18<=25 AND var19<-95 AND var1F>20 AND var1B<-30 AND var1E<30 AND var11-CLOSE>=-0.25 AND var15<22 AND var16<28 AND var17>50; var21:=(HIGH+LOW+CLOSE)/3; var22:=(var21-MA(var21,14))/(0.015*AVEDEV(var21,14)); var23:=(var21-MA(var21,70))/(0.015*AVEDEV(var21,70)); var24:=IF(var22>=150 AND var22<200 AND var23>=150 AND var23<200,10,0); var25:=IF(var22<=-150 AND var22>-200 AND var23<=-150 AND var23>-200,-10,var24);} var26:=(CLOSE-LLV(LOW,27))/(HHV(HIGH,27)-LLV(LOW,27))*100; {var27:=REVERSE(var26);} var28:=SMA(var26,3,1); 短线: SMA(var28,3,1),linethick2,COLORFF00FF; 鱼身: SMA(短线,3,1),linethick2,COLORWHITE; 买入信号: IF(CROSS(短线,鱼身) AND 短线<40 AND C>O,35,0),linethick2,COLORRED; 卖出信号: IF(CROSS(鱼身,短线) AND 鱼身>75,70,100),linethick2,COLOR00DD00;这也是一个经测试能通过的指标,看看它有没有废语句。 第一步:打开指标编辑器,把指标源码复制粘贴到指标编辑器里,给指标随便取个名,点击测试通过,说明这个指标可用,没有不可识别的标示符,点击确认,回到K线图上调出该指标,看图形的效果。 第二步:在图形上看到了三条线和两个脉冲信号,那么这三条线和两个脉冲信号都调用了那些指标语句呢?先从动力线这条语句逐条往上看,动力线这条语句调用了VAR3和VAR4语句,VARC--VAR5和VAR2没有调用,用大括弧{}括起来,点击测试能通过,说明动力线以下那部分的语句也没有调用。接下来再看短线、鱼身、买入信号、卖出信号调用了哪些语句,卖出信号和买入信号调用了短线、鱼身语句,鱼身调用了短线语句,短线语句调用了VAR28,VAR28调用了VAR26,而VAR26往上没有调用任何语句,那么就可以认定这个指标是由VAR3、VAR4、动力线、VAR26、VAR28、短线、快线、慢线、鱼身、买入信号和卖出信号金叉买这9条语句构成的一个指标,其它的全是无用的废语句。 第三步:为了验证自己的判断是否正确,用大括号{}将VAR27和VAR25--VARD全部括起来,点测试通过,再点确认,验证一下图形,效果如初,OK! 第四步:打开指标编辑器,把用大括弧括起的那部分(在指标编辑器里显示的是绿色)删除,点测试通过,确认,OK!这是减肥后的指标:var3:=MA(CLOSE,13); var4:=100-ABS((CLOSE-var3)/var3*100); 动力线: MA(WINNER(CLOSE*0.95)*100,3),LINETHICK2 ; var26:=(CLOSE-LLV(LOW,27))/(HHV(HIGH,27)-LLV(LOW,27))*100; var28:=SMA(var26,3,1); 短线: SMA(var28,3,1),linethick2,COLORFF00FF; 鱼身: SMA(短线,3,1),linethick2,COLORWHITE; 买入信号: IF(CROSS(短线,鱼身) AND 短线<40 AND C>O,35,0),linethick2,COLORRED; 卖出信号: IF(CROSS(鱼身,短线) AND 鱼身>75,70,100),linethick2,COLOR00DD00; 要点:给指标减肥要掌握这样一个要点,首先要找在图上能显示线条、柱形线,脉冲信号、图形等语句引用了哪些其它语句,没引用的就是废语句。把这两个指标的图形比较一下,你发现了什么?是不是在某些地方有相同之处。 指标修改技巧(4) 解除时间限制法 时间限制是一种加密的方法,其原理是在指标中加入时间函数,把时间设定在一定的使用范围内,当超过设定的时间之后,指标图形中的线条和有关信号消失或失真,造成指标不能继续使用。用时间限制加密的形式有多种,仅举以下三种例子加以说明解除的方法:请看这个主图指标:{ M(1,30,5) WARN(1,40,10)} Var1:=1040301; Var2:=1040901; Var3:=IF(DATE>Var1,IF(CLOSE<80,1,0),0); Var4:=IF(DATE>Var2,1,Var3); Var5:=(EMA(LOW,M)+EMA(CLOSE,M*2)+EMA(CLOSE,M*6)+EMA(HIGH,M*3))/4*(1+WARN/200); Var6:=(EMA(HIGH,M)+EMA(OPEN,M*2)+EMA(OPEN,M*6)+EMA(LOW,M*3))/4*(1-WARN/200); 多空线: IF(var4=1,OPEN,EMA((Var5+Var6)/2,M)), ; 高: IF(var4=1,CLOSE,Var5-(Var5-多空线)/10), ; 低: IF(var4=1,(OPEN+CLOSE)/2,Var6+(多空线-Var6)/10),; 顶: IF(var4=1,HIGH,Var5*(1+WARN/200)),; 底: IF(var4=1,LOW,Var6*(1-WARN/200)), ; 股价重心: (EMA(CLOSE,M)+EMA(OPEN,M))/2, ; IF(OPEN<低,高,多空线), ; 这是一个时间加密的主图指标,VAR3和VAR4引用了VAR1和VAR2的具体时间,限制在2004年3月1日前可正常使用,超过这个时间就不能正常使用了,而且把时间限制嵌套在其它语句中,给解除时间限制带来一定的难度。 对于这类加密指标,可以不必大改,只要把VAR1的1040301(2004年3月1日)改为1540301(2054年3月1日),把VAR2的1040901(2004年9月1日)改为10540901(2054年9月1日)即可,也就是延长50年的使用期限。就是你常用这个指标,50年也就足够用的了。 解除时间限制后的指标:{ M(1,30,5) WARN(1,40,10)} Var1:=1050301; Var2:=1050901; Var3:=IF(DATE>Var1,IF(CLOSE<80,1,0),0); Var4:=IF(DATE>Var2,1,Var3); Var5:=(EMA(LOW,M)+EMA(CLOSE,M*2)+EMA(CLOSE,M*6)+EMA(HIGH,M*3))/4*(1+WARN/200); Var6:=(EMA(HIGH,M)+EMA(OPEN,M*2)+EMA(OPEN,M*6)+EMA(LOW,M*3))/4*(1-WARN/200); 多空线: IF(var4=1,OPEN,EMA((Var5+Var6)/2,M)), ; 高: IF(var4=1,CLOSE,Var5-(Var5-多空线)/10), ; 低: IF(var4=1,(OPEN+CLOSE)/2,Var6+(多空线-Var6)/10),; 顶: IF(var4=1,HIGH,Var5*(1+WARN/200)); 底: IF(var4=1,LOW,Var6*(1-WARN/200)); 股价重心: (EMA(CLOSE,M)+EMA(OPEN,M))/2; IF(OPEN<低,高,多空线);再看这个副图指标:Var1:=IF(DATE<=1040701,1,0); Var2:=DMA(CLOSE,HIGH/MA(LOW,4)/4); Var3:=DMA(CLOSE,CLOSE/MA(LOW,30)/30); Var4:=(LOW-Var2)/Var2*100<-5.889; Var5:=(Var2-Var3)/Var3*100<-15.889; Var6:=Var4 AND Var5 AND (HIGH-MA(LOW,3))/REF(LOW,2)>-0.059; Var7:=Var6>0; Var8:=AMOUNT/VOL/100; Var9:=(3*HIGH+LOW+OPEN+2*CLOSE)/7; VarA:=SUM(AMOUNT,13)/Var8/100; VarB:=DMA(Var9,VOL/VarA); VarC:=MA(HHV(HIGH,488),18); VarD:=MA(HHV(HIGH,220),18); VarE:=MA(HHV(HIGH,98),18); VarF:=MA(LLV(LOW,488),18); Var10:=MA(LLV(LOW,220),18); Var11:=MA(LLV(LOW,98),18); Var12:=MA((VarF*0.96+Var10*0.96+Var11*0.96+VarC*0.558+VarD*0.558+VarE*0.558)/6,18); Var13:=MA((VarF*1.25+Var10*1.23+Var11*1.2+VarC*0.55+VarD*0.55+VarE*0.65)/6,18); Var14:=MA((VarF*1.3+Var10*1.3+Var11*1.3+VarC*0.68+VarD*0.68+VarE*0.68)/6,18); Var15:=MA((Var12*3+Var13*2+Var14)/6*1.738,18); Var16:=IF(DATE<=1021231,Var15,Var15*DAY); Var17:=LOW; Var18:=REF(LOW,1); Var19:=SMA(ABS(Var17-Var18),3,1)/SMA(MAX(Var17-Var18,0),3,1)*100; Var1A:=MA(IF(CLOSE*1.35{<=Var16},Var19*10,Var19/10),3); Var1B:=LLV(LOW,30); Var1C:=HHV(Var1A,30); Var1D:=IF(LOW<=Var1B,(Var1A+Var1C*2)/2,0); Var1E:=MA(Var1D AND CLOSE<COST(1),3) AND (CLOSE-VarB)/VarB*100<-11; Var1F:=MA(CLOSE,5); Var20:=MA(CLOSE,10); Var21:=MA(CLOSE,20); Var22:=MA(CLOSE,30); Var23:=(Var1F+Var20+Var21+Var22)/4; Var24:=(Var23-REF(Var23,15))/REF(Var23,15)*100; Var25:=IF(Var24<-10 AND Var24<REF(Var24,1),20,0); 买入: Var7*Var1 AND Var1E*Var1 AND Var25*Var1 AND (CLOSE-OPEN)*Var1>0,linethick2 , colorred; 这个指标中的VAR1、VAR16和买入这3条语句引用了时间限制函数,限制在2004年7月1日前可正常使用,超过这个时间就不能正常使用了。解除时间限制的方法比较简单,只要把VAR1和VAR16这2条语句删除,再把Var1A语句中的<=Var16和买入语句中的*VA1删除就完全解除了时间限制。最后在看一个指标:Var1:=IF(DATE<1030830 AND DATE>900101,1,0); Var2:=LLV(LOW,10); Var3:=HHV(HIGH,25); 警戒线:=2.8*Var1; 减仓线:=3.2*Var1; 动力线:=EMA((CLOSE-Var2)/(Var3-Var2)*4,4)*Var1; VAR4:CROSS(动力线,警戒线); STICKLINE(VAR4,0,50,4,0); DRAWICON(CROSS(动力线,警戒线),53,2); 这个指标中的VAR1引用了时间限制函数,限制在2003年8月30日前可正常使用,超过这个时间就不能正常使用了。解除时间限制的方法比较简单,只要把VAR1这条语句删除,再把语句中的*VAR1删除就完全解除了时间限制。 以上例举了3个解除时间限制的方法,不论采取哪一种都能解除时间限制,哪个方便就采取哪个。试着改一改吧!指标修改技巧(5) 填补法顶底背离:0,COLORYELLOW; A1:=BARSLAST(ref(cross("macd.diff","macd.dea"),1)); B1:=ref(c,A1+1)>c and ref("macd.diff",A1+1)<"macd.diff" and cross("macd.diff","macd.dea"); MACD底背离:STICKLINE(FILTER(B1>0,5),0,0.75,3,0),COLORGREEN; DRAWTEXT(FILTER(B1>0,5),0.57,'MACD底背离'),COLORGREEN; A2:=BARSLAST(ref(cross("kdj.k","kdj.d"),1)); B2:=ref(c,A2+1)>c and ref("kdj.k",A2+1)<"kdj.k" and cross("kdj.k","kdj.d"); KDJ底背离:STICKLINE(FILTER(B2>0,5),0,1,3,0),COLORYELLOW; DRAWTEXT(FILTER(B2>0,5),0.80,'KDJ底背离'),COLORYELLOW; A3:=BARSLAST(ref(cross("RSI.RSI1","RSI.RSI2"),1)); B3:=ref(c,A3+1)>c and ref("RSI.RSI1",A3+1)<"RSI.RSI1" and cross("RSI.RSI1","RSI.RSI2"); RSI底背离:STICKLINE(FILTER(B3>0,5),0,0.5,3,0),COLORCYAN; DRAWTEXT(FILTER(B3>0,5),0.25,'RSI底背离'),COLORCYAN; 2,COLORRED; C1:=BARSLAST(ref(cross("macd.dea","macd.diff"),1)); D1:=ref(c,C1+1)<c and ref("macd.diff",C1+1)>"macd.diff" and cross("macd.dea","macd.diff"); MACD顶背离:STICKLINE(FILTER(D1>0,5),2,1.25,3,0),COLOR0066FF; DRAWTEXT(FILTER(D1>0,5),1.47,'MACD顶背离'),COLOR0066FF; C2:=BARSLAST(ref(cross("kdj.d","kdj.k"),1)); D2:=ref(c,C2+1)<c and ref("kdj.k",C2+1)>"kdj.k" and cross("kdj.d","kdj.k"); KDJ顶背离:STICKLINE(FILTER(D2>0,5),2,1,3,0),COLORRED; DRAWTEXT(FILTER(D2>0,5),1.2,'KDJ顶背离'),COLORRED; C3:=BARSLAST(ref(cross("RSI.RSI2","RSI.RSI1"),1)); D3:=ref(c,C3+1)<c and ref("RSI.RSI1",C3+1)>"RSI.RSI1" and cross("RSI.RSI2","RSI.RSI1"); RSI顶背离:STICKLINE(FILTER(D3>0,5),2,1.5,3,0),COLORMAGENTA; DRAWTEXT(FILTER(D3>0,5),1.75,'RSI顶背离'),COLORMAGENTA;这是一个飞狐格式的指标,如果要改成大智慧格式的指标,需要做如下修改: 第一步:打开指标编辑器,把指标源码复制粘贴到指标编辑器里,给指标随便取个名或输入原指标的名字,点击测试,提示没有定义的标示符,如图。 第二步:用鼠标点确定,在编辑器里显示兰色条处有colorcyan这个颜色代码大智慧不能识别(在飞狐指标中该颜色代码是青色),把它改成能识别的粉色代码colorffcc66,用鼠标点测试,此时又提示没有定义的标示符,用鼠标点确定,在编辑器里显示兰色条处还有colorcyan这个颜色代码大智慧不能识别(在飞狐指标中该颜色代码是青色),把它改成能识别的青色代码colorffcc66,用鼠标点测试,同样还是有colorcyan这个颜色代码大智慧不能识别,改成青色代码colorffcc66,用鼠标点测试,用同样方法找到两处COLORMAGENTA这个颜色代码大智慧不能识别(在飞狐指标中该颜色代码是粉色),把它改成能识别的粉色代码colorff00ff,用鼠标点测试,提示引用指标或函数参数错误,点确定,显示兰色条的语句有错误,通过对源码的分析,公式中引入的传统指标如MACD、KDJ、RSI都没有参数,所以提示引用指标或函数参数错误。把所有的带有类似("macd.diff","macd.dea")格式的都加上参数即可,如:("macd.diff"(12,26,9),"macd.dea"(12,26,9)),其它的依次类推。最后测试通过.修改后的指标:顶底背离:0,COLORYELLOW; A1:=BARSLAST(ref(cross("macd.diff"(12,26,9),"macd.dea"(12,26,9)),1)); B1:=ref(c,A1+1)>c and ref("macd.diff"(12,26,9),A1+1)<"macd.diff"(12,26,9) and cross("macd.diff"(12,26,9),"macd.dea"(12,26,9)); MACD底背离:STICKLINE(FILTER(B1>0,5),0,0.75,3,0),COLORGREEN; DRAWTEXT(FILTER(B1>0,5),0.57,'MACD底背离'),COLORGREEN; A2:=BARSLAST(ref(cross("kdj.k"(9,9,3),"kdj.d"(9,9,3)),1)); B2:=ref(c,A2+1)>c and ref("kdj.k"(9,9,3),A2+1)<"kdj.k"(9,9,3) and cross("kdj.k"(9,9,3),"kdj.d"(9,9,3)); KDJ底背离:STICKLINE(FILTER(B2>0,5),0,1,3,0),COLORYELLOW; DRAWTEXT(FILTER(B2>0,5),0.80,'KDJ底背离'),COLORYELLOW; A3:=BARSLAST(ref(cross("RSI.RSI1"(6,12,24),"RSI.RSI2"(6,12,24)),1)); B3:=ref(c,A3+1)>c and ref("RSI.RSI1"(6,12,24),A3+1)<"RSI.RSI1"(6,12,24) and cross("RSI.RSI1"(6,12,24),"RSI.RSI2"(6,12,24)); RSI底背离:STICKLINE(FILTER(B3>0,5),0,0.5,3,0),COLORffcc66; DRAWTEXT(FILTER(B3>0,5),0.25,'RSI底背离'),COLORffcc66; 2,COLORRED; C1:=BARSLAST(ref(cross("macd.dea"(12,26,9),"macd.diff"(12,26,9)),1)); D1:=ref(c,C1+1)<c and ref("macd.diff"(12,26,9),C1+1)>"macd.diff"(12,26,9) and cross("macd.dea"(12,26,9),"macd.diff"(12,26,9)); MACD顶背离:STICKLINE(FILTER(D1>0,5),2,1.25,3,0),COLOR0066FF; DRAWTEXT(FILTER(D1>0,5),1.47,'MACD顶背离'),COLOR0066FF; C2:=BARSLAST(ref(cross("kdj.d"(9,9,3),"kdj.k"(9,9,3)),1)); D2:=ref(c,C2+1)<c and ref("kdj.k"(9,9,3),C2+1)>"kdj.k"(9,9,3) and cross("kdj.d"(9,9,3),"kdj.k"(9,9,3)); KDJ顶背离:STICKLINE(FILTER(D2>0,5),2,1,3,0),COLORRED; DRAWTEXT(FILTER(D2>0,5),1.2,'KDJ顶背离'),COLORRED; C3:=BARSLAST(ref(cross("RSI.RSI2"(6,12,24),"RSI.RSI1"(6,12,24)),1)); D3:=ref(c,C3+1)<c and ref("RSI.RSI1"(6,12,24),C3+1)>"RSI.RSI1"(6,12,24) and cross("RSI.RSI2"(6,12,24),"RSI.RSI1"(6,12,24)); RSI顶背离:STICKLINE(FILTER(D3>0,5),2,1.5,3,0),COLORff00ff; DRAWTEXT(FILTER(D3>0,5),1.75,'RSI顶背离'),COLORff00ff; 发短消息 加为好友 个人主页 理想币652 个 注册时间2009-12-16 引用 使用道具 举报 评分 回复 TOP 有什么好玩 理想小五级同学UID1957469 帖子389 精华0 积分933 理想币652 个 阅读权限20 在线时间43 小时 注册时间2009-12-16 最后登录2010-1-12 查看详细资料 4楼 大 中 小 发表于 2010-1-12 16:56 只看该作者 ◇◇ 免费股票软件下载 上市公司人肉大搜索证券基础学习资料 ◇◇
指标修改技巧(6) 排查验证法 有时候我们在改指标时一时很难找到错误点,这时就需要有耐心,还要寻找一些小窍门,用其它办法达到自己的目的,这个小窍门就是用好大括号{ }。请看下面的指标,Var1:=RANGE(CLOSE,999999,1000000000); Var2:=FILTER(CLOSE>OPEN,5); Var3:=COUNT(CLOSE>OPEN,20); Var4:=COUNT(CLOSE<OPEN,20); Var5:=IF(Var3>Var4,CLOSE,HIGH); Var6:=EMA(Var5,13); Var7:=EMA(Var5,60); Var8:=(Var6-Var7)*10; 飞龙:MA(Var8,5); 火龙:MA(Var8,13); 龙行天下:MA(Var8,34); 神龙:IF( CROSS( 飞龙,火龙) AND 龙行天下<0,飞龙,0); STICKLINE(Var8>=0,Var8,Var8+1,6,0),colorred; STICKLINE(Var8<=0,Var8,Var8-1,6,0),colorgreen; STICKLINE(Var8>=0 AND Var8<REF(Var8,1),Var8,Var8+1,6,0),coloryellow; STICKLINE(Var8<=0 AND Var8>REF(Var8,1),Var8,Var8-1,6,0),colorgreen; Var9:=LONGCROSS(Var1,Var4,10); 海面:0, POINTDOT; 天空:5, POINTDOT; 海底:-5, POINTDOT; VarA:COUNT(Var9,10)=1; 第一步:打开指标编辑器,把指标源码复制粘贴到指标编辑器里,给指标随便取个名,点击测试通过,说明这个指标可用,没有不可识别的标示符,点击确认,回到K线图上调出该指标,看图形的效果。 第二步:在图形中提示《中间代码有错误(6)》,见图,说明该公式中的某条语句的代码有错误。 第三步:打开指标编辑器,用鼠标双击该指标进行修改. 仔细分析问题究竟出在什么地方。通过对源码的分析,首先应该是只有输出符的语句有错误,也就是有冒号的语句。在这个指标里面飞龙、火龙、龙行天下、神龙、VARA这5条有输出符的语句,其中最值得怀疑的是VARA这个语句,为什么呢?因为VARA用到了COUNT统计函数,并且引用了VAR9语句,而VAR9又用到了LONGCROSS维持交叉函数,在飞狐可以通过,在大智慧就可能认为有错误,所以不能正常显示。好了,把VarA:COUNT(Var9,10)=1;用大括号{}括起来。鼠标点测试公式,再点确认。 显示正常,验证了问题出在VARA上,然后把VARA和VAR9这两条语句删除即可,到此修改结束。 小窍门:遇到此类问题,可一一用大括号{}把带有冒号的有输出符的语句括起来逐一排查,直到查出问题所在的语句为止。下面是修改好的指标:Var1:=RANGE(CLOSE,999999,1000000000); Var2:=FILTER(CLOSE>OPEN,5); Var3:=COUNT(CLOSE>OPEN,20); Var4:=COUNT(CLOSE<OPEN,20); Var5:=IF(Var3>Var4,CLOSE,HIGH); Var6:=EMA(Var5,13); Var7:=EMA(Var5,60); Var8:=(Var6-Var7)*10; 飞龙:MA(Var8,5); 火龙:MA(Var8,13); 龙行天下:MA(Var8,34); 神龙:IF( CROSS( 飞龙,火龙) AND 龙行天下<0,飞龙,0); STICKLINE(Var8>=0,Var8,Var8+1,6,0),colorred; STICKLINE(Var8<=0,Var8,Var8-1,6,0),colorgreen; STICKLINE(Var8>=0 AND Var8<REF(Var8,1),Var8,Var8+1,6,0),coloryellow; STICKLINE(Var8<=0 AND Var8>REF(Var8,1),Var8,Var8-1,6,0),colorgreen; 海面:0, POINTDOT; 天空:5, POINTDOT; 海底:-5, POINTDOT;
{点击看本软件截图:58股票 公式网 http://www. 58gu. com 整理} |