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

0Shares
Image

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

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

開工前的功課:台股規則與資料來源,以及 Claude 怎麼用真實資料驗證漲跌停公式

原版跑起來了,決定要改成台股版。但我沒有馬上叫 Claude 寫程式,而是先做功課:程式需要知道哪些台股規則?資料從哪裡來?這一篇記錄整理規則的過程,以及 Claude 拿 35 筆真實資料驗證漲跌停公式的經過。

  • 適合:想把交易規則交給程式的人
  • 工具:Claude 桌面版、FinMind、一鍵安裝工具
  • 重點:規則整理、資料驗證、方案選擇

1. 為什麼先做功課

第 1 篇提到,原版程式在每一支小程式裡都寫死了美股的規則。要改成台股版,最怕的不是程式寫不出來,而是規則本身搞錯:停損價設在不存在的價位、停利價超過漲停根本不可能成交、成本算漏了一半。這些錯誤不會讓程式當掉,只會默默給你錯的數字。

所以這一步的目標很單純:

  1. 準備資料一鍵連上 FinMind
  2. 固定規則寫給 Claude
  3. 整理規則程式要知道的
  4. 真實驗證拿資料比對
  5. 選方案哪些要付費

小辭典

FinMind
提供台股資料的服務,有股價、漲跌停、交易日曆、法人買賣、財報、新聞等。免費註冊就能用一部分,進階資料要付費方案。
token
一串像密碼的文字,證明「這是我的帳號在查資料」。等同密碼,不能給別人看,也不要貼進任何對話。
環境變數
電腦裡的一個小設定欄位,程式可以讀取,不必把 token 寫在程式或對話裡。
MCP(連接工具)
讓 Claude 能直接使用外部服務的接口。接上 FinMind 的 MCP 後,Claude 在對話中就能直接查台股資料。
升降單位
股價每次跳動的最小單位,例如 30 元的股票一次跳 0.05 元。

2. 準備資料來源:FinMind 帳號,一鍵連上 Claude

原版用的是美股的免費資料,台股我選擇 FinMind。要讓 Claude 用它查資料,需要兩件事:一個 FinMind 帳號(和它的 token),以及把 FinMind 接到 Claude 上。

步驟 1:註冊 FinMind,複製 token

  1. 到 FinMind 官網免費註冊,並完成 email 驗證(沒驗證的帳號 token 會無法使用)。
  2. 登入後到會員頁面,複製自己的 token。先放在剪貼簿就好,不要貼到任何對話裡。

步驟 2:用一鍵安裝工具接上 Claude(Windows)

把 FinMind 接到 Claude,原本要手動改好幾個設定檔。為了讓初學者不用碰這些,我寫了一個一鍵安裝工具,放在 GitHub 上免費使用:

需要的東西:Windows 10 或 11、已安裝 Claude 桌面版(Claude Code 有裝就一起設定,沒裝會自動跳過),以及上一步複製的 token。

  1. 下載:在 GitHub 頁面按綠色的 Code 按鈕 →「Download ZIP」,解壓縮後找到 setup_finmind.ps1。
  2. 完全關閉 Claude 桌面版:在螢幕右下角系統匣的 Claude 圖示按右鍵,選「結束」。只關視窗不夠,因為工具要修改 Claude 的設定檔。
  3. 執行:在 setup_finmind.ps1 上按右鍵,選「使用 PowerShell 執行」(不是直接雙擊)。
  4. 貼上 token:畫面提示時貼上 token 並按 Enter。貼上時畫面不會顯示任何字,這是正常的保護設計。
  5. 等它跑完:六個步驟完成後會顯示「全部完成!」。
  6. 重新打開 Claude 桌面版。如果有開著的 Claude Code 或終端機視窗,也要關掉重開。

一鍵工具幫你做了這些事

  1. 先用 token 實際向 FinMind 查一次,確認 token 有效(無效會請你重新輸入)。
  2. 把 token 存成使用者環境變數 FINMIND_TOKEN,之後 Claude 寫的程式可以直接讀取。
  3. 檢查並自動安裝 uv(FinMind 連接工具需要它來執行)。
  4. 在 Claude 桌面版的設定加入 FinMind 連接工具(MCP),修改前會先備份原本的設定檔。
  5. 在 Claude Code 加入 FinMind 連接工具,所有專案都能使用。
  6. 寫入一份全域的 Claude 個人指示(CLAUDE.md),包含兩條規則:token 從環境變數讀取、台股資料優先用 FinMind。

工具可以重複執行,不會產生重複設定。之後換 token 或換電腦,再執行一次就好。

步驟 3:確認接上了

在 Claude 桌面版開一個新對話,輸入:

用 FinMind 查一下 2330 的基本資料

如果回答裡有台積電的產業類別等資料,就代表接上了。

token 等同密碼

依工具說明,token 只會存在你自己的電腦上(環境變數、Claude 桌面版與 Claude Code 的設定檔),除了向 FinMind 驗證之外不會上傳到其他地方。所以這些設定檔不要分享給別人,token 也不要貼進對話或公開的程式碼。萬一外流,到 FinMind 會員頁面重設 token(舊的會立刻失效),再執行一次工具即可。

Mac 使用者、或右鍵執行被擋下

Mac:這個工具只支援 Windows。Mac 使用者請參考 FinMind 官方的 MCP 設定說明。

視窗一閃就關掉,或出現「不允許執行指令碼」:這是 Windows 的安全設定。在 setup_finmind.ps1 所在的資料夾空白處,按住 Shift 再按右鍵,選「在這裡開啟 PowerShell 視窗」,貼上下面這行並按 Enter:

powershell -ExecutionPolicy Bypass -File .\setup_finmind.ps1

這個工具需要你親手貼上 token,所以請自己執行,不要請 Claude 代為執行。

3. 寫一份給 Claude 的固定規則

每開一個新對話,Claude 都不記得上次說過什麼。像「台股資料一律用 FinMind」「不要跟我要 token」這種每次都適用的規則,可以寫進 Claude 的個人指示檔(CLAUDE.md),之後每個對話都會自動遵守。

一鍵工具已經自動寫入兩條基本規則。我在這個基礎上又多加了幾條,完整內容大致如下:

## FinMind
- FinMind API token 存在環境變數 FINMIND_TOKEN,程式一律從環境變數讀取。
- 不要向我要 token,也不要把 token 寫進任何檔案。
## 台股資料來源
- 台股資料(股價、K 線、三大法人、融資融券、月營收、財報、期貨選擇權)一律優先用 FinMind。
- 網路搜尋只用於新聞與事件解讀。
- 不同來源數字有出入時,以 FinMind 為準,並告訴我差異。

想加上後面幾條,直接請 Claude 幫你補:

在我的 Claude 個人設定(CLAUDE.md)補上以下規則,原本的內容保留:網路搜尋只用於新聞與事件解讀;不同來源的數字有出入時,以 FinMind 為準,並告訴我差異。

提問時還是要說「用 FinMind 資料」

Claude 也會使用網路搜尋,就算寫了規則,也不保證每次都選 FinMind。網路上抓到的數字可能零散或過時,會直接影響計算結果。所以重要的查詢,最好在問題裡明講,例如:「幫我查 2409 今天的漲跌停價,資料一律從 FinMind 抓取」。而「數字有出入時告訴我差異」這條規則,可以在來源不一致時提醒你。

4. 程式需要知道的 9 條台股規則

準備好之後,我請 Claude 整理規則,而且每一條都要說明「程式要怎麼處理」:

要把這套美股 skill 改成台股版,幫我整理程式需要知道的台股交易規則。
每一條都說明:規則是什麼、跟美股差在哪、程式要怎麼處理。法規和費率請查證最新資料。

以下是整理後的結果(法規與費率為撰文時資料,請以官方最新公告為準)。

規則 1:交易時間

時段時間程式要怎麼處理
開盤集合競價08:30–09:00 收單,09:00 撮合09:00 第一筆是競價結果,第一根 K 棒量特別大,計算量能時要注意
盤中連續交易09:00–13:25以 5 分 K 計算,一天共 54 根(09:00–13:30)
收盤集合競價13:25–13:30無法用連續交易出場,平倉時間要早於 13:25,預設 13:20

時區固定是台北時間(UTC+8),沒有夏令時間,比美股的紐約時間簡單很多。

規則 2:升降單位(價格跳動單位)

股價未滿 1010–5050–100100–500500–10001000 以上
股票0.010.050.10.515
ETF0.0150 元以下 0.01;50 元以上 0.05

程式要處理三件事:

  • 每個價格都要落在合法檔位上。30 元的股票,29.33 不是合法價格,只能是 29.30 或 29.35。
  • 取整方向有講究。停損往下取(離進場價遠一點,不會因為取整而變緊),停利往上取(至少達到想要的報酬)。
  • 跨價格區間會換單位。50.0 元往下一檔是 49.95,不是 49.9;49.95 往上一檔是 50.0,再上去是 50.1。

規則 3:漲跌停

漲跌幅限制是前一日參考價的 ±10%。計算方式:

  • 漲停價 = 參考價 × 1.1,依升降單位無條件捨去。
  • 跌停價 = 參考價 × 0.9,依升降單位無條件進位。
  • 升降單位依「算出來的價格」所在的區間決定,不是依參考價。

程式要做的:進場價必須在漲跌停之間;停利價超過漲停就不可能成交,直接拒絕;停損價在跌停價或以下時要警告,因為鎖跌停時可能賣不掉。這條公式下一節會用真實資料驗證。

規則 4:張與零股

一張是 1,000 股,部位計算要以「張」為單位。不到一張的是零股,盤中零股另外交易,採集合競價:撮合間隔在 2024 年 12 月 2 日縮短為每 5 秒一次。零股的成交量通常小得多,不適合頻繁當沖,所以程式預設只算整張,零股要在設定中開啟。

規則 5:交易成本

項目費率說明
手續費成交金額 × 0.1425%買、賣各收一次;券商常有折扣(例如 6 折);每筆有最低收費(常見 20 元)
證交稅(一般)0.3%賣出時收
證交稅(現股當沖)0.15%減半優惠目前適用到 2027 年 12 月 31 日
證交稅(股票型 ETF)0.1%賣出時收

舉例:一張 26.55 元買進、27.0 元賣出,手續費 6 折:買進手續費 22 元、賣出手續費 23 元、當沖證交稅 40 元,來回成本 85 元。這筆的價差獲利是 450 元,成本就吃掉將近兩成。原版完全沒有算成本,這是台股版一定要補的地方,第 4 篇會詳細看成本對策略的影響。

規則 6:當沖資格

現股當沖不是開戶就能做。依證交所規定,一般需要開戶滿 3 個月、最近一年成交 10 筆以上(已開立信用交易帳戶者不受此限),並向券商申請、簽署相關同意書與風險預告書。實際條件以你的券商為準。

程式的處理:設定檔裡有一個「我已確認有當沖資格」的開關,預設是關閉。沒打開之前,風控會擋下所有當沖單。這是刻意的設計,第 5 篇會說明。

規則 7:暫停先賣後買

先賣後買(先賣出、再買回)屬於放空性質。遇到除權息、股東會、現金增資、ETF 分配收益等情況,個股會被暫停先賣後買一段時間。台股版第一階段只做「先買後賣」,先賣後買一律擋下。

規則 8:處置股

股價波動異常的股票會被列為處置股,處置期間改成分盤集合競價(例如每 5 分鐘或 20 分鐘撮合一次)。這時「開盤 15 分鐘突破高點」的邏輯完全失效。例如 2455 在 2026 年 11 月 11 日到 17 日是處置期間。程式預設擋下處置股。

規則 9:休市日

FinMind 的交易日曆會列出整個年度的交易日,包含未來的日期,所以程式可以事先知道哪天休市(例如 2026 年 10 月 9 日國慶連假)。但颱風假這類臨時休市無法事先得知,這點要記得。

一份「規則 → 程式」對照表的價值

這 9 條後來都變成台股版共用模組裡的一個個功能:取價、算漲跌停、算成本、判斷交易時間。先把規則講清楚,寫程式時就只是「照表施工」。

5. 驗證:漲跌停公式對不對?

網路上漲跌停的算法有好幾種寫法,「捨去還是進位」「用參考價還是算出來的價格決定升降單位」很容易搞錯。所以我請 Claude 不要只是相信自己整理的公式:

用 FinMind 的漲跌停資料(TaiwanStockPriceLimit),驗證你整理的漲跌停公式。
至少涵蓋每一個升降單位的價格區間,也要包含 ETF。每一筆都比對,有任何不符就告訴我。

Claude 的回報

抓了 6 檔股票、各 5 個交易日,共 35 筆實際資料,涵蓋 10–50 元、50–100 元、100–500 元、1000 元以上,以及 50 元以下和以上的 ETF。用公式算出的漲停價與跌停價,35 筆全部與 FinMind 一致。這 35 筆也保存下來,當作之後程式的自動測試資料。

代號類型參考價× 1.1 / × 0.9漲停/跌停(公式=FinMind)
2603股票,100–500 元(一檔 0.5)271.5298.65 / 244.35298.5 / 244.5
2330股票,1000 元以上(一檔 5)21352348.5 / 1921.52345 / 1925
2884股票,漲停跨到 50 元以上47.652.36 / 42.8452.3 / 42.85
0050ETF,50 元以上(一檔 0.05)97.45107.195 / 87.705107.15 / 87.75
00878ETF,50 元以下(一檔 0.01)31.9935.189 / 28.79135.18 / 28.80

有兩筆最有代表性:

  • 2884:參考價 47.6 在「10–50 元,一檔 0.05」的區間,但算出來的 52.36 已經跨進「50–100 元,一檔 0.1」,要用 0.1 捨去,得到 52.3。如果誤用參考價的升降單位(0.05),會算成 52.35,而這在 50 元以上根本不是合法價格。
  • 0050:ETF 在 50 元以上一檔 0.05,所以 107.195 捨去成 107.15。如果把它當一般股票(100 元以上一檔 0.5),會算成 107.0,差了三檔。

這些細節光看公式很難發現,用真實資料一比就清楚了。

驗證過的資料,變成永久的測試

Claude 把這 35 筆存成測試資料。之後只要有人改到漲跌停的程式,測試就會自動重新比對,算錯會立刻發現。

順便查清楚的幾件事

  • 交易日曆含未來日期:查 2026 年 10 月到 2027 年 2 月,FinMind 已經列出未來的交易日。
  • 台股代號可能帶英文字母:例如 00980D、00679B(債券 ETF)。程式判斷代號格式時要允許,不能只收 4 位數字。
  • 處置股、暫停先賣後買的資料要 Backer 方案:漲跌停和交易日曆是免費的。

6. 資料集與方案怎麼選

把每個功能需要的資料對應到 FinMind 的資料集,就知道哪些要付費(資料集名稱是 FinMind 裡的正式名稱,請 Claude 查資料時可以直接用):

功能FinMind 資料集方案
漲跌停檢查TaiwanStockPriceLimit(需指定代號)Free
交易日曆TaiwanStockTradingDateFree
股票清單TaiwanStockInfoFree
日線掃描TaiwanStockPrice逐檔查 Free;一次抓全市場 Backer
新聞TaiwanStockNewsFree
財報與月營收TaiwanStockFinancialStatements、TaiwanStockMonthRevenueFree
三大法人TaiwanStockInstitutionalInvestorsBuySellFree
處置股TaiwanStockDispositionSecuritiesPeriodBacker
暫停先賣後買TaiwanStockDayTradingSuspensionBacker
盤中分 K、模擬勝率TaiwanStockKBar(1 分 K)Sponsor
即時報價taiwan_stock_tick_snapshotSponsor
方案月費(撰文時)每小時查詢次數適合這個系列的哪一段
Free免費600 次(註冊並帶 token)第一階段:停損停利、計算張數、風控(處置股會改成警告)
BackerNT$6991,600 次加上處置股檢查、全市場盤前掃描
SponsorNT$9996,000 次盤中進場判斷、模擬勝率

價格與內容請以 FinMind 官網為準。

我的決定

  • 第一階段只用免費資料就能完成。停損停利、計算張數、風控需要的漲跌停和交易日曆都是免費的。
  • 拿不到的資料,程式要誠實說出來。例如沒有 Backer 方案查不到處置股,風控會顯示「無法確認是否為處置股」的警告;想更嚴格,也可以設定成「拿不到資料就擋下」。
  • Sponsor 等到第三階段(盤中)再升級。沒必要一開始就付最貴的方案。
  • Yahoo 只當備援。Yahoo 也有台股的分 K(代號寫成 2330.TW),但有延遲且非官方。

7. 這一步學到的事

01

規則錯了,程式不會報錯

它只會默默給你錯的數字。所以規則要先整理清楚,再寫程式。

02

別只相信公式,要拿真實資料比對

35 筆實際資料比任何解釋都有說服力,還能變成永久的自動測試。

03

固定的要求寫進個人指示

資料來源、token 的處理方式,寫一次,每個對話都遵守。

04

token 等同密碼

交給一鍵工具存在自己電腦上,不貼進對話、不放進公開的程式碼。

8. 你可以照著說的話

用 FinMind 查一下 2330 的基本資料
確認一下環境變數 FINMIND_TOKEN 有沒有設定好。只要告訴我有或沒有,不要顯示內容。
在我的 Claude 個人設定(CLAUDE.md)補上以下規則,原本的內容保留:網路搜尋只用於新聞與事件解讀;不同來源的數字有出入時,以 FinMind 為準,並告訴我差異。
要把這套美股 skill 改成台股版,幫我整理程式需要知道的台股交易規則。每一條都說明:規則是什麼、跟美股差在哪、程式要怎麼處理。法規和費率請查證最新資料。
用 FinMind 的漲跌停資料(TaiwanStockPriceLimit),驗證你整理的漲跌停公式。至少涵蓋每一個升降單位的價格區間,也要包含 ETF。每一筆都比對,有任何不符就告訴我,並把資料存成之後的測試資料。
列出每個功能需要的 FinMind 資料集和方案。我現在的方案查得到哪些?查不到的,程式應該怎麼處理?

常見問題

一定要用 FinMind 嗎?

不一定,但這個系列以它為主。它的台股資料集完整,免費方案就能完成第一階段。換成其他資料來源,記得也要用真實資料驗證規則。

出現「Token is illegal」?

通常是 Claude 桌面版還在用舊的 token。從右下角系統匣按右鍵「結束」,完全關閉後再打開。還是不行,確認 token 有完整複製、email 已驗證,再執行一次一鍵工具。

不小心把 token 貼進對話了怎麼辦?

到 FinMind 會員頁面重設 token(舊的會立刻失效),再執行一次一鍵工具,用新的 token 更新設定。

設定改壞了,Claude 桌面版打不開或怪怪的?

一鍵工具修改前會先備份。到 %APPDATA%\Claude\ 資料夾,把 claude_desktop_config.json.bak 改名回 claude_desktop_config.json,就能還原成安裝前的設定。

我用 Mac 怎麼辦?

一鍵工具只支援 Windows。Mac 請參考 FinMind 官方的 MCP 設定說明,其餘步驟(個人規則、提問方式)都一樣。

這些規則會變嗎?

會。例如當沖證交稅減半目前適用到 2027 年底,盤中零股的撮合間隔也調整過好幾次。所以費率都放在設定檔裡,可以自己改,不寫死在程式中。

颱風假怎麼辦?

交易日曆無法事先知道臨時休市。遇到颱風天,以證交所當天公告為準,不要依賴程式判斷。

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

台股版把這些規則集中在共用模組 tw-common/tw_market.py,主要函式如下:

tick_size(price, etf)        # 升降單位
floor_tick / ceil_tick       # 往下/往上取到合法檔位(停損/停利)
next_tick / prev_tick        # 上一檔/下一檔(自動跨區間)
price_limits(reference, etf) # (漲停價, 跌停價)
round_trip_cost(...)         # 買賣手續費 + 證交稅
loss_at_stop / net_reward_risk
# FinMind API(token 放在 Authorization 標頭)
GET https://api.finmindtrade.com/api/v4/data?dataset=TaiwanStockPriceLimit&data_id=2603&start_date=2026-11-13&end_date=2026-11-13

價格一律用 Python 的 Decimal 計算,避免 47.3 × 1.1 這類浮點誤差。

下一篇預告

規則整理好、資料也驗證過了,終於要開始寫程式。下一篇會說明為什麼我決定「重寫」而不是修改原版,以及台股版的停損停利和張數計算。最讓我意外的發現是:一個看起來報酬風險比 1:1 的計畫,扣掉交易成本後,只剩 0.62。

本文僅為軟體工具教學與開發經驗分享,不構成任何投資建議。當沖風險極高,請自行評估並為自己的交易決策負責。文中法規、費率、方案價格以撰文時為準,請以證交所、券商與 FinMind 官方最新公告為依據。

0Shares


0 Comments
Oldest
Newest Most Voted

相關文章

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

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

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