指標百百種,有些很簡單好理解,例如均線就是計算平均值,多數則有其複雜的數學運算邏輯,當然要把一個指標摸透徹,最好要一一解構他的數理原理,求速成的話,我們也可以跳過去,先學會怎麼使用。在「從內建指標或訊號程式碼學怎麼運用函式」一篇中以MACD為例引導初學者如何從內鍵指標語法,學會怎麼呼叫或是引用指標。
我們將以KD、RSI、MA指標為例,初學者在不知道KD與RSI如何引用的情況下,一樣先去參考內建的相關指標用法。以下是PowerLanguager 內建「Stochastic Slow LE」訊號程式碼(KD指標在MC裡名稱為「Stochastic」):
=============================
inputs: Length( 14 ), OverSold( 20 ) ;
variables: var0( 0 ), var1( 0 ), var2( 0 ), var3( 0 ) ;
Value1 = Stochastic( H, L, C, Length, 3, 3, 1, var0, var1, var2, var3 ) ;
condition1 = CurrentBar > 2 and var2 crosses over var3 and var2 < OverSold ;
if condition1 then
Buy ( "StochLE" ) next bar at market ;
=============================
從策略名稱可以知道這是一個KD多單進場訊號(LE=Long Entry),再從condition1的陳述中不難推敲出var2就是K值,var3就是D值,這樣我們就知道怎麼呼叫K值與D值。(補充說明:Stochastic函式可以回傳多個值,var0~var3,分別是Fast K、Fast D、Slow K、Slow D,也可以參考PowerLanguage Editor內建的函式說明或是這個函式說明網頁(TS函式,與MC幾乎共通))
再來打開PowerLanguager 內建「RSI LE」訊號程式碼:
=============================
inputs: Price( Close ), Length( 14 ), OverSold( 30 ) ;
variables: var0( 0 ) ;
var0 = RSI( Price, Length ) ;
condition1 = Currentbar > 1 and var0 crosses over OverSold ;
if condition1 then
Buy ( "RsiLE" ) next bar at market ;
=============================
RSI更簡單,RSI( Price, Length )就是算出RSI的函式。
接者我們試者把兩段程式碼合併,同時把均線程式碼也加進去,並做一些精簡及改名(以利識別),如下:
=============================
inputs: KD_Length(14),RSI_Length(14),MA_Length(60) ;
variables: var0(0), var1(0), var_K(0), var_D(0),var_RSI(0),var_MA(0) ;
Value1 = Stochastic( H, L, C, KD_Length, 3, 3, 1, var0, var1, var_K, var_D ) ;
var_RSI = RSI( close, RSI_Length ) ;
var_MA = Average( close, MA_Length ) ;
=============================
到這邊為止我們就可以引用(計算):
Var_K即K值
Var_D即D值
Var_RSI即RSI值
Var_MA即均線值
接下來就看我們的策略要怎麼安排,例如多單進場條件如下:
1.K>D且D小於50,且
2.RSI呈現上升趨勢,且
3.收盤價在季線(60MA)以上
再加個停損停利機制,把它們都寫進腳本,如下:
=============================
inputs: KD_Length(14),RSI_Length(14),MA_Length(60) ;
variables: var0(0), var1(0), var_K(0), var_D(0),var_RSI(0),var_MA(0) ;
Value1 = Stochastic( H, L, C, KD_Length, 3, 3, 1, var0, var1, var_K, var_D ) ;
var_RSI = RSI( close, RSI_Length ) ;
var_MA = Average( close, MA_Length ) ;
if var_K>var_D and var_D>50 and var_RSI>var_RSI[1] and close>var_MA then buy next bar at market;
setstoploss(5000);
setprofittarget(20000);
=============================
以上就完成一個多指標交易策略,初學者如果對寫程式還不熟悉可以循此方式多多練習。
歡迎加入LINE@
(點擊上方圖示)
沒有留言:
張貼留言
歡迎留言討論!