请教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 进行 有偿 编写!(不贵!点击查看价格!)
相关文章
-
没有相关内容