本帖最后由 技术006 于 2024-4-1 11:09 编辑
金字塔提供了 EXIT 控制语句,可以在公式的计算执行时直接退出整个公式的计算,但是在逐K线模式下使用了EXIT语句和统计性质函数时,应该特别注意EXIT语句的使用顺序,如果EXIT在统计类函数调用之前就退出了程序的计算,将会导致整个公式的计算结果出现意想不到的情况,举例如下:
[PEL] 复制代码 1 2 3 4 5 | 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] 复制代码 1 2 3 4 5 | 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中的这个问题在代码中的最前面加入如下语句即可:
|