期貨軟體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

{

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

}

}Else//這個針對的是假如變量HoC1

{

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

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

{

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

}Else//這個針對的是假如變量LoC1

{

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

我不知道這指標有沒有人用的,就是很簡單的給解讀一下了,要是能有一點幫助也是好的。


分享到:


相關文章: