關(guān)于全局變量的建議
作者:開拓者 TB 來源:cxh99.com 發(fā)布時間:2023年03月28日
-
咨詢內(nèi)容:
隨著模型的發(fā)展,全局變量500個不夠用了,同時,多個策略,先每個策略留一段,但策略改進后,后面發(fā)現(xiàn)留少了,結(jié)果一個策略在多個段內(nèi),程序不易讀,又容易錯。造成這個情況是全部變量不能由用戶自己定義。
目前用GetGlobalVar和SetGlobalVar構(gòu)建的全局變量,在每個bar時,可以看見其變化過程,明顯這些全局變量是用序列變量來實現(xiàn)的,因此,500,占用了很大空間,估計也是你們不愿意繼續(xù)擴大全局變量數(shù)量的原因。
實際上,目前這種GetGlobalVar和SetGlobalVar的全部變量是需要的,但不要那么多,有10到20個夠了,只用于調(diào)試程序,但程序中需要大量的由用戶自己定義的全局變量,這種變量不需要記錄中間變化過程,因此,只需要把這個變量值記錄下來,在全局可以調(diào)用,每個變量只占用幾個字節(jié),因此不論定義多少,占用空間極少。
不知道,tb內(nèi)部是什么機制,開發(fā)一般意義上的全局變量那么難。
?
?來源:CXH99.COM
-
TB技術(shù)人員:
頂
?
-
TB客服:
我也深受其害 做了個模型 tm 快氣死了 用a函數(shù)加全局變量怎么搞都是重復(fù)發(fā)單
?
-
網(wǎng)友回復(fù):
Params? ?? ?? ?? ?? ?? ?? ?? ???
Vars? ?? ?? ?? ?
? ?? ? NumericSeries SX;
? ?? ? NumericSeries DP;
? ?? ? NumericSeries KP;? ?? ?
? ?? ?? ?? ?? ?? ?? ?? ? //(CurrentTime-A_OrderTime)//平臺時間-委托單時間? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?
Begin? ?? ?? ?? ?? ?? ?? ?
? ?? ?? ?
? ?? ?? ?
? ?SX=20150701;
If(Date>=SX){setglobalvar(8,81);}? ?
? ?? ?? ?Else{setglobalvar(8,80);}? ?? ?
? ?? ?? ?? ?? ?? ?? ?? ?
? ?? ?? ?if(Getglobalvar(8)==80&&A_BuyPosition==0&&A_SellPosition==0&&(CurrentTime-A_OrderTime)>0.000020)? ?//賦予初始值
? ?? ???{setglobalvar(0,0);
? ???setglobalvar(1,10);
? ???setglobalvar(2,20);
? ???setglobalvar(3,30);
? ???setglobalvar(4,40);
? ???setglobalvar(5,50);}
? ?? ?? ?
? ?? ?? ?
? ?? ?? ?
If(A_BuyPosition==0&&A_SellPosition==0&&Getglobalvar(0)==0)
? ?{ A_SendOrder(Enum_Buy, Enum_Entry, 1 ,Q_AskPrice );??//多頭開倉??
? ? A_SendOrder(Enum_Sell, Enum_Entry,1 ,Q_BidPrice);? ? //空頭開倉??
? ?? ?? ?setglobalvar(0,1); }
根本控制不住重復(fù)發(fā)單??初始值就不知道放在那里才能不被初始化
?
-
網(wǎng)友回復(fù):
一堆 SetGlobalVar(0,GetGlobalVar(1)) , 原來可以簡單的寫出 A = B 的,這可讀性差太遠了,TB再不解決這問題,前途堪憂 |