波段操作,用什麼策略心臟比較撐得住

By | 2016-05-30

程式交易者,不見得要每天殺進殺出,也可以設計出一些原理不複雜,概念很清晰,只要嚴格遵守交易紀律,還是可以在波段趨勢中穩定求勝的策略,對於那些心臟承受不了短線波動的朋友,今天來介紹一個波段操作的交易策略。

 

這個策略是由三個大條件所組合而成

1.加權指數處於多頭排列

2.個股 日KD是K>D且K沒有超過80

3.個股週KD低檔出現黃金交叉

這三個條件的概念就是在大盤不錯的情況下,找出那些波段開始翻多的股票

為了迎合保守的操作者,這個策略可以只用在權值股的中型100指數成份股這類型的股票。

根據上述的條件,我寫的腳本如下:

// 日KD期間=9, 周KD期間=5
// 作多, 交易費用0.2%, 停利15%, 停損7%, 最大持有時間60期, 同時進場次數: 1
//
if GetSymbolField("tse.tw","收盤價","D")
>=average(GetSymbolField("tse.tw","收盤價","D"),10)
then begin
 
input: Length_D(9, "日KD期間");
input: Length_W(5, "周KD期間");
 
variable:rsv_d(0),kk_d(0),dd_d(0);
variable:rsv_w(0),kk_w(0),dd_w(0);
 
stochastic(Length_D, 3, 3, rsv_d, kk_d, dd_d);
xf_stochastic("W", Length_W, 3, 3, rsv_w, kk_w, dd_w);
 
condition1 = kk_d >= dd_d; // 日KD 
condition2 = xf_crossover("W", kk_w, dd_w); // 周KD 黃金交叉
condition3 = kk_d[1] <= 80; // 日K 不過熱
condition4 = xf_getvalue("W", kk_w, 1) <= 30; // 周K 低檔
 
ret = condition1 and condition2 and condition3 and condition4;
end;

 

這當中用了四個系統函數,

一,xf_getvalue,這是用來在跨頻率時,把較長頻率的序列,換算成計算頻率的第幾筆的函數。

二,xf_stochastic,這是計算週KD的函數。

三,xf_crossover,這是傳入兩個序列(跟目前的頻率不同,本文是以跨週頻率為範例介紹),判斷是否crossover。

四,xf_GetDTvalue,這是回傳某個日期的’normalized’ value,用這個value來比對是否已經跨期。

回測報告,三年的回測報告如下:

053001

 

一年的回測報告則如下圖

053002

 

然後我們再去檢視那些失敗的交易,我們會發現,讓我們輸錢的交易大致上有兩個情況

1.在大盤假突破時進場,所以就會被停損掉,特別是去年七月到八月及今年年初時的急跌,這個策略會因為過早進場而虧大錢

2.個股打第二支腳時就被停損掉了

針對上述兩個情況,我把這個交易策略再優化成下面這個腳本

 

// 日KD期間=9, 周KD期間=5
// 作多, 交易費用0.2%, 停利15%, 停損8%, 最大持有時間60期, 同時進場次數: 1
//
if GetSymbolField("tse.tw","收盤價","D")
>=average(GetSymbolField("tse.tw","收盤價","D"),10)
and 
average(GetSymbolField("tse.tw","收盤價","D"),5)
>=average(GetSymbolField("tse.tw","收盤價","D"),10)
then begin

input: Length_D(9, "日KD期間");
input: Length_W(5, "周KD期間");

variable:rsv_d(0),kk_d(0),dd_d(0);
variable:rsv_w(0),kk_w(0),dd_w(0);

stochastic(Length_D, 3, 3, rsv_d, kk_d, dd_d);
xf_stochastic("W", Length_W, 3, 3, rsv_w, kk_w, dd_w);

condition1 = kk_d >= dd_d; // 日KD 
condition2 = xf_crossover("W", kk_w, dd_w); // 周KD 黃金交叉
condition3 = kk_d[1] <= 80; // 日K 不過熱
condition4 = xf_getvalue("W", kk_w, 1) <= 30; // 周K 低檔

ret = condition1 and condition2 and condition3 and condition4;
end;

出來的一年期回測報告可以把勝率再往上拉一點

053003

目前的回測數字是因著不能以特定策略來出場,不然數字應該可以更好。

 

各位可以試著用自己的方式再作調整,基本概念就是像我上面所講的,在大盤多頭趨勢下尋找翻多的大中型股波段操作