最新消息

[公告2014/05/30] 如有需要將部落格中,任何一篇文章的程式碼使用在商業用途,請與我聯繫。

[公告2015/04/26] Line版的 iInfo程式與投資應用 群組已上線想加入的朋友們,請先查看 "入群須知" 再與我聯繫 Line : aminwhite5168,加入請告知身分與回答 "入群須知" 的問題。

[公告2018/04/22] 台北 Python + Excel VBA 金融資訊爬蟲課程,課程如網頁內容 金融資訊爬蟲班:台北班 Python 金融資訊爬蟲、EXCEL VBA 金融資訊爬蟲

[公告2019/01/08] 請注意:我再次重申,部落格文章的程式碼,是要提供各位參考與學習,一旦網頁改版請自行修改,別要求東要求西要我主動修改,你們用我寫東西賺錢了、交差了,請問有分我一杯羹嗎?既然賺錢沒分我,請問有什麼理由要求我修改,如果沒能力改,就花錢來找我上課。

[公告2019/12/01] 若各位有 Excel VBA 案子開發需求,歡迎與我聯繫,可接案處理。

[公告2020/05/22] 頁面載入速度慢,起因為部分JS來源(alexgorbatchev.com)失效導致頁面載入變慢,目前已做調整,請多見諒。

2016年5月22日 星期日

手單或程式單使用KD指標當作進出場的績效好不好?

在交易上KD指標是交易市場中最常被使用的一種技術分析工具,可是這樣的指標是否真能賺錢呢?我們就用MultiCharts來驗證一下。
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來代入計算,經過長期的平滑的結果,起算基期雖然不同,但會趨於一致,差異很小。
在一般的技術分析的書籍常會見到以下的說明:
  1. 當K值大於80,表示當日收盤價處於偏高之價格區域,即為超買狀態,應該手中多單出場,並反手作空單。
  2. 當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元

以上內容僅供教學參考,不做任何投資教學使用,請勿以此做為投資參考,本文章不做任何盈虧負責。