本帖最后由 技术006 于 2024-4-1 11:09 编辑
金字塔提供了 EXIT 控制语句,可以在公式的计算执行时直接退出整个公式的计算,但是在逐K线模式下使用了EXIT语句和统计性质函数时,应该特别注意EXIT语句的使用顺序,如果EXIT在统计类函数调用之前就退出了程序的计算,将会导致整个公式的计算结果出现意想不到的情况,举例如下:
[PEL] 复制代码 cond1:=c>o;
wz1:BARSLAST(cond1),NODRAW,COLORWHITE;
if barpos<100 THEN exit;
xx:=c;
aa:=xx[BARPOS-wz1];
上述的公式,在逐K线模式下,当执行的BAR再小于100时就直接退出了整个公式的计算,初看起来是没有问题,但是仔细看确发现在EXIT语句之后还有BARSLAST函数,这样就会导致BARSLAST函数在100周期之前的没有得到有效的执行,从而导致整个计算结果出现异常。
这样调整公式就正常了:
[PEL] 复制代码 cond1:=c>o;
wz1:BARSLAST(cond1),NODRAW,COLORWHITE;
if barpos<100 THEN exit;
xx:=c;
aa:=xx[BARPOS-wz1];
将EXIT放到统计类函数之后执行后,这样就可以得到正确完整的结果。 同理在IF语句中使用统计类函数时,同样存在这样的问题,详细请参考 https://www.weistock.com/bbs/forum.php?mod=viewthread&tid=240
若需要禁止提示EXIT中的这个问题在代码中的最前面加入如下语句即可:
[PEL] 复制代码 WARNING_DISABLE:2;
|