有位高手說,他用K值跌破20進場,K值突破80出場的交易策略去投資台灣50,結果大賺了一筆,這算是一種很簡單易學的投資方法,所以我就跑程式把這個邏輯拿到各個市場去試,發現這樣的方法,具有可操作性,但有些眉角要留意,今天就跟大家分享我的研究結果。
首先當然是先寫出進場策略及出場策略,腳本分別如下
input: Length_D(5, "日KD期間"); variable:rsv_d(0),kk_d(0),dd_d(0); stochastic(Length_D, 3, 3, rsv_d, kk_d, dd_d); if kk_d crosses under 20 then ret=1;
上面是K值跌破20進場,下面是K值突破80出場
input: Length_D(9, "日KD期間"); variable:rsv_d(0),kk_d(0),dd_d(0); stochastic(Length_D, 3, 3, rsv_d, kk_d, dd_d); if kk_d crosses over 80 then ret=1;
把這兩個腳本拿去用台灣50跑回測,過去七年的回測報告如下
七年來一共有27次交易的機會,其中20次可以獲利出場,勝率很高。
如果去分析虧損的情況,會發現,這個策略正常的情況下,是急跌後才會出買進訊號,急漲才會出賣出訊號,所以通常是可以買在低點,賣在高點,但如果在大空頭市場,急跌後出現買進訊號,但行情出現大崩跌,就算後來反彈急漲,出現賣出訊號,但這時候的賣點也已經比進場點低。下面這張圖就是一個很好的例子
所以要使用這個策略,需要一個過濾大空頭市場的過濾器,所以我就把進場程式改寫成下面這個程式
input: Length_D(5, "日KD期間"); variable:rsv_d(0),kk_d(0),dd_d(0); stochastic(Length_D, 3, 3, rsv_d, kk_d, dd_d); if kk_d crosses under 20 and GetSymbolField("tse.tw","收盤價","W") >average(GetSymbolField("tse.tw","收盤價","W"),13) then ret=1;
拿加權指數週線站上13週均線作為進場的前提。結果回測報告如下
雖然交易次數從27次減少為9次,但其中有8次賺錢,虧錢的一次,也只虧了0.6%。
加了這個過濾器之後,雖然策略勝算很大,但缺點就是交易的次數不多,如果只用來盯住特定市場,進場的次數很有限,例如拿這個策略去跑台股及美股,這幾年大多頭,能進場的次數十分有限
要解決這個問題,方法就是交易更多的指數型商品,於是,我把更多的ETF都用這個策略來回測,回測的結果如下
勝率有維持在76%,七年的交易次數有737次,算是克服了交易次數太少的問題,但麻煩的是空頭市場一樣會虧大錢,因為各種ETF的同質性高,踫到大空頭市場大家都一起掛,所以使用這個策略還是把它用在固定的股債比架構下,去挑急跌的標的會比較合適。