期貨軟件TB系統(tǒng)源代碼解讀系列46-COVAR

COVAR即協(xié)方差指標(biāo),我沒在百度里找到相關(guān)分析,這可能是TB人員自己從哪國外網(wǎng)站上看到的吧,具體算法我也不了解,咱只能一步步分析源代碼了。如下解讀:

Params

Numeric Length(10);//聲明數(shù)值參數(shù)Length,初值10.//

Vars??

Numeric CORValue(0); //聲明數(shù)值變量CORValue,初值0.//

Begin

CORValue = Covar(Close, Data1.Close,Length);//直接看這個(gè)可能不明白,這里的Covar是個(gè)函數(shù),意思是把括號里的三個(gè)數(shù)據(jù)都返回這個(gè)函數(shù)Covar代碼里去求值,再把值反饋回來,最后賦值給變量CORValue了。//

PlotNumeric("CORA",CORValue);//畫線CORA,值為CORValue值。//

PlotNumeric("零線",0);//畫零線。//

End

很簡單的代碼吧,解讀起來不難,但這個(gè)代碼要是不省略來,把函數(shù)Covar具體代碼體現(xiàn)在里邊,那也挺費(fèi)勁的,所以編程人員都喜歡分開來,一段段來寫,最后調(diào)用就很方便的。接下來我們就看Covar函數(shù)怎么寫了,解讀如下:

Params

NumericSeries Price1(1); //聲明數(shù)值序列參數(shù)Price1,初值1.//

NumericSeries Price2(1);//聲明數(shù)值序列參數(shù)Price2,初值1.//

Numeric Length(10);//聲明數(shù)值參數(shù)Length,初值10.//

Vars?

Numeric Mean1;//聲明數(shù)值變量Mean1.//

Numeric Mean2;//聲明數(shù)值變量Mean2.//

Numeric SumValue(0);//聲明數(shù)值變量SumValue,初值0.//

Numeric i;//聲明變量i。//

Begin

if (Length >0 )//假如參數(shù)Length值(初值10)大于0.//

{

Mean1 = Average(Price1, Length);//求平均值函數(shù)Average,前面解讀過了,略過,這里就是把價(jià)格參數(shù)Price1與周期參數(shù)Length返回函數(shù)求均值了,再把值反饋回來,賦值給變量Mean1.//

Mean2 = Average(Price2, Length);//解讀同上。//

for i = 0 To Length - 1//循環(huán)語句,之前也解讀過了,就是讓變量i從0到9循環(huán)。//

{

SumValue = SumValue + (Price1[i] - Mean1) * (Price2[i] - Mean2);//累加求和公式,把變量i從0開始累加到9,求得總和值SumValue。//

}

Return SumValue / Length ;//依據(jù)上面求得的總和,把變量SumValue / 參數(shù)Length 了,再把這值反饋給主函數(shù)。//

}Else//就是當(dāng)Length小于0的時(shí)候(根據(jù)初值參數(shù),沒法成立的)。//

{

Return -1;//反饋-1值。//

}

End


很奇怪吧,我也覺得,插入COVAR指標(biāo)了,反而沒法顯示出來具體的數(shù)值,重新分析了一下代碼,沒發(fā)現(xiàn)哪步有邏輯錯(cuò)誤的。分析到這,我只能說,這可能是一個(gè)錯(cuò)誤的代碼,具體原因,沒有算法對照,我暫時(shí)沒找到哪步出錯(cuò)的,有大神看出了,希望能指點(diǎn)一二了。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容