飞禽走兽机打码改分:怎样编写大智慧指标公式?

来源:百度文库 编辑:九乡新闻网 时间:2024/04/28 09:36:38
相关搜索:公式,指标,智慧,编写
目前大多数证券分析软件都具有指标分析和条件选股的功能,但只有用户可以自己编制算法公式的系统才是真正实用的,因为:
许多软件的指标和选股功能是黑箱操作,也就是说,其内部算法是不公开的。这样用户并不知道其指标和选股到底是如何运作的、可靠性有多高、前提条件
是什么,因而也难以决定是否采用指标或选股的结果。这样的指标和选股只有宣传上的意义而没有任何实际意义。
许多软件的选股功能都不够强大和灵活。例如有些软件的条件选股功能只能让用户按照特定的模式进行设定,适用面很窄。
公式系统类似于一种编程语言,用户可以数学公式的形式实现任何自己期望的技术指标和选股条件等。可编制的公式可以完全公开算法,用户可以自行分析
、评价和修改,做到心中有数。
公式系统的作用是什么呢?公式系统其实就是对一系列随时间变化的原始数据组序列进行代数和逻辑计算。为什么是数据组序列呢?因为每一个时间周期(
即相邻两组数据间的时间间隔)都包含了一组原始数据,如开高低收量额,公式系统能对其中的任何原始数据进行操作。使用者定义出如何对原始数据进行处理
得到一个新的数据,公式系统读出原始数据并按要求计算出使用者定制的数据,并以曲线、图形、指示等形式显示出来。
公式系统可以编辑四种类型的公式,分别是技术指标、交易系统、条件选股和五彩K线公式。技术指标公式是最基本的公式,它用于指标图形的绘制。技术指
标公式结合选股条件逻辑判断表达式,即得到条件选股公式,用于条件选股。技术指标公式结合买卖逻辑判断表达式,得到交易系统公式,用于交易系统指示。
技术指标公式结合色彩逻辑判断表达式,即得到K线模式公式,用于描述特定的K线模式。公式的编辑在公式编辑器中完成。
公式系统处理的原始数据的分析周期(即相邻两组数据间的时间间隔)可以从1分钟到1000天间的任意值,也可以是分笔成交数据,我们用鼠标把一个公式拖
到某只证券的某个周期的图形分析窗口,则该公式处理这个周期的原始数据,如开高低收量额,改变分析窗口显示的分析周期,则公式处理新的分析周期的数据。
公式系统对数据的运算是基于一系列函数,函数中除ZIG之字转向函数类和BACKSET函数外,其余函数均满足时间不变性,即时间靠后的数据不对时间靠前的
结果产生影响。
收藏分享评分
回复引用
订阅TOP
weiji300200
发短消息加为好友
weiji300200 当前离线
UID
3
帖子
87
精华
1
积分
359
威望
66 点
金钱
123 金
阅读权限
100
在线时间
8 小时
注册时间
2008-5-3
最后登录
2010-4-13


版主

2#
发表于 2008-5-17 08:43 |只看该作者    踩窝窝   送礼物   问候Ta
12.
符号编公式用
【】〓☆★○●◎◇◆□■△▲ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ→←↑↓^§∧∨∪∩∈∞∝⊥∽√┣┫┻╋┼αβδωΩφΦΨΠ┳
13.
当收盘价收在7天平均线上,K线都为阳线(红色),收盘价收在7天平均线下,K线都为阴线(录色),在主图怎样写?
stickline(c>=ma(c,7),c,o,7,0),colorred;
stickline(c>=ma(c,7),h,l,1,0),colorred;
stickline(cstickline(c14.
20日内次高点
AA:=HHVBARS(C,20);
C=MAX(HHV(C,AA),REF(HHV(C,19-AA),AA+1));
15.
要选出收市价离125天均线不远,
ABS(C-MA6)/MA6<=0.01
20.
写均线MA1二次上穿MA4公式!
COUNT(CROSS(ma1,ma4),20)=2;
小指标公式编码集中(五)
这是在网上摘录的,仅供参考
编写公式时常用的通式
应用 FXJ-4 的一些函数编写公式时,常用的通式:
{设A,B,R为三条曲线;N,M等为参数。如:A:ma(c,N) ; B:=ma(c,M); R:=c/ref(c,1)-1;等。。。}
{一.曲线在N天内的平均变化率}
Fa:=(A/ref(A,N)-1)/N; Fb:=(B/ref(B,N)-1)/N; Fr:=(R/ref(R,N)-1)/N;
{二.变动角}
∮a:=atan(Fa);    ∮b:=atan(Fb);  ∮r:=atan(Fr);
{三.曲线上相距N天的两点的连线的斜率}
Ka:=(A-ref(A,N))/N;   Kb:=(B-ref(B,N))/N; Kr:=(R-ref(R,N))/N;
{四.倾角}
∠a:=atan(Ka);   ∠b:=atan(Kb);   ∠r:=atan(Kr);
{五.交*点}
Cab:=cross(A,B);{交*} Jab:=longcross(A,B,N);{维持 -交*}
JYa:=between(A,N,M);{介于} FWa:=range(A,N,M);{范围}
{六.下拐点(由下向上转)}
xD1:=llvbars(A,N)=M;{以N日最低点}
xD2:=ref(count(A-ref(A,1)<=0,N)=N,M) and count(A-ref(A,1)>0,M)=M;{以M日变化量的正负}
xD3:=ref(count(∠a-ref(∠a,1)<=0,N)=N,M) and ∠a>0;{以当日变化角的正负}
{七.上拐点(由上向下转)}
sD1:=hhvbars(A,N)=M;{以N日最低点}
sD2:=ref(count(A-ref(A,1)>=0,N)=N,M) and count(A-ref(A,1)<0,M)=M;{以当日变化量的正负}
sD3:=ref(count(∠a-ref(∠a,1)>=0,N)=N,M) and ∠a<0;{以当日变化角的正负}
{八.位置(求得交*点/拐点到当前的周期)}
Wz1:=barslast(Cab);{第一(交*)点的位置}
Wz2:=ref(Wz1,Wz1+1)+Wz1+2;{第二(交*)点的位置}
Wz3:=ref(Wz1,Wz2+1)+Wz2+2;{第三(交*)点的位置}
Wz4:=ref(Wz1,Wz3+1)+Wz3+2;{第四(交*)点的位置}
Wz5:=ref(Wz1,Wz4+1)+Wz4+2;{第五(交*)点的位置}
{Wzn:=ref(Wz1,Wz(n-1)+1)+Wz(n-1)+2;}
{九.曲线A叠加曲线B}
F:=A/ref(A,1)-1;{A的变化率}
Js:=ref(B,barscount(c));{叠加位置(初始)}
DJ:=sum(F,0)+1)*Js;{叠加曲线(初始位置)}
Jd:=ref(B,barslast(条件));{叠加位置(定点)}
Dh:=(sum(F,0)+1)*Jd;{叠加曲线(预定位置)}
都学会了,那恭喜你加入汇编公式高手行列.
重装大智慧不用重装指标的好方法
打开DZH文件夹里的IND文件,将GWIND.SEL(GwInd.sel)文件复制保存下来。重新安装DZH后再将这个文件覆盖到IND里面,打开DZH,你会发现以前的指标都回来了,这
样就不用一个一个的导出了,是不是很方便呀。
QUOTE:
系统重装----如何快速重装飞狐,并保留原有的数据、公式等用户资源?
1、 假设飞安装在D:\FoxTrader-v3,将D:\Foxtrader-v3之下的User、DATA、FmlDLL、StkBlock、Memo五个文件夹、regcode.bin注册文件备份,例如新建一个
D:\FoxOld文件夹,把这五个文件夹转移到FoxOld文件夹下。
2、卸载飞狐。
3、重新安装飞狐在D:\Foxtrader-v3。
4、重装后,将以上备份的D:\FoxOld之下的User、DATA、FmlDLL、StkBlock、Memo五个文件夹、regcode.bin,覆盖新装的Foxtrader-v3下的同名文件即可,这样
既能重装又能保留原来的东西,无须重装数据和公式。
重装大智慧后不再重装指标、重设自选板块的方法
1.不用重装指标的方法:
打开DZH文件夹里的IND文件,将GWIND.SEL(GwInd.sel)文件复制保存下来。重新安装DZH后再将这个文件覆盖到IND里面。
最后打开DZH,你会发现以前的指标都有了,这样就不用一个一个的导出了,是不是很方便呀。
2.不用重新设定自选板块的方法:
打开DZH文件夹里的CFG文件,找到了一个文件:dzh\cfg\netwrkic.bk2;
"netwrkic.bk2"这个文件就包含了全部自选板块。平时复制一个,重装软件时拷贝一下即可。
QUOTE:
指标修改技巧
观察鉴别法
观察鉴别法是一种比较直观的通过指标编辑器的提示来检查指标语句中是否有差错的方法,当你在编辑指标或修改指标时必须要进行测试,只有没有病句
的指标才能通过测试,否则,指标中肯定会有这样或那样的病句。遇到有病句的指标时,指标编辑器会提示病句的所在位置,缺少什么或有什么函数或代码不能
识别等,我们通过观察就能一目了然,准确地找到修改点。这是一种最常用也是最简单的方法,对一些不做大的改动的指标很有效。下面我们把这个飞狐格式的
指标改成大智慧格式的:
{牛熊先知}
VAR1:=EMA(EMA(EMA(CLOSE,5),2),1);
牛熊先知: (VAR1-REF(VAR1,1))/REF(VAR1,1)*1,COLORRED COLORSTICK;{在COLORRED COLORSTICK之间缺逗号}
牛熊神经: EMA(牛熊先知,13),COLORYELLOW;
牛熊界线: 0, COLORMAGENTA;{飞狐颜色代码,粉色,改为大智慧可用的COLORFF00FF即可}
VAR2:=AMOUNT/VOL/100;
VAR3:=MAX(ABS(HIGH-VAR2),ABS(VAR2-LOW));
VAR4:=ABS((OPEN+CLOSE)/2-VAR2);
VAR5:=5;
VAR6:=(VAR3+VAR4)/VAR2*50;
牛熊变换: IF(CROSS(VAR6,VAR5),0.008,0),COLORCYAN;{飞狐颜色代码,青色,改为大智慧可用的COLORFFCC66即可}
方法:打开指标编辑器,把指标源码复制粘贴到指标编辑器里,给指标随便取个名,点击测试,不能通过,(大智慧5.19以前版本的是这样,升级到5.20后对一些
病句也能通过,给修改带来不便,所以要先观察鉴别)该指标点击测试能通过,但仔细查看在指标编辑器里你看到了什么?有两句颜色代码呈黑色!为了看得清楚
,有问题的地方画了黑线,只要分别改成大智慧能识别的颜色代码即可。第二句在COLORRED与 COLORSTICK之间没有","分隔,为了看清楚也标注了一条黑线,好
,在英文状态下输入一个","逗号,鼠标点测试,测试通过,再点确认。到此指标就改好了。把改好的指标设为常用,回到K线图调出指标,看一看指标的效果.
下面是改好的指标:
{牛熊先知}
VAR1:=EMA(EMA(EMA(CLOSE,5),2),1);
牛熊先知: (VAR1-REF(VAR1,1))/REF(VAR1,1)*1,COLORRED,COLORSTICK;
牛熊神经: EMA(牛熊先知,13),COLORYELLOW;
牛熊界线: 0, COLORFF00FF;
VAR2:=AMOUNT/VOL/100;
VAR3:=MAX(ABS(HIGH-VAR2),ABS(VAR2-LOW));
VAR4:=ABS((OPEN+CLOSE)/2-VAR2);
VAR5:=5;
VAR6:=(VAR3+VAR4)/VAR2*50;
牛熊变换: IF(CROSS(VAR6,VAR5),0.008,0),COLORFFCC66;
注意:所有的标点符号和字母都必须是在英文状态下输入,否则不能通过,这样的情况也是常有的,遇有此类问题按上述方法进行纠正。
顺藤摸瓜法
飞狐股软支持在一个指标中允许有同名的指标语句,而大智慧是不允许的,把这样的指标直接引用的大智慧中是不能通过的(大智慧5.20版本的也能通过
,可见新版本对判断指标中的错误这项功能没有了),即使测试通过了也不能用,这就需要逐句地进行顺藤摸瓜来修改。下面是一个飞狐的组合指标:
Var2:=(H+L+O+2*C)/5;{与下面赋值VAR2重名}
CHH低吸线:EMA(SLOPE(Var2,21)*20+Var2,55),circledot;
DrawIcon(Ref(C,1)CHH低吸线,0.98*L,1);
DrawIcon(Ref(C,1)>CHH低吸线 and Cbb:=llV(H,1);
神顶抄底逃顶线:FORCAST(FORCAST(bb,15),15), COLORyellow,LINETHICK2;
神顶逃顶抄底线:FORCAST(FORCAST(bb,25),25), COLORred,LINETHICK2;
If(Slope(神顶抄底逃顶线,2)>0,CHH低吸线,C),circledot,ColorMagenta;
C,circledot,ColorBlack;
{K线}
Var2:=(C*2+H+L)/4;{与上面赋值VAR2重名}
Var3:=EMA(Var2,3);
Var4:=EMA(Var3,6);
L1:=EMA(Var2,3);
L2:=EMA(Var3,4);
L3:=EMA(Var4,5);
Var5:=REF(L1,1)>L1 AND L1>L2;
STICKLINE(L1>=L2,H,L,1,0),COLORRED;
STICKLINE(L1STICKLINE(L1>=L2,C,O,6,0),COLORRED;
STICKLINE(L1STICKLINE(Var5,H,L,1,0) COLORYellow;{缺少逗号}
STICKLINE(Var5,C,O,6,0) COLORYellow;{缺少逗号}
第一步:打开指标编辑器,把指标源码复制粘贴到指标编辑器里,给指标随便取个名或输入原指标的名字,点击测试,能通过,但是也要仔细排查。
第二步:在编辑器里画黑线处ColorMagenta这个颜色代码大智慧不能识别(在飞狐指标中该颜色代码是粉色),把它改成能识别的粉色代码ColorFF00FF
,用鼠标点测试,此时又提示没有定义的标示符,用鼠标点确定,在编辑器里显示兰色条处有C,circledot,ColorBlack;
第三步:在编辑器里画黑线处ColorBlack颜色代码大智慧不能识别(在飞狐指标中该颜色代码是兰色),用鼠标点确定,把它改成能识别的蓝色代码
ColorBLUE。
第四步:VAR2这个变量与上面的VAR2变量重名,在编辑器里画黑线处VAR2,也就是说指标中存在2个用VAR2定义的语句,大智慧是不允许的,只有把这个
VAR2变量改成不与第一个VAR2重名变量重名的变量即可,如改成V2,因为VAR3和L1变量引用了VAR2,所以再把VAR3、L1中的VAR2都改成V2。见图:
第五步:我们看到最后2条语句与颜色代码之间没有逗号,在编辑器里画黑线处见图:
好,再把这两句再加上逗号,点测试通过,到此指标修改结束。下面是修改后的指标(可做主副图):
Var2:=(H+L+O+2*C)/5;
CHH低吸线:EMA(SLOPE(Var2,21)*20+Var2,55),circledot;
DrawIcon(Ref(C,1)CHH低吸线,0.98*L,1);
DrawIcon(Ref(C,1)>CHH低吸线 and Cbb:=llV(H,1);
神顶抄底逃顶线:FORCAST(FORCAST(bb,15),15), COLORyellow,LINETHICK2;
神顶逃顶抄底线:FORCAST(FORCAST(bb,25),25), COLORred,LINETHICK2;
If(Slope(神顶抄底逃顶线,2)>0,CHH低吸线,C),circledot,Colorff00ff;
C,circledot,ColorBlue;
{K线}
V2:=(C*2+H+L)/4;
Var3:=EMA(V2,3);
Var4:=EMA(Var3,6);
L1:=EMA(V2,3);
L2:=EMA(Var3,4);
L3:=EMA(Var4,5);
Var5:=REF(L1,1)>L1 AND L1>L2;
STICKLINE(L1>=L2,H,L,1,0),COLORRED;
STICKLINE(L1STICKLINE(L1>=L2,C,O,4,0),COLORRED;
STICKLINE(L1STICKLINE(Var5,H,L,1,0),COLORYellow;
STICKLINE(Var5,C,O,4,0),COLORYellow;
通过画面看到K线比较粗,效果不好,把画柱线如STICKLINE(L1>=L2,C,O,6,0),COLORRED中的宽度为6的改成4即可,这里有3条语句宽度为6的,都改成4,
效果与主图上的K线宽窄是一样的了。
这个指标的修改过程是经过一步一步不断的修改才通过测试的,所以我们修改指标时,只要不能通过测试就要坚持修改下去,这样才能成功。
指标减肥法
指标公式是由若干条语句组成的,在网上我们常常看到有的指标少则几十条,多则近百条,指标大的让人望而生畏。因为指标语句之间关联密切,互相调
用,层层嵌套,有时编者也搞不清楚哪些语句被调用哪些没被调用,或者来不及校对,遗留下许多废语句也在所难免。要知道,我们在使用指标时计算机对每条
语句都要进行计算后才得出结果,太多的废语句会使计算速度降低(当然我们凭肉眼是看不出来的),而且占用空间。说不定你现在使用的指标就肥指标,特别
是很长的指标,有时间还是给指标减肥吧!下面结合实例介绍减肥的方法:
{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;
要点:给指标减肥要掌握这样一个要点,首先要找在图上能显示线条、柱形线,脉冲信号、图形等语句引用了哪些其它语句,没引用的就是废语句。把这
两个指标的图形比较一下,你发现了什么?是不是在某些地方有相同之处。
解除时间限制法
时间限制是一种加密的方法,其原理是在指标中加入时间函数,把时间设定在一定的使用范围内,当超过设定的时间之后,指标图形中的线条和有关信号
消失或失真,造成指标不能继续使用。用时间限制加密的形式有多种,仅举以下三种例子加以说明解除的方法:请看这个主图指标:
{ 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 CLOSEVar1F:=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买入: 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个解除时间限制的方法,不论采取哪一种都能解除时间限制,哪个方便就采取哪个。试着改一改吧!
填补法
顶底背离: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)"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)"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)"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)"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)"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)"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;
排查验证法
有时候我们在改指标时一时很难找到错误点,这时就需要有耐心,还要寻找一些小窍门,用其它办法达到自己的目的,这个小窍门就是用好大括号{  }。
请看下面的指标,
Var1:=RANGE(CLOSE,999999,1000000000);
Var2:=FILTER(CLOSE>OPEN,5);
Var3:=COUNT(CLOSE>OPEN,20);
Var4:=COUNT(CLOSEVar5:=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 Var8STICKLINE(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(CLOSEVar5:=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 Var8STICKLINE(Var8<=0 AND Var8>REF(Var8,1),Var8,Var8-1,6,0),colorgreen;
海面:0, POINTDOT;
天空:5, POINTDOT;
海底:-5, POINTDOT;