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

请教for循环的问题 [开拓者 TB]

  • 咨询内容: 公式:
    Params
           
    Vars
            Numeric i(0);
            Numeric Count(0);
            Numeric CurrentBars;
            Numeric a;
            Numeric b;
    Begin
            CurrentBars=BarsSinceToday;
            Count=0;
            for i = 1 to CurrentBars
            {
                    a=High[i];
                    b=OpenD(0);
                    if(a>b)
                    {
                            Count=Count+1;
                            Commentary(Text(a));
                    }
            }
            Commentary("Count="+Text(Count));
            Commentary("BarsSinceToday="+Text(BarsSinceToday));
    End

    问题:
    当CurrentBars=BarsSinceToday 时,if(a>b)永远都是为真的,就算a<b,条件里的语句都会执行
    当CurrentBars=5 时,if(a>b)就是正常的

    请问这是什么原因呢?
    请大家帮忙看看, 谢谢

     

  • TB技术人员: 本帖最后由 ample 于 2013-10-31 10:44 编辑

    楼主的程序中,当BarsSinceToday=0时,也就是第一个bar,for循环条件不满足是无法执行 的,因此这里没有进行比较。这个问题楼主要分两种情况来考虑,=0的情况单独写代码

     

  • TB客服: 本帖最后由 ample 于 2013-10-31 10:45 编辑

    楼主的程序,到了一个新bar,循环是会把今日所有的bar重新计算一遍的(从今日第一个bar开始),不知道楼主希望达到的目的是什么,如果是想计算当日有多少个bar的high值比当日的开盘价高的话,不需要这么麻烦,设置一个序列变量,每个bar比较一次,保存下来就可以了,也是要区分当日第一个bar或者其它bar的情况的
    1. Vars
    2.         NumericSeries Count;
    3.         Numeric CurrentBars;
    4.         Numeric a;
    5.         Numeric b;
    6. Begin
    7.         CurrentBars = BarsSinceToday;
    8.         b=OpenD(0);
    9.                 a=High;
    10.             if (CurrentBars==0)
    11.                 {
    12.                         if(a>b)
    13.                         Count=1;
    14.                         Else
    15.                         count=0;
    16.                
    17.                 }
    18.                 Else
    19.                 {   
    20.                 if(a>b)
    21.                 {
    22.                         Count=Count[1]+1;
    23.                         Commentary("a"+Text(a));
    24.                 }
    25.                       }
    26.         Commentary("b"+Text(b));
    27.                 Commentary("Count="+Text(Count));
    28.         Commentary("BarsSinceToday="+Text(BarsSinceToday));
    29.                 PlotNumeric("aa",b);
    30. End
    复制代码

 

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

可联系技术人员 QQ: 1145508240  有需要帮忙请点击这里留言!!!进行 有偿 编写!不贵!点击查看价格!


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

相关文章

    没有相关内容