请教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的情况的- Vars
-         NumericSeries Count;
-         Numeric CurrentBars;
-         Numeric a;
-         Numeric b;
- Begin
-         CurrentBars = BarsSinceToday;
-         b=OpenD(0);
-                 a=High;
-             if (CurrentBars==0) 
-                 {
-                         if(a>b)
-                         Count=1;
-                         Else
-                         count=0;
-                 
-                 }
-                 Else
-                 {    
-                 if(a>b)
-                 {
-                         Count=Count[1]+1;
-                         Commentary("a"+Text(a));
-                 }
-                       }
-         Commentary("b"+Text(b));
-                 Commentary("Count="+Text(Count));
-         Commentary("BarsSinceToday="+Text(BarsSinceToday));
-                 PlotNumeric("aa",b);
- End
 
- Vars
有思路,想编写各种指标公式,程序化交易模型,选股公式,预警公式的朋友
可联系技术人员 QQ: 1145508240  进行 有偿 编写!(不贵!点击查看价格!)
                        
相关文章
- 
                        没有相关内容
                       

 
                     会员登录/注册
会员登录/注册