Rss & SiteMap

金字塔客服中心 - 专业程序化交易软件提供商 http://www.weistock.com/bbs/

专业程序化软件提供商
共4 条记录, 每页显示 10 条, 页签: [1]
[浏览完整版]

标题:有关GOTO语句在逐K线模式下使用的注意事项

1楼
王锋 发表于:2013/1/2 23:10:25

    金字塔为了满足投资者更好更方便灵活的编写程序化交易策略,提供了目前大多软件所不提供的GOTO语句,通过GOTO语句我们可以非常方便的在语句中根据不同的条件来跳转执行。

    但是对于逐K线模式下,如果对GOTO语句使用不当,有可能出现问题的,最常见的问题就是对于统计类函数,如果没有在一个完成的周期对他执行后,是有可能出现我们意想不到的错误结果的,比如下面的公式:

 

IF NOT(ISLASTBAR) THEN GOTO QUITLINE; //最后一个周期跳过均线计算行
B:MA(C,5);
QUITLINE@ EXIT;

 

该公式在序列模式下是没有问题的,但是在逐K线下,由于在最后一根BAR之前的所有BAR中,B:MA(C,5);这行语句都没有得到执行,故虽然最后一根BAR执行到了,我们也无法统计出正确的结果,解决方法就是将可能因为GOTO跳转语句避开,将MA放到他们的前面去执行,让他能够保证在每个BAR周期上都能得到完整执行。

 

T:=MA(C,5);

IF NOT(ISLASTBAR) THEN GOTO QUITLINE; //最后一个周期跳过均线计算行
B:T;

QUITLINE@ EXIT;

 

经过上述的修改,我们的MA就可以按照我们的要求,正确的工作了。

 

若需要禁止提示GOTO语句中的这个问题在代码中的最前面加入如下语句即可:

  WARNING_DISABLE:1;

 

 

参考

有关EIXT语句在逐K线模式下使用的注意事项

http://www.weistock.com/bbs/dispbbs.asp?boardid=4&Id=43974

 

函数不能在IF THEN FOR循环控制语句中被引用的原理和解决方案 

http://www.weistock.com/bbs/dispbbs.asp?boardid=4&Id=130

2楼
左岸 发表于:2013/1/2 23:18:50

学习了~

3楼
guotx2010 发表于:2013/1/3 10:19:02

又学到了。

 

4楼
lyss0407 发表于:2014/12/27 9:28:48
图片点击可在新窗口打开查看
共4 条记录, 每页显示 10 条, 页签: [1]


Powered By Dvbbs Version 8.3.0
Processed in 0.02539 s, 3 queries.