金字塔提供了 EXIT 控制语句,可以在公式的计算执行时直接退出整个公式的计算,但是在逐K线模式下使用了EXIT语句和统计性质函数时,应该特别注意EXIT语句的使用顺序,如果EXIT在统计类函数调用之前就退出了程序的计算,将会导致整个公式的计算结果出现意想不到的情况,举例如下:
if barpos<100 THEN exit;
cond1:=c>o;
wz1:BARSLAST(cond1),NODRAW,COLORWHITE;
xx:=c;
aa:=xx[BARPOS-wz1];
上述的公式,在逐K线模式下,当执行的BAR再小于100时就直接退出了整个公式的计算,初看起来是没有问题,但是仔细看确发现在EXIT语句之后还有BARSLAST函数,这样就会导致BARSLAST函数在100周期之前的没有得到有效的执行,从而导致整个计算结果出现异常。
这样调整公式就正常了:
cond1:=c>o;
wz1:BARSLAST(cond1),NODRAW,COLORWHITE;
if barpos<100 THEN exit;
xx:=c;
aa:=xx[BARPOS-wz1];
将EXIT放到统计类函数之后执行后,这样就可以得到正确完整的结果。
同理在IF语句中使用统计类函数时,同样存在这样的问题,详细请参考 http://www.weistock.com/bbs/dispbbs.asp?boardid=4&Id=130
若需要禁止提示EXIT中的这个问题在代码中的最前面加入如下语句即可:
WARNING_DISABLE:2;
搞清楚,只是提示你,并不是报错
说明你公式出现了语法错误。
请将不能编译的公式贴过来,我们看看