請教for循環(huán)的問題 [開拓者 TB]
- 咨詢內(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 時(shí),if(a>b)永遠(yuǎn)都是為真的,就算a<b,條件里的語句都會(huì)執(zhí)行
當(dāng)CurrentBars=5 時(shí),if(a>b)就是正常的
請問這是什么原因呢?
請大家?guī)兔纯矗?謝謝
- TB技術(shù)人員:
本帖最后由 ample 于 2013-10-31 10:44 編輯
樓主的程序中,當(dāng)BarsSinceToday=0時(shí),也就是第一個(gè)bar,for循環(huán)條件不滿足是無法執(zhí)行 的,因此這里沒有進(jìn)行比較。這個(gè)問題樓主要分兩種情況來考慮,=0的情況單獨(dú)寫代碼 - TB客服:
本帖最后由 ample 于 2013-10-31 10:45 編輯
樓主的程序,到了一個(gè)新bar,循環(huán)是會(huì)把今日所有的bar重新計(jì)算一遍的(從今日第一個(gè)bar開始),不知道樓主希望達(dá)到的目的是什么,如果是想計(jì)算當(dāng)日有多少個(gè)bar的high值比當(dāng)日的開盤價(jià)高的話,不需要這么麻煩,設(shè)置一個(gè)序列變量,每個(gè)bar比較一次,保存下來就可以了,也是要區(qū)分當(dāng)日第一個(gè)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
有思路,想編寫各種指標(biāo)公式,程序化交易模型,選股公式,預(yù)警公式的朋友
可聯(lián)系技術(shù)人員 QQ: 1145508240 進(jìn)行 有償 編寫!(不貴!點(diǎn)擊查看價(jià)格!)
相關(guān)文章
-
沒有相關(guān)內(nèi)容