金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 402|回复: 0

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

[复制链接]

34

主题

9006

帖子

5万

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-18
曾用名:
wenarm
发表于 2024-4-1 00:00 | 显示全部楼层 |阅读模式
本帖最后由 技术006 于 2024-4-1 11:14 编辑

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


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

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


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

[PEL] 复制代码
T:=MA(C,5);
IF NOT(ISLASTBAR) THEN GOTO QUITLINE; //最后一个周期跳过均线计算行
B:T;
QUITLINE@ EXIT;


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


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


[PEL] 复制代码
WARNING_DISABLE:1;



参考


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

https://www.weistock.com/bbs/forum.php?mod=viewthread&tid=18662



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

https://www.weistock.com/bbs/forum.php?mod=viewthread&tid=240


金字塔提供一对一VIP专业技术指导服务,技术团队实时响应您的日常使用问题与策略编写。联系电话:021-20339086
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 微信登录

本版积分规则

手机版|小黑屋|上海金之塔信息技术有限公司 ( 沪ICP备13035422号 )

GMT+8, 2024-11-16 01:32 , Processed in 0.254186 second(s), 23 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表