2019年4月15日 星期一

[量化狼]打臉網路神棍!20週均線獲利法?


在網路上看到很多投資老師使用20MA(移動平均線)來操作,宣稱任何只要有”K的商品,就能用這套方法來獲利;因此,上班族科學投資來實驗20MA策略是否能在台指期上取得效果呢?
 在這個策略的邏輯如下:
若每週五收盤價突破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
array20格改為第19格的值、第19格改為第18格的值,以此類推儲存下來
array1格更新成最新的收盤價
做出20週均線
當全部array都填滿時才開始交易
若收盤價大於MA且今天是星期五,多單進場
若收盤價小於MA,多單平倉
結算時出場

回測績效檢視:

權益曲線圖:
歷年損益分析:

結論:
從回測可以發現,20MA策略從2009年之後就無法再有獲利。
        下圖是台指期採用進多單抱到結算轉倉策略的損益圖,可以發現20MA策略還不如BUY AND HOLD轉倉策略,因此20週MA此策略在台指期是行不通的,未經驗證且口說無憑的策略邏輯,別輕易相信!

台指期BUY AND HOLD轉倉策略:


在下面提供上班族科學投資更好的策略給大家
請大家自行去參考