以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://weistock.com/bbs/index.asp) -- 公式模型编写问题提交 (http://weistock.com/bbs/list.asp?boardid=4) ---- 有关GOTO语句在逐K线模式下使用的注意事项 (http://weistock.com/bbs/dispbbs.asp?boardid=4&id=43984) |
-- 作者:王锋 -- 发布时间:2013/1/2 23:10:25 -- 有关GOTO语句在逐K线模式下使用的注意事项 金字塔为了满足投资者更好更方便灵活的编写程序化交易策略,提供了目前大多软件所不提供的GOTO语句,通过GOTO语句我们可以非常方便的在语句中根据不同的条件来跳转执行。 但是对于逐K线模式下,如果对GOTO语句使用不当,有可能出现问题的,最常见的问题就是对于统计类函数,如果没有在一个完成的周期对他执行后,是有可能出现我们意想不到的错误结果的,比如下面的公式:
IF NOT(ISLASTBAR) THEN GOTO QUITLINE; //最后一个周期跳过均线计算行
该公式在序列模式下是没有问题的,但是在逐K线下,由于在最后一根BAR之前的所有BAR中,B:MA(C,5);这行语句都没有得到执行,故虽然最后一根BAR执行到了,我们也无法统计出正确的结果,解决方法就是将可能因为GOTO跳转语句避开,将MA放到他们的前面去执行,让他能够保证在每个BAR周期上都能得到完整执行。
T:=MA(C,5); IF NOT(ISLASTBAR) THEN GOTO QUITLINE; //最后一个周期跳过均线计算行 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 |
-- 作者:左岸 -- 发布时间:2013/1/2 23:18:50 -- 学习了~ |
-- 作者:guotx2010 -- 发布时间:2013/1/3 10:19:02 -- 又学到了。
|
-- 作者:lyss0407 -- 发布时间:2014/12/27 9:28:48 -- |