程序化交易策略變量生存周期
作者:開拓者 TB 來(lái)源:cxh99.com 發(fā)布時(shí)間:2012年12月03日
- 咨詢內(nèi)容: 新手在接觸TB時(shí),對(duì)變量的生存周期一般是沒有概念的,學(xué)過編程C 或 C++語(yǔ)言的,肯定知道變量的作用域這個(gè)概念,但對(duì)于生存周期一般接觸還是比較少的。
在使用時(shí),我也總是納悶有時(shí)變量使用Numeric 類型,運(yùn)算就是得不到想要的結(jié)果
但全部使用NumericSeries 類型,有覺得沒有必要,讓內(nèi)存占用持續(xù)上升。
(對(duì)新手解釋一下:NumericSeries 相當(dāng)于倉(cāng)庫(kù)來(lái)了新值,就往里邊放;相當(dāng)于無(wú)限大的數(shù)組
而Numeric 則里邊只能存一個(gè)值,來(lái)了新值,就把過去的值扔到。)
擴(kuò)展下:無(wú)限制使用序列變量,也是部分網(wǎng)友反映,運(yùn)行1~2小時(shí)后,內(nèi)存用量上升的原因。
言歸正傳:為什么有時(shí)使用Numeric 類型,運(yùn)算就是得不到想要的結(jié)果呢?
讓我們做個(gè)測(cè)試:
例1:周期一分鐘
Params
Vars
Numeric YourVar1(0);
NumericSeries YourVar2(0);
Begin
//這里加入你的程序...
FileAppend("d:\\alive.log","賦值前-"++TimeToString(time)+"--Y1="+Text(Yourvar1)+"--Y2="+Text(Yourvar2));
If(time>=0.095500 && time <0.095600) {yourvar1=1;Yourvar2=2;}
FileAppend("d:\\alive.log","賦值后-"+TimeToString(time)+"--Y1="+Text(Yourvar1)+"--Y2="+Text(Yourvar2));
End
結(jié)果如下
未命名.GIF (4.87 KB, 下載次數(shù): 0) 2012-8-14 09:38:49 上傳
- TB技術(shù)人員: 全局變量是在每一個(gè)TICK都有一個(gè)固定的值,只要沒有語(yǔ)句修改,這個(gè)值不會(huì)改變,不需要申明,全局變量可直接使用