期货软件TB系统源代码解读系列46-COVAR

COVAR即协方差指标,我没在百度里找到相关分析,这可能是TB人员自己从哪国外网站上看到的吧,具体算法我也不了解,咱只能一步步分析源代码了。如下解读:

Params

Numeric Length(10);//声明数值参数Length,初值10.//

Vars  

Numeric CORValue(0); //声明数值变量CORValue,初值0.//

Begin

CORValue = Covar(Close, Data1.Close,Length);//直接看这个可能不明白,这里的Covar是个函数,意思是把括号里的三个数据都返回这个函数Covar代码里去求值,再把值反馈回来,最后赋值给变量CORValue了。//

PlotNumeric("CORA",CORValue);//画线CORA,值为CORValue值。//

PlotNumeric("零线",0);//画零线。//

End

很简单的代码吧,解读起来不难,但这个代码要是不省略来,把函数Covar具体代码体现在里边,那也挺费劲的,所以编程人员都喜欢分开来,一段段来写,最后调用就很方便的。接下来我们就看Covar函数怎么写了,解读如下:

Params

NumericSeries Price1(1); //声明数值序列参数Price1,初值1.//

NumericSeries Price2(1);//声明数值序列参数Price2,初值1.//

Numeric Length(10);//声明数值参数Length,初值10.//

Vars 

Numeric Mean1;//声明数值变量Mean1.//

Numeric Mean2;//声明数值变量Mean2.//

Numeric SumValue(0);//声明数值变量SumValue,初值0.//

Numeric i;//声明变量i。//

Begin

if (Length >0 )//假如参数Length值(初值10)大于0.//

{

Mean1 = Average(Price1, Length);//求平均值函数Average,前面解读过了,略过,这里就是把价格参数Price1与周期参数Length返回函数求均值了,再把值反馈回来,赋值给变量Mean1.//

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

for i = 0 To Length - 1//循环语句,之前也解读过了,就是让变量i从0到9循环。//

{

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

}

Return SumValue / Length ;//依据上面求得的总和,把变量SumValue / 参数Length 了,再把这值反馈给主函数。//

}Else//就是当Length小于0的时候(根据初值参数,没法成立的)。//

{

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

}

End


很奇怪吧,我也觉得,插入COVAR指标了,反而没法显示出来具体的数值,重新分析了一下代码,没发现哪步有逻辑错误的。分析到这,我只能说,这可能是一个错误的代码,具体原因,没有算法对照,我暂时没找到哪步出错的,有大神看出了,希望能指点一二了。

你可能感兴趣的:(期货软件TB系统源代码解读系列46-COVAR)