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