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)一二了。