這篇文章將分享一個程式交易策略,以KD值為主,並且搭配其他的指標。 有很多人投資是看KD值的,但KD值的看法五花八門,究竟哪一種比較好用? 參數這麼多,究竟怎麼調績效比較好? 這篇文章示範一個中長期的程式交易策略,並講解製作策略的思路。
技術指標選股不是只找買點
技術指標選股常見的誤區,是把單檔看盤的買賣點直接搬到全市場。選股要解的是排序問題:今天全市場有上千檔股票,哪一些比較值得放進候選名單?KD 值可以提供價格相對位置,但還要搭配趨勢、估值與基本面,才比較像一套可執行策略。
| 技術指標用法 | 單檔看盤 | 全市場選股 |
|---|---|---|
| KD 黃金交叉 | 找短線轉強 | 訊號太多,容易高換手 |
| 長週期 KD | 看中期價格位置 | 可當橫斷面篩選欄位 |
| 均線 | 判斷趨勢與支撐壓力 | 過濾長期弱勢股 |
| ROE、估值 | 單檔研究公司體質 | 避免只追技術面買到基本面弱股 |
因此本文的主軸是「KD + 三個條件」:用 KD 找價格結構,再用短均線、年線與 ROE 降低追高和基本面風險。若想理解 KD 鈍化本身,可讀高檔 KD 鈍化回測;若想比較多個指標,見技術分析選股總覽。
寫策略並模擬回測績效是非常重要的,通過回測,就能一眼看出來你的策略有沒有效。有人說歷史不等於未來,我覺得更正確的說,應該是「歷史不完全等於未來」,每年都有很多不同的黑天鵝,不同的國際政治變化,政黨輪替,然而假如你可以找到一個策略,不論環境如何變化,但是績效一直有穩定的成長,就代表你有可能找到了「歷史與未來會相同的某種選股邏輯」!
KD值
今天我們就來試驗一下KD值程式交易選股, 首先,我傾向於把指標的參數拉長,原因是這樣比較容易抓的到股價的規律(以日K來說)。 不過我個人的研究發現趨勢指標型態不一樣,選出來的股票也會不一樣, 重點不只在股價會漲,也要符合可量化、可重複檢查的價格結構。
這邊我選擇使用RSV 50, K 20, D 20,當作是參數(台股通常是9、3、3)。 當K大於D的時候買入,反之賣出,每天選股並重新平衡資產,可以得到以下的績效:


紅色的是有考慮手續費,而藍色的則無。
然而這樣的選法是有一些弊端的!(尤其是手續費很高昂,股票換手率太高) 所以接下來我們就想辦法來解決,順便提高一下程式交易的績效~
長期趨勢漲,可能會買在高點!
當K > D時,股價會衝的很高,但是這時候買入就會買在高點了! 所以我們在使用長線KD值時,可以增加一個條件來確保不會買在高點:
當天股價 < 10日平均
除了股價不能太高,同時股價也不能太低!
股價必須高於年線
我們在此參數下選出來的股票,假如股價沒有過年線的話,很容易漲到年線附近時,就被彈了回去,所以乾脆我們選股的時候,就直接選高於年線的,就不會有這個問題了XD
增加一些常用的財務指標
程式交易除了用技術指標外,我們也可以增加一些財務指標,例如ROE: ROE近1季大於ROE近4季平均
當然也有很多別的選項,我這邊就選一個好用的入門款XD,
三種條件依序加上後的結果
可以發現,從下到上依序就是:
- 使用KD值
- 除了上述以外,額外增加:股價短線別太高
- 除了上述以外,額外增加:股價長線別太低
- 除了上述以外,額外增加:財務數據

不過以上是沒有增加手續費的,因為我的回測系統每天都會重新權益平衡,所以有非常多不必要的摩擦成本,此時手續費折扣就非常的重要了!
最後我新增了一些不太重要的條件(為了減少股票檔數),整理成下圖,紅色為有手續費,藍色沒有手續費,只能說以人工調配持股應該會有更好的成果~有興趣可以研究看看!


三個條件各自解決什麼問題
把條件逐層加上去,比一次丟一堆指標更容易判斷策略是否真的改善。本文的三個額外條件各自負責不同風險:
| 條件 | 解決的問題 | 可能的副作用 |
|---|---|---|
| 股價低於 10 日均線 | 避免 KD 強勢後追在短線尖峰 | 可能錯過一路不回頭的強勢股 |
| 股價高於年線 | 避免買到長期弱勢反彈 | 會排除早期反轉股 |
| ROE 近 1 季高於近 4 季平均 | 避免純技術面、補一層基本面品質 | 財報公布時間要正確對齊 |
這種分工比「找一個神奇指標」更實用。技術指標負責描述價格行為,財務指標負責排除體質太差的公司,回測負責檢查交易成本後是否仍有改善。若要把它做成現代版策略,建議用 FinLab AI 輔助安裝流程 重建資料,並固定每月或每季換股,而不是每天全市場重新平衡。
如何把這篇舊策略改成現代回測流程
這篇文章保留了早期研究筆記的語氣,真正要帶走的是策略拆解方式。若用現在的研究流程重做,會先固定股票池與成本口徑,再把 KD、均線、ROE 三個條件分開測,最後才合成策略。這樣可以知道績效改善來自哪一層,而不是只看到最後一張漂亮曲線。
| 重做步驟 | 目的 |
|---|---|
| 固定上市櫃股票池與流動性門檻 | 避免回測買到實務上難成交的小型股 |
用 etl:adj_close 或還原價計算長期報酬 |
避免除權息讓價格序列失真 |
| 分別測 KD、均線、ROE | 確認每個條件是否真的有貢獻 |
| 加入月頻或季頻換股 | 降低每日重新平衡造成的交易成本 |
| 做分段檢查 | 確認結果不是只靠單一多頭年份 |
這樣重做後,技術指標選股才會從「看起來有道理」變成「可以被檢查」。若你想看新版、同口徑的技術指標測試,可接著讀技術分析選股總覽,那篇把多個指標放在同一個回測框架下比較。
還有一種情況要避開:當市場成交量急縮、族群輪動很快,KD 這類價格位置指標會頻繁翻訊號。此時寧可降低換股頻率、提高持股分散度,或把 KD 只當候選清單條件。若把每一次交叉都當成進出場,交易成本通常會先把優勢吃掉。實單前也要檢查單月最大換手與最差月份表現,避免只看長期曲線。
常見問題(FAQ)
技術指標選股可以只看 KD 嗎?
不建議。KD 只能描述價格在近期區間的位置,無法判斷公司體質、估值與流動性。本文示範的重點就是把 KD 搭配均線與 ROE,讓訊號更接近可執行的選股策略。
KD 參數 RSV50、K20、D20 代表什麼?
RSV50 代表用 50 天高低區間計算相對位置,K20、D20 代表用較長的平滑參數處理 K 與 D。相較常見的 9、3、3,這組參數反應較慢,但更適合中長期選股。
為什麼要加股價低於 10 日均線?
長週期 KD 強勢時,股價常已經漲高。加上股價低於 10 日均線,是為了避開短線過熱的尖峰,讓買點更接近回檔後的區域。這不是保證,只是降低追高風險的設計。
為什麼還要看年線?
年線用來排除長期弱勢股。若股價低於年線,即使短線 KD 轉強,也可能只是弱勢反彈。選股策略通常寧可少抓一點早期反轉,也要避免買進長期下跌趨勢。
技術指標選股要不要加基本面?
建議要。技術指標可以幫你找動能與價格結構,基本面則能排除長期不賺錢或體質惡化的公司。本文用 ROE 當入門條件,實務上也可以搭配月營收、毛利率或估值。
這套 KD 選股策略適合實單嗎?
本文是教學與研究示範。實單前要用最新資料重跑,確認成本、滑價、換股頻率、持股檔數與容量。若資金較小,每天重新平衡不實際,應改成月頻或季頻規則再測。
延伸閱讀
投資警語:本文僅供教學參考,不構成投資建議。過去績效不代表未來表現,投資有風險。
FinLab AI
想建立自己的策略?
用自然語言描述你的選股想法,AI 自動驗證、回測、給你答案
免費開始

