CCI即商品通道指标,这个指标我也不熟悉,但是看着简单,所以就写了,代码及解读如下:
Params
Numeric Length(14);//声明数值参数Length,初值14.//
Numeric AvgLength(9);//声明数值参数AvgLength,初值9.//
Vars
NumericSeries TmpValue; //声明数值序列变量TmpValue。//
Numeric Mean( 0 ); //声明数值变量Mean,初值0.//
Numeric AvgDev( 0 ); //声明数值变量AvgDev,初值0.//
Numeric Counter( 0 ) ;//声明数值变量Counter,初值0.//
NumericSeries CCIValue(0); //声明数值序列变量CCIValue,初值0.//
Numeric CCIAvg; //声明数值变量CCIAvg。//
Begin
TmpValue = High + Low + Close; //变量TmpValue = 最高价High + 最低价Low + 收盘价Close。//
Mean = AverageFC( TmpValue, Length ) ; //代入相应数值与周期,快速求得均值,即可得变量Mean值。//
AvgDev = 0 ;//变量AvgDev = 0.//
for Counter = 0 to Length - 1 //循环从0到13.//
{
AvgDev = AvgDev + Abs( TmpValue[Counter] - Mean ) ;//做个例子,代入第一个数值0,AvgDev = 0 + Abs(TmpValue[0] - Mean),同理代入第二个,第三个...直到第十四个13结束,算得一个总值AvgDev。//
}
AvgDev = AvgDev / Length ;//变量AvgDev = 总值AvgDev /10. //
if( AvgDev == 0)//假如变量AvgDev 等于0.//
CCIValue = 0; //则变量CCIValue 赋值为0.//
Else//变量AvgDev不等于0的。//
CCIValue = ( TmpValue - Mean ) / ( 0.015 * AvgDev ) ; //还是同理的,把上面求得的相应值代入进去,即可算得CCIValue值。//
CCIAvg = AverageFC(CCIValue, AvgLength );//代入变量CCIValue值与周期9,快速求得平均值,即为变量CCIAvg值。//
PlotNumeric("CCI",CCIValue);//画线CCI,值为CCIValue值。//
PlotNumeric("CCIAvg",CCIAvg);//画线CCIAvg,值为CCIAvg值。//
PlotNumeric("OverSell",-100);//画线超卖,值为-100.//
PlotNumeric("OverBuy",100);//画线超买,值为100.//
End