序列變量時不時傳遞不進(jìn)子函數(shù),怎么辦?
作者:開拓者 TB 來源:cxh99.com 發(fā)布時間:2013年05月28日
- 咨詢內(nèi)容:
在主函數(shù)定義了幾個序列變量,其中幾個作為子函數(shù)的參數(shù)傳過去,為什么有時行有時不行?需要聲明的是這些子函數(shù)都沒有放在條件句或循環(huán)句中!最奇怪的是,如果子函數(shù)前對序列變量的當(dāng)前值賦值,那么子函數(shù)里就全部得到零數(shù)據(jù)(包括歷史數(shù)據(jù))。如果把賦值放在子函數(shù)之后,那么子函數(shù)里就能拿到歷史數(shù)據(jù)了。這是什么原因?我的TB版本是4.2.8
- TB技術(shù)人員:
請?zhí)峁┰创a,便于找出問題所在
- TB客服:
這個問題換一個角度來說吧
以前上一根K線上的值傳遞到當(dāng)前K線上是靠手工的語句,現(xiàn)在版本4是自動的對吧。的確多數(shù)情況下是要繼承過來的,但是我這個程序不希望繼承上一根K線的值,而是需要一個0初值,所以在進(jìn)入程序的開頭進(jìn)行了零賦值,這時把這個序列變量傳遞到子函數(shù)去的話,子函數(shù)得到的歷史數(shù)據(jù)就全是0了!我以為歷史值是清不掉無法改變的,為什么也清零了呢?
- 網(wǎng)友回復(fù):
ample 發(fā)表于 2013-4-17 16:16
請?zhí)峁┰创a,便于找出問題所在
請問序列變量在每根K線上需要一個零初值該怎么做呢?如果光一個主函數(shù)、主應(yīng)用,似乎沒有問題,在程序開頭賦值零就可以了,但是如果這個序列變量還要作為參數(shù)傳給子函數(shù)的,那么問題就來了,在主函數(shù)里清零后,在子函數(shù)里就會得到所有歷史K線都是主函數(shù)里賦的零值,歷史數(shù)據(jù)消失了!但是在主函數(shù)里歷史數(shù)據(jù)還能看到。。
- 網(wǎng)友回復(fù):
//------------------------------------------------------------------------
// 簡稱: TestNS1
// 名稱:
// 類別: 公式應(yīng)用
// 類型: 用戶應(yīng)用
// 輸出:
//------------------------------------------------------------------------
Params
Vars
NumericSeries AAA(0);
Begin
AAA=0;
Func1(AAA);
// do something here, so...
AAA=1;
Return;
End
//------------------------------------------------------------------------
// 簡稱: Func1
// 名稱:
// 類別: 用戶函數(shù)
// 類型: 用戶函數(shù)
// 輸出: 布爾型
//------------------------------------------------------------------------
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
|