期货软件TB系统源代码解读系列37-SI

SI指标即为摆动指标,主要是试图通过比较当期价格(也就是开盘价、最高价、最低价和收盘价)与前期价格之间的关系来分离出"真实的"证券价格。

摆动指标主要用做累积摆动指标(Accumulation Swing Index)的构成要素,当然两者不是同一个东西,还是有很大的区别的。算法不难,直接看代码就明白,我直接做代码解读如下了:

Vars

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

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

Numeric H0C1( 0 ); //声明数值变量HoC1,初值为0.//

Numeric L0C1( 0 ); //声明数值变量LoC1,初值为0.//

Numeric H0L0( 0 ); //声明数值变量HoLo,初值为0.//

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

Numeric SIValue;//声明数值变量SIValue。//

Begin

H0C1 = Abs( High - Close[1] ) ;//函数Abs就是取绝对值了,即把当前最高价High - 前一根k线收盘价Close[1],不管结果正负,都变为正整数了,则可求得变量HoC1值。//

L0C1 = Abs( Low - Close[1] ) ;//同理的,代入相应值,取正整数,求得变量LoC1值。//

H0L0 = High - Low ;//代入当前最高价与最低价,求得变量HoLo值了。//

C1O1 = Abs( Close[1] - Open[1] ) ;//代入前一根k线的收盘价与开盘价,把结果取正整数,即求得变量C1O1值。//

If (H0C1 >= L0C1)//假如变量HoC1>=变量LoC1值。//

{

K = H0C1 ;//变量K=变量HoC1值。//

If(H0C1 >= H0L0)//假如HoC1>=变量HoLo值。//

{

R = H0C1 - 0.5 * L0C1 + 0.25 * C1O1;//代入上面求得的值,即变量R=变量HoC1 - 0.5 * 变量LoC1 + 0.25 * 变量C1O1//

}Else//这个针对的是假如变量HoC1<变量HoLo值。//

{

R = H0L0 + 0.25 * C1O1 ;//变量R=变量HoLo + 0.25 *变量C1O1//

}

}Else//这个针对的是假如变量HoC1<变量LoC1值。//

{

K = L0C1;//变量K=变量LoC1值。//

If (L0C1 >= H0L0)//假如变量LoC1>=变量HoLo。//

{

R = L0C1 - 0.5 * H0C1 + 0.25 * C1O1;//同上,代入求得的相应数值就行。//

}Else//这个针对的是假如变量LoC1<变量HoLo。//

{

R = H0L0 + 0.25 * C1O1 ;//代入相应数值了,即得变量R值。//

}

}

If(R <> 0 )//根据上面求得的,假如变量R值不等于0.//

{

SIValue = 50 * ( ( ( Close - Close[1] ) + 0.50 * ( Close - Open ) + 0.25* ( Close[1] - Open[1] ) ) / R ) * K / 1000; //这一大串看着很长,其实就是代入相应的当前K线的开盘价与收盘价、及前一根k线的开盘价与收盘价,再代入变量R与变量K值就行,就可以求得变量SIValue值了。//

}Else//就是假如变量R等于0的。//

{

SIValue = 0 ;//变量SIValue=0.//

}

PlotNumeric("SI",SIValue);//画线SI,值为SIValue值了。//

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

End

我不知道这指标有没有人用的,就是很简单的给解读一下了,要是能有一点帮助也是好的。

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