在網路上看到很多投資老師使用20週MA(移動平均線)來操作,宣稱任何只要有”K線”的商品,就能用這套方法來獲利;因此,上班族科學投資來實驗20週MA策略是否能在台指期上取得效果呢?
在這個策略的邏輯如下:
若每週五收盤價突破MA,則進場做多
若任何一天的收盤價跌破MA,則多單出場
比較有意思的是,進出場邏輯有分「週」跟「日」不同層級,在程式的撰寫上由於出場是日K,我們必須用日K的資料,並且用「日」收盤價來組成「週」均線;在此我們用array語法,將近20週的收盤價存進array裡,再用array做出週均線。
策略基本設定:
策略名稱 | 20週均線策略 |
交易層級 | 1day |
交易成本 | 來回600 |
回測期間 | 2001-2019/3 |
程式碼:
Var :
x(0) ,
MA(0) ;
Array :
Array_CloseWeek[20](0) ;
if dayofweek(date)<dayofweek(date[1]) then begin
for x = 20 downto 2 begin
Array_CloseWeek[x] = Array_CloseWeek[x-1] ;
end ;
end ;
Array_CloseWeek[1] = c ;
MA = AverageArray(Array_CloseWeek,20) ;
if Array_CloseWeek[20]>0 then begin
if marketposition<=0 and c>MA and dayofweek(d)=5 then
buy 1 share at next bar market ;
if marketposition>0 and c<MA then
sell all shares at next bar market ;
end ;
if dayofmonth(date)>14 and dayofmonth(date)<22 and dayofweek(date)=3 and time>=1330 and time<=1345 then begin
sell("CheckDay Sell") all shares at this bar close ;
buytocover("CheckDay Buytocover") all shares at this bar close ;
end ;
邏輯中文翻譯:
若今天是新的一週,將上週收盤存進array裡 |
將array第20格改為第19格的值、第19格改為第18格的值,以此類推儲存下來 |
將array第1格更新成最新的收盤價 |
做出20週均線 |
當全部array都填滿時才開始交易 |
若收盤價大於MA且今天是星期五,多單進場 |
若收盤價小於MA,多單平倉 |
結算時出場 |
回測績效檢視:
權益曲線圖:
歷年損益分析:
結論:
從回測可以發現,20週MA策略從2009年之後就無法再有獲利。
下圖是台指期採用進多單抱到結算轉倉策略的損益圖,可以發現20週MA策略還不如BUY AND HOLD轉倉策略,因此20週MA此策略在台指期是行不通的,未經驗證且口說無憑的策略邏輯,別輕易相信!。
台指期BUY AND HOLD轉倉策略:
在下面提供上班族科學投資更好的策略給大家
請大家自行去參考