您现在的位置:程序化交易>> 期货公式>> 交易开拓者(TB)>> 开拓者知识>>正文内容

求助:if 判断不成立时候也执行 [开拓者 TB]

  • 咨询内容: 想写一个如果10天内不创新高就开空的程序,但是发现if 判断句内置条件不满足也运行,不知道如何解决。
    criteria用来判断当天是否是新高,
    criteriahigh用来判断10天是否创过新高,
    但是发现即便if 里的condition是false情况下,criteria还是会被赋值为1,求教这是什么问题?


    Params
            Numeric days(10);  //多少天不创新高就会出现大幅回调
            Numeric highrange(50); // 新高的范围是多少
    Vars
            Numericseries criteria(0);
            numericseries criteriahigh(0);
            bool condition;
            numeric myhigh;

    Begin
            myhigh=highest(close,highrange);
            condition= myhigh==Close;
           
            If (condition)
            {
                    criteria=1;
            }
           
            criteriahigh=Highest(criteria,days);
           
            if (criteriahigh==0)
            {
                    sellshort(close,1);
            }
    End

     

  • TB技术人员: criteria在这里声明的是序列变量,只要有过一次被赋值后,如果没有再次赋值改变前,之后的每一个bar都是延续之前的值。

     

  • TB客服: 多谢老师指导,明白了,在开头加一个criteria=0,每次赋个初始值就解决了,但是还有点疑问,就是一开始condition是不成立的情况,为什么第一个criteria也会被赋值1?不应该是开始的Criteria一直是0,直到condition满足后,criteria之后全变成1么?

     

  • 网友回复:
    haniqwang 发表于 2016-4-19 08:58
    多谢老师指导,明白了,在开头加一个criteria=0,每次赋个初始值就解决了,但是还有点疑问,就是一开始condi ...

    上述代码的条件,在第一个bar上就已经满足了condition.
    公式里加上二句调试信息就可以清楚看到。
    1. Begin
    2.         myhigh=highest(close,highrange);
    3.         condition= myhigh==Close;
    4.         Commentary("myhigh="+text(myhigh));
    5.         Commentary("close="+text(close));
    6.         If (condition)
    7.         {
    8.                 criteria=1;
    9.         }
    复制代码

     

  • 网友回复: 感谢老师!

 

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

可联系技术人员 QQ: 511411198  点击这里给我发消息进行 有偿 编写!不贵!点击查看价格!


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

相关文章

    没有相关内容