序列變量時不時傳遞不進子函數,怎么辦? [開拓者 TB]
- 咨詢內容:
在主函數定義了幾個序列變量,其中幾個作為子函數的參數傳過去,為什么有時行有時不行?需要聲明的是這些子函數都沒有放在條件句或循環句中!最奇怪的是,如果子函數前對序列變量的當前值賦值,那么子函數里就全部得到零數據(包括歷史數據)。如果把賦值放在子函數之后,那么子函數里就能拿到歷史數據了。這是什么原因?我的TB版本是4.2.8
- TB技術人員:
請提供源代碼,便于找出問題所在
- TB客服:
這個問題換一個角度來說吧
以前上一根K線上的值傳遞到當前K線上是靠手工的語句,現在版本4是自動的對吧。的確多數情況下是要繼承過來的,但是我這個程序不希望繼承上一根K線的值,而是需要一個0初值,所以在進入程序的開頭進行了零賦值,這時把這個序列變量傳遞到子函數去的話,子函數得到的歷史數據就全是0了!我以為歷史值是清不掉無法改變的,為什么也清零了呢? - 網友回復:
ample 發表于 2013-4-17 16:16
請提供源代碼,便于找出問題所在
請問序列變量在每根K線上需要一個零初值該怎么做呢?如果光一個主函數、主應用,似乎沒有問題,在程序開頭賦值零就可以了,但是如果這個序列變量還要作為參數傳給子函數的,那么問題就來了,在主函數里清零后,在子函數里就會得到所有歷史K線都是主函數里賦的零值,歷史數據消失了!但是在主函數里歷史數據還能看到。。 - 網友回復:
//------------------------------------------------------------------------
// 簡稱: TestNS1
// 名稱:
// 類別: 公式應用
// 類型: 用戶應用
// 輸出:
//------------------------------------------------------------------------
Params
Vars
NumericSeries AAA(0);
Begin
AAA=0;
Func1(AAA);
// do something here, so...
AAA=1;
Return;
End
//------------------------------------------------------------------------
// 簡稱: Func1
// 名稱:
// 類別: 用戶函數
// 類型: 用戶函數
// 輸出: 布爾型
//------------------------------------------------------------------------
Params
NumericSeries AAA;
Vars
Bool Con1;
Begin
Commentary("AAA[0]="+Text(AAA[0])+" AAA[1]="+Text(AAA[1])+" AAA[2]="+Text(AAA[2]));
Return (AAA[1]==1);
End
有思路,想編寫各種指標公式,程序化交易模型,選股公式,預警公式的朋友
可聯系技術人員 QQ: 1145508240 進行 有償 編寫!(不貴!點擊查看價格!)
相關文章
-
沒有相關內容