有粉絲私訊我,他看了節目使用了某位老師的RSI策略但效果不彰,想請我們幫他回測看看;RSI的計算方法之前就有寫過了,在這篇就不多說明囉。
我也去看了一下節目,發現那位老師一開始雖然說RSI多好用多好用,但在不同的例子裡又追加了很多需要參考的條件,像是RSI明明到了他的出場訊號結果又追加了參考五日均線如果沒跌破就不賣,又或者明明說RSI過80已經超賣了就要出場,但有時又要再觀察兩天看是不是鈍化;各種的追加條件想必看節目的人也很困擾到底該不該進出場吧?
在此將網路老師的邏輯簡化如下:
若收盤價突破5日、10日和20日均線,則多單進場
若收盤價小於5日均線且RSI跌破80(超買區),則多單出場
若收盤價跌破5日、10日和20日均線,則空單進場
策略基本設定:
策略名稱 | 均線RSI策略 |
交易層級 | 1day |
交易成本 | 單口來回600 |
回測期間 | 2001-2019/5 |
Input :
len(6) ;
Var :
x(0),sum_up(0),sum_down(0),RSI_(0) ,
MA_5(0),MA_10(0),MA_20(0) ;
//RSI
sum_up = 0 ;
sum_down = 0 ;
for x = 0 to len-1 begin
if c[x]-c[x+1]>0 then begin
sum_up = sum_up + (c[x]-c[x+1]) ;
end ;
if c[x]-c[x+1]<0 then begin
sum_down = sum_down - (c[x]-c[x+1]) ;
end ;
end ;
if ( sum_up + sum_down )<>0 then
RSI_ = sum_up / ( sum_up + sum_down ) *100 ;
//MA
MA_5 = Average(c,5) ;
MA_10 = Average(c,10) ;
MA_20 = Average(c,20) ;
if marketposition<=0 and c>maxlist(MA_5,MA_10,MA_20) then
buy 1 share at next bar market ;
if marketposition>=0 and c<minlist(MA_5,MA_10,MA_20) then
sellshort 1 share at next bar market ;
if marketposition>0 and c<MA_5 and RSI_<80 then
sell all shares at next bar market ;
if marketposition<0 and c>MA_5 and RSI_>20 then
buytocover all shares at next bar market ;
if dayofmonth(date)>14 and dayofmonth(date)<22 and dayofweek(date)=3 then
setexitonclose ;
邏輯中文翻譯:
做出RSI指標 |
做出5日、10日和20日均線 |
當收盤價大於三條均線時做多 |
當收盤價小於三條均線時做空 |
當收盤價小於5日均線且RSI小於80時,多單出場 |
當收盤價大於5日均線且RSI大於20時,空單出場 |
若收盤價小於MA,多單平倉 |
結算時出場 |
權益曲線:
回測績效檢視:
歷年績效分析:
網路名師果然不可信,大家還是小心一點,不然只會越賠越多!