KD的定義:
第n天收盤價-最近n天內最低價
RSV =────────────────×100
最近n天內最高價-最近n天內最低價
計算出RSV之後,再來計算K值與D值。
當日K值(%K)= 2/3 前一日 K值 + 1/3 RSV。
當日D值(%D)= 2/3 前一日 D值+ 1/3 當日K值。
若無前一日的K值與D值,可以分別用50來代入計算,經過長期的平滑的結果,起算基期雖然不同,但會趨於一致,差異很小。
在一般的技術分析的書籍常會見到以下的說明:
- 當K值大於80,表示當日收盤價處於偏高之價格區域,即為超買狀態,應該手中多單出場,並反手作空單。
- 當K值小於20,表示當日收盤價處於偏低之價格區域,即為超賣狀態,應該手中空單出場,並反手作多單。
可是真的是這樣嗎?以下看看實際的結果,使用以下的程式碼驗證。
Inputs : Len(9); vars : vHi(0), vLo(0), vRSV(0), K1(0), D1(0); vHi = Highest(h, Len); vLo = Lowest(L, Len); if (vHi-vLo) > 0 then begin vRSV = (c-vLo)/(vHi-vLo)*100; K1 = K1[1]*2/3+vRSV/3; D1 = D1[1]*2/3+K1/3; end; if K1 > 80 then sellshort("Buy") next bar at market; if K1 < 20 then buy("Sell") next bar at market;
執行結果
5分鐘回策略回測績效
15分鐘回策略回測績效
30分鐘回策略回測績效
60分鐘回策略回測績效
以上回測結果在在都顯示,不管交易週期是5分鐘、15分鐘、30分鐘、60分鐘,騎回測績效都是為負,尤其5分鐘績效最差,這樣證明以下所說的都是錯誤
當K值大於80,應該手中多單出場,並反手作空單。
當K值小於20,應該手中空單出場,並反手作多單。
那如果修改一下做法是不是會有不一樣的效果呢?
當K值大於80,做多單或續抱多單;當K值小於20,做空單或續抱空單。
Inputs : Len(9); vars : vHi(0), vLo(0), vRSV(0), K1(0), D1(0); vHi = Highest(h, Len); vLo = Lowest(L, Len); if (vHi-vLo) > 0 then begin vRSV = (c-vLo)/(vHi-vLo)*100; K1 = K1[1]*2/3+vRSV/3; D1 = D1[1]*2/3+K1/3; end; if K1>80 then buy("Buy") next bar at market; if K1<20 then sellshort("Sell") next bar at market;
5分鐘回策略回測績效
15分鐘回策略回測績效
30分鐘回策略回測績效
60分鐘回策略回測績效
以上回測結果在在都顯示,不管交易週期是5分鐘、15分鐘、30分鐘、60分鐘,騎回測績效都是為正,尤其是30分鐘的績效最好,這樣證明以下的作法才會比較正確。
當K值大於80,做多單或續抱多單;當K值小於20,做空單或續抱空單。
在手單操作上有確實有這樣的情況發生,故操作手單的技巧上,當K值大於80,做多單或續抱多單;當K值小於20,做空單或續抱空單。
回測期間:2000/01/01~2016/05/22
手續費:單邊600元
以上內容僅供教學參考,不做任何投資教學使用,請勿以此做為投資參考,本文章不做任何盈虧負責。