請教for循環(huán)的問題
作者:開拓者 TB 來源:cxh99.com 發(fā)布時間:2014年02月03日
- 咨詢內(nèi)容:
公式:
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
問題:
當(dāng)CurrentBars=BarsSinceToday 時,if(a>b)永遠(yuǎn)都是為真的,就算a<b,條件里的語句都會執(zhí)行
當(dāng)CurrentBars=5 時,if(a>b)就是正常的
請問這是什么原因呢?
請大家?guī)兔纯矗?謝謝
- TB技術(shù)人員:
本帖最后由 ample 于 2013-10-31 10:44 編輯
樓主的程序中,當(dāng)BarsSinceToday=0時,也就是第一個bar,for循環(huán)條件不滿足是無法執(zhí)行 的,因此這里沒有進(jìn)行比較。這個問題樓主要分兩種情況來考慮,=0的情況單獨(dú)寫代碼
- TB客服:
本帖最后由 ample 于 2013-10-31 10:45 編輯
樓主的程序,到了一個新bar,循環(huán)是會把今日所有的bar重新計(jì)算一遍的(從今日第一個bar開始),不知道樓主希望達(dá)到的目的是什么,如果是想計(jì)算當(dāng)日有多少個bar的high值比當(dāng)日的開盤價高的話,不需要這么麻煩,設(shè)置一個序列變量,每個bar比較一次,保存下來就可以了,也是要區(qū)分當(dāng)日第一個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
復(fù)制代碼