您现在的位置:程序化交易>> 期货公式>> 金字塔等>> 其他期货软件知识>>正文内容

发现个goto 很奇怪的问题 [金字塔]

  • 咨询内容:

    if 金叉=0 then goto 没金叉@;

     

    if 金叉>0 && h>h[金叉时间] then 金叉:=0;
    if 金叉>0 && l<if(barslast(破顶)>5,l[金叉时间+1],l[金叉时间+1]-2*MINDIFF) && 突破>0 then begin 突破:=-1; 金叉:=0; end

    没金叉@;

     

     

    上面的程序,没注释掉第一句goto时,当全局变量“金叉=1”时,第3行里的“if(barslast(破顶)>5”执行效果大于号反过来了;注释掉第一行后,执行效果是正确的。也就是说,有用goto时,把第2行里改成“if(barslast(破顶)<5”执行就恢复为没用goto时的正确结果。

     

    于是我用DRAWNUMBER显示barslast(破顶)数值,发现也是对的,就是大于号的逻辑出错。

     

  • 金字塔客服: 大于号肯定是没问题的,楼主可以不可以发一个完整的能够重现你认为的问题的代码出来让我们看看

     

  • 用户回复: 不应该是goto语句导致的,goto只能起到跳转作用。还请楼主详细检查一下自己的代码。

     

  • 网友回复:

    问题主要出在下面这句话上,因为你把他放在了GOTO语句的后面,会因为前面的跳转语句影响到后面的统计,如果你在逐K线模式下运行,那么你必须要进行改进

    barslast(破顶)>5

     

    改进如下:

     

    AA:=barslast(破顶)>5;

    if 金叉=0 then goto 没金叉@;

     

    if 金叉>0 && h>h[金叉时间] then 金叉:=0;
    if 金叉>0 && l<if(AA,l[金叉时间+1],l[金叉时间+1]-2*MINDIFF) && 突破>0 then begin 突破:=-1; 金叉:=0; end

    没金叉@;

     

    保证含有统计类的函数在条件跳转语句之前能够正常计算即可

 

有思路,想编写各种指标公式,程序化交易模型,选股公式,预警公式的朋友

可联系技术人员 QQ: 262069696  点击在线交流进行 有偿 编写!不贵!点击查看价格!

 


【字体: 】【打印文章】【查看评论

相关文章

    指定的模型还没有相关内容!