[求助]序列長度不夠時summation的一個奇怪問題 [開拓者 TB]
- 咨詢內(nèi)容:
要求10個bar的(close-close[1])的summation,一個很簡單的程序,如下:
Params
Numeric length(10);
Vars
Numeric closeSum1(0);
Numeric closeSum2(0);
Begin
if(CurrentBar == 0)
{
//do nothing
}Else
{
closeSum1 = Summation( Abs( close - close[1] ), length );
}
closeSum2 = Summation(Abs( close - close[1] ),length);
FileAppend("f:\\test.csv",Text(close)+","+Text(closeSum1)+","+Text(closeSum2));
End
最后輸出的數(shù)據(jù)結果如下:
tbb.jpg (222.59 KB, 下載次數(shù): 0) 2015-12-8 14:25:12 上傳 - TB技術人員:
summation是序列函數(shù),運算是不可以放在條件下的。。
條件下取值受限是可能導致計算結果出錯的。
建議使用一個中間變量在,在條件外將summation的計算結果賦值 給基本變量。在條件內(nèi)可以該變量的結果代入其它的計算或判斷中。 - TB客服:
小米 發(fā)表于 2015-12-8 15:51
summation是序列函數(shù),運算是不可以放在條件下的。。
條件下取值受限是可能導致計算結果出錯的。
建議使用 ...
了解,謝謝版主的回答!
那這樣的話,TB自帶的AdaptiveMovAvg()是不是計算有微小誤差。我就是自己用別的語言實現(xiàn)AdaptiveMovAvg()函數(shù)時與TB的結果做比較發(fā)現(xiàn)這個問題的。
TB自帶的系統(tǒng)函數(shù)AdaptiveMovAvg()就是在條件判斷里用了summation,程序如下:
Params
NumericSeries Price(1);
Numeric EffRatioLength(10);
Numeric FastAvgLength(2);
Numeric SlowAvgLength(30);
Vars
Numeric NetChg(0);
Numeric TotChg(0);
Numeric EffRatio(0);
Numeric ScaledSFSqr(0);
NumericSeries AMAValue;
Numeric SFDiff;
Begin
if(CurrentBar == 0)
{
AMAValue = Price;
}Else
{
NetChg = Abs( Price - Price[EffRatioLength] );
TotChg = Summation( Abs( Price - Price[1] ), EffRatioLength );
EffRatio = IIF(TotChg > 0, NetChg / TotChg, 0);
SFDiff = 2 / ( FastAvgLength + 1 ) - 2 / ( SlowAvgLength + 1 );
ScaledSFSqr = Sqr( 2 / ( SlowAvgLength + 1 ) + EffRatio * SFDiff );
AMAValue = AMAValue[1] + ScaledSFSqr * ( Price - AMAValue[1] );
}
Return AMAValue;
End
(AMA的值是一個迭代值,用到了AMA[1],如果開始時候summation計算有誤的話,就會影響整個AMA序列)
- 網(wǎng)友回復:
本帖最后由 小米 于 2015-12-9 09:02 編輯
mosquitog 發(fā)表于 2015-12-8 18:53
了解,謝謝版主的回答!
那這樣的話,TB自帶的AdaptiveMovAvg()是不是計算有微小誤差。我就是自己用別的 ...
在上一樓的回復里,我有說到是“條件下取值受限是可能導致計算結果出錯的”,強調(diào)可能二字并非咬字眼,而是因為條件的不同,其受影響的結果也可能有不同。
如果您在自己寫的公式里,能保證在條件中使用序列函數(shù)的計算結果的正確性,是可以在條件下使用的。如果不能保證,才需要使用上述建議中的中間變量了。
TB的絕大部分函數(shù)里都有類似的使用,這個計算結果是確保正確的的方會這么用。。
您可以再驗證一下該自帶函數(shù),如果計算結果確實不是您想要的,可以自己新建函數(shù)來實現(xiàn)所需的想法。
有思路,想編寫各種指標公式,程序化交易模型,選股公式,預警公式的朋友
可聯(lián)系技術人員 QQ: 511411198 進行 有償 編寫!(不貴!點擊查看價格!)
相關文章
-
沒有相關內(nèi)容