Day Trader Skill改台股版4-程式碼重寫

0Shares
Image

原版保持不動,另開一個台股版資料夾,計算的核心重寫;原版好的設計(流程分工、檔案接力、用歷史資料回放、不准吹噓的說話規範)全部保留。

跟著 Claude 把美股當沖 skill 改成台股版・第 4 篇

不是改參數,是重寫:台股版停損停利與張數計算,以及成本怎麼吃掉你的 R

規則整理好了,終於開始寫程式。這一篇記錄我為什麼決定「重寫」而不是修改原版,Claude 怎麼做出台股版的停損停利與張數計算,以及整個開發過程最讓我意外的發現:一個報酬風險比 1:1 的計畫,扣掉交易成本後只剩 0.62。

  • 適合:想知道交易成本實際影響多大的人
  • 工具:Claude 桌面版
  • 範例:2409,2026-11-13 真實漲跌停資料

1. 這一篇會做什麼

這是改版的第一階段:只做「純計算」的部分,不碰盤中資料、不碰下單,所以完全沒有風險,免費的 FinMind 資料就夠用。

  1. 決定重寫另開台股版
  2. 共用模組台股規則集中
  3. 停損停利tw-exit
  4. 計算張數tw-budget
  5. 風控tw-risk(下一篇)
  6. 測試46 個自動檢查

小辭典

R(每股風險)
進場價減去停損價。例如 29.75 買進、停損 29.35,R 就是 0.4 元。
2R、1R
停利距離是風險的幾倍。2R 代表「賺的距離是賠的距離的兩倍」。
報酬風險比
停利時賺多少 ÷ 停損時賠多少。2R 的計畫,毛報酬風險比就是 2。
開盤區間
開盤後前 15 分鐘的最高價與最低價。價格收盤站上最高價,就是「開盤區間突破」。

2. 為什麼重寫,不修改原版

一開始我以為只要「把美股的數字換成台股的」就好。但回頭看第 1 篇的研究報告,Claude 列出的問題不只是數字:

原版的問題為什麼改參數不夠
每支小程式各自複製一份時區、開收盤、假日的程式碼要改十幾個地方,漏一個就出錯,而且很難發現
價格一律取到 0.01台股要依股價分級取檔位,而且停損、停利取整的方向不同
以「股」為單位台股以「張」計,一張買不起時要有完全不同的處理
完全沒算交易成本不是改一個數字,而是每個「虧多少、賺多少」的計算都要重算
停損停利靠美國券商的 bracket 單(停損停利一起掛)台股交易所沒有這種單,整個出場的設計要重想

所以我的決定是:原版保持不動,另開一個台股版資料夾,計算的核心重寫;原版好的設計(流程分工、檔案接力、用歷史資料回放、不准吹噓的說話規範)全部保留。我對 Claude 說的是:

開始開發第一階段:
在新的資料夾 tw-trader-skill 建立台股版,原版不要動。
先做一個共用的台股規則模組(時區、交易時段、升降單位、漲跌停、交易成本),
再做停損停利、計算張數、風控三個 skill。每個都要有自動測試。

共用模組:規則只寫一次

Claude 先把第 3 篇整理的 9 條規則,寫成一個共用的「台股規則模組」(tw-common)。之後三個 skill 都從這裡取用,例如「這個價格合不合法」「漲停價是多少」「這筆交易成本多少」。規則要改,只改一個地方。

一個小代價

因為三個 skill 共用這個模組,安裝時 tw-common 資料夾一定要跟著一起放進 skills 資料夾。它本身沒有說明書,不會出現在 / 選單裡,但少了它其他 skill 都跑不動。

3. 停損停利(tw-exit)

tw-exit 做的事跟原版一樣:進場前先決定停損和停利,寫下來交給下一步。差別在於每個價格都要符合台股規則。

停損可以怎麼設

方式停損放在適合
開盤區間中點(預設)(區間高點 + 低點) ÷ 2,往下取到合法檔位開盤區間突破
開盤區間低點區間最低價想給多一點空間,但能買的張數會變少
指定價格你給的價格,不在檔位上就往下取有明確支撐價位
百分比進場價下方 X%習慣用固定比例的人
往下 N 檔進場價往下數 N 檔(跨價格區間時自動換單位)台股版新增,用「檔」思考很直覺

停利預設是 2R,也可以改成 1R、1.5R 或指定價格,一律往上取到合法檔位,確保至少達到要求的報酬。

它會拒絕什麼

  • 停損離進場價少於 2 檔:一點正常波動就會被洗出場。
  • 進場價不在合法檔位上(例如 29.73)。
  • 進場價不在今日漲跌停範圍內,或停利超過漲停價(不可能成交)。
  • 平倉時間設在 13:25 之後(收盤集合競價,無法用一般方式出場),或進場時間已經過了平倉時間。
  • 做空:第一階段只規劃做多。

實際跑一次

範例:2409 在 2026 年 11 月 13 日,開盤區間 29.1~29.6,09:20 以 29.75 進場(參考價 29.2,漲跌停 26.3~32.1,來自 FinMind 真實資料)。設定是手續費 6 折、現股當沖:

停損停利規劃:2409 做多,2026-11-13,開盤區間突破
  進場     29.75(09:20,一檔 0.05 元)
  停損     29.35  開盤區間中點 (29.6 + 29.1) / 2 = 29.35,往下取到檔位
  停利     30.55  2R(進場價 + 2 x 每股風險 = 30.55),往上取到檔位
  每股風險 0.4 元(8 檔,進場價的 1.34%)
  報酬風險比  毛 2.00;扣成本後 1.43(以 1 張估算)
  成本(1 張)停損出場 94 元、停利出場 96 元
  1 張停損虧 494 元,停利賺 704 元(皆已含成本)
  平倉時間 13:20(台北時間),不論輸贏都出場,不留倉
  今日漲跌停 26.3 ~ 32.1(參考價 29.2,來源 FinMind TaiwanStockPriceLimit)

注意第六行:毛報酬風險比 2.00,扣成本後只剩 1.43。這就是下一節要談的事。

4. 成本吃掉 R:1:1 只剩 0.62

同一筆交易,我把停利從 2R 改成 1R(30.15)再跑一次,結果讓我嚇一跳:

  報酬風險比  毛 1.00;扣成本後 0.62(以 1 張估算)
  扣成本後的報酬風險比 0.62 低於你的下限 1.0:tw-risk 會擋下這筆

拆開來看就明白了(1 張,手續費 6 折,當沖證交稅 0.15%):

停損出場(29.35)1R 停利(30.15)2R 停利(30.55)
價差−400 元+400 元+800 元
買進手續費−25 元−25 元−25 元
賣出手續費+證交稅−69 元−70 元−71 元
實際結果−494 元+305 元+704 元
扣成本後報酬風險比—305 ÷ 494 = 0.62704 ÷ 494 = 1.43

成本有兩面:賠的時候多賠,賺的時候少賺。這筆 1 張每次來回成本約 95 元,相當於 1 張風險 400 元的將近四分之一。結果帳面上「賺賠一樣多」的 1R 計畫,實際上變成「賺 305、賠 494」。

0.62 代表什麼?

報酬風險比 0.62 的計畫,勝率要超過大約 62%(494 ÷ (494 + 305))才能打平。原作者的範例用一萬次模擬得到的結論是「接近擲銅板」,也就是勝率大約五成。用 1R 停利在台股做這種策略,長期下來很可能是穩定地虧錢。

為什麼原版沒發現?

原版是為美股設計的,美股多數券商手續費很低甚至免手續費,也沒有台股這樣的證交稅,所以作者沒有把成本算進來。這不是原作者的錯,而是規則不同,結論就不同。這也是第 1 篇說「不能直接照搬」最具體的例子。

停損越近,成本占比越高

成本大致是固定的比例(手續費、證交稅都按金額計算),但你的風險是停損距離。停損設得越近,成本占風險的比例就越高。所以台股版的停損停利工具同時列出毛報酬風險比與扣成本後的報酬風險比,而且風控檢查用的是扣成本後的數字。

5. 計算張數(tw-budget)

停損停利決定之後,下一步是「買幾張」。原則跟原版一樣:停損決定張數,停損越遠,能買的越少。台股版改成以張為單位,而且「每筆最多虧多少」包含交易成本。

範例設定:資金 30 萬、永遠保留 10% 現金、每筆最多虧 1,500 元(含成本)、手續費 6 折。結果:

上限(取最小值):
  最大虧損:每筆最多虧 1,500 元(含成本) → 3 張
  部位上限:資金的 75% = 225,000 元 → 7 張
  單筆上限:200,000 元 → 6 張
  現金:資金 300,000 元 扣掉保留現金 30,000 元 = 270,000 元 → 9 張
結果:3 張(3000 股),買進價 29.75,金額 89,250 元。
停損出場虧 1,483 元(價差 1,200 元 + 成本 283 元);停利出場賺 2,109 元(已扣成本 291 元);扣成本後報酬風險比 1.42。

四個上限取最小的,這次是「最大虧損」決定只能買 3 張。

成本會讓你少買一張

如果把每筆上限改成 1,600 元:不算成本的話,4 張的價差虧損剛好 1,600 元,可以買 4 張;但算進成本,4 張停損出場實際要虧 1,977 元,所以只能買 3 張。少了成本這一步,你會在不知不覺中承擔比自己設定更大的風險。

價格跑掉了,就不要追

計畫是 29.75 進場,但等你準備下單時價格已經漲到 29.9。如果改用市價單追進去,風險變大(停損沒變)、報酬變小(停利沒變),扣成本後的報酬風險比從 1.42 掉到 0.86,工具直接拒絕:

不下單:扣成本後的報酬風險比 0.86 低於下限 1.0(2000 股停利淨賺 1,106 元、停損淨虧 1,289 元)。請用 tw-exit 調整停利或停損

一張都買不起時

把每筆上限降到 300 元,1 張的停損虧損(含成本)就要 494 元,超過上限:

不下單:買不到一張:1 張 1000 股在 29.75 買進、停損 29.35,虧損含成本 494 元,超過每筆上限 300 元。可改用更近的停損、提高每筆最大虧損,或在設定開啟零股(allow_odd_lot,流動性較差)

工具不會偷偷幫你縮小停損來湊出一張。如果在設定裡開啟零股,它會改算出 610 股,同時提醒:盤中零股是定時集合競價,成交與出場都可能不如預期,不適合頻繁當沖。

和原版不同的兩個預設

  • 預設限價單:以計畫進場價掛限價,避免市價單在急漲時追到漲停。
  • 停損停利不在券商端:台股交易所沒有「停損停利一起掛」的單,所以委託單會標註「停損只存在計畫裡」,提醒你用券商的條件單設定,或靠提醒手動出場。

6. 測試:失敗的竟然是 Claude 的心算

每寫完一個功能,Claude 都會寫自動測試:先手算「正確答案應該是多少」,再讓程式算,兩者比對。第一階段一共寫了 46 個測試。

有趣的是,開發過程中前後有 7 個測試失敗。Claude 逐一檢查後回報:

Claude 的回報

這 7 個失敗全部都是我手算的預期值錯了,程式本身是對的。例如:

  • 100.5 往下數 3 檔,我寫成 99.9,正確是 99.8(100.0 → 99.9 → 99.8)。
  • 49.95 到 50.4 之間,我數成 6 檔,正確是 5 檔(49.95 → 50.0 → 50.1 → 50.2 → 50.3 → 50.4)。
  • 一個停損中點,我心算成 49.975,實際是 49.925。
  • 價格漲到 29.9 的情境,我以為會通過,其實報酬風險比已經掉到 0.86,程式正確地拒絕了。

我覺得這段過程很有代表性:跨價格區間的檔數,連寫程式的 AI 手算都會錯,人在盤中緊張的時候只會更容易錯。這正是要把這些計算交給程式、而且要有測試的原因。

測試失敗時,先問「錯的是誰」

測試失敗不一定是程式有問題,也可能是預期值寫錯。遇到失敗時,可以請 Claude:「逐一檢查失敗的原因,告訴我錯的是程式還是測試的預期值,並說明理由。」不要讓它為了讓測試通過就隨便改程式。

最後,Claude 也實際連上 FinMind 查了一次真實的漲跌停價,確認和離線測試資料一致,並檢查所有輸出的檔案都不包含 token。

7. 這一步學到的事

01

移植不是翻譯

規則不同,計算的核心就要重寫;好的流程設計則可以保留。

02

一定要算成本

毛 1R 扣成本後只剩 0.62R。看策略時,請只看扣成本後的數字。

03

工具要敢說「不」

買不起一張、價格跑掉、報酬風險比太低,都直接拒絕並說明原因,不偷偷調整。

04

測試也會抓到預期的錯

這次 7 個失敗全是 AI 手算的錯。失敗時先判斷錯的是程式還是預期。

8. 你可以照著說的話

不管有沒有這套工具,都可以直接請 Claude 幫你算:

幫我算一筆台股當沖:2409 在 29.75 買進、停損 29.35、停利 30.55,手續費 6 折,現股當沖。
1 張停損出場虧多少、停利出場賺多少(都含手續費和證交稅)?扣成本後的報酬風險比是多少?
同一筆交易,如果停利改成 1R,扣成本後的報酬風險比變多少?勝率要多少才能打平?
我的資金 30 萬,每筆最多虧 1,500 元(含成本),這筆最多可以買幾張?列出是哪個限制決定的。
停損價要符合台股升降單位:停損往下取、停利往上取。幫我檢查這個計畫的價格是不是都合法。

想自己動手做類似的工具:

在新資料夾做一個台股停損停利計算工具:價格要符合升降單位,要檢查今日漲跌停(用 FinMind 資料),
要列出毛報酬風險比和扣成本後的報酬風險比。寫好自動測試,測試失敗時告訴我錯的是程式還是預期值。

常見問題

我的手續費折扣不是 6 折,結果會差很多嗎?

會有差,但證交稅(當沖 0.15%)是固定的,通常占成本的一半以上。折扣、最低手續費都可以在設定檔裡改成你自己的數字,工具會照你的設定算。

為什麼停損要往下取、停利要往上取?

停損往下取,取整後停損不會變得比計畫更緊;停利往上取,確保至少達到你要求的報酬倍數。兩者都是「不讓取整偷偷改變你的計畫」。

那 1R 停利就不能用嗎?

不是不能用,而是要知道扣成本後只剩約 0.6R,勝率要明顯高於六成才划算。工具的風控預設要求扣成本後至少 1.0,你可以依自己的策略調整,但要清楚代價。

台股版的程式可以下載嗎?

台股版還在開發中(目前完成第一階段),程式還會一直調整,所以暫不提供下載。等整個系列完成後,我會整理好放上 GitHub,並另外詳細說明安裝與使用方式。在那之前,你可以用上面「照著說的話」請 Claude 幫你算,或請它做一個類似的工具。

工具會幫我下單嗎?

不會。停損停利和計算張數都只寫下計畫與委託單提案,接下來還要經過風控檢查(下一篇),最後下單前也一定要你親自確認。

進階:給習慣終端機的讀者

本篇範例對應的指令(在任一空資料夾執行,R 為台股版資料夾):

python "$R/tw-exit/exit.py" plan --symbol 2409 --entry 29.75 --or-high 29.6 --or-low 29.1 --target 2R --now "2026-11-13 09:20" --write
python "$R/tw-budget/size.py" --now "2026-11-13 09:20" --write
# 停損規則:--stop or-mid | or-low | price:X | pct:X | ticks:N
# 停利規則:--target 1R | 1.5R | 2R | price:X
# 市價單:size.py --market;指定限價:size.py --limit 29.70

停損停利寫入 trader/plan.json(含毛與扣成本後的報酬風險比、漲跌停、平倉時間),張數計算寫入 trader/orders.json(含 stop_at_broker: false)。所有價格以 Decimal 計算。

下一篇預告

停損停利和張數都算好了,但在送出之前,還要經過最後一道關卡:風控。下一篇會介紹台股版新增的檢查(當沖資格、處置股、漲跌停、整張與檔位、每日風險上限),以及為什麼我刻意讓新手第一次執行時「一定會被擋下」。

本文僅為軟體工具教學與開發經驗分享,不構成任何投資建議。範例為說明計算方式,不代表任何個股的買賣建議。當沖風險極高,請自行評估並為自己的交易決策負責。費率以撰文時為準,請以券商與主管機關最新公告為依據。

0Shares


0 Comments
Oldest
Newest Most Voted

相關文章

Day Trader Skill改台股版3-台股規則驗證與資料取得

要改成台股版,最怕的不是程式寫不出來,而是規則本身搞錯:停損價設在不存在的價位、停利價超過漲停根本不可能成交、成本算漏了一半,所以這個步驟先串接台股資料,讓AI確認台股的規則

Day Trader Skill改台股版2-原版測試

整個系列的目標,是把一套美股當沖工具改成台股版。但在改之前,得先讓原版在自己電腦上跑起來、確認它真的能用。

Day Trader Skill改台股版1-改版研究

最近在研究AI開發策略,想到國外有許多人分享了他的交易Skill,那直接拿來,改成台股可用的skill會不會是個好主意呢? 接下來幾篇,想來記錄這整個改版過程,第一步是讓AI閱讀day-trader-skill,然後提供改版建議

一鍵設定 FinMind × Claude,開發策略更方便

用Claude跟Finmind開發策略一陣子,真的會上癮,想到啥策略跟AI說,AI自動去Finmind抓資料,回測,真的是省非常多時間力氣,但對於初學者,一開始設定可能打退堂鼓了,所以寫了一個程式,可以自動做好設定,讓你輕輕鬆鬆就能跟AI一起開發策略
(adsbygoogle = window.adsbygoogle || []).push({});

最近發文

加入我們

Categories

最新留言

(adsbygoogle = window.adsbygoogle || []).push({});
0
本文有想法或疑問嗎?歡迎討論x
()
x