要改成台股版,最怕的不是程式寫不出來,而是規則本身搞錯:停損價設在不存在的價位、停利價超過漲停根本不可能成交、成本算漏了一半,所以這個步驟先串接台股資料,讓AI確認台股的規則
跟著 Claude 把美股當沖 skill 改成台股版・第 3 篇
開工前的功課:台股規則與資料來源,以及 Claude 怎麼用真實資料驗證漲跌停公式
原版跑起來了,決定要改成台股版。但我沒有馬上叫 Claude 寫程式,而是先做功課:程式需要知道哪些台股規則?資料從哪裡來?這一篇記錄整理規則的過程,以及 Claude 拿 35 筆真實資料驗證漲跌停公式的經過。
1. 為什麼先做功課
第 1 篇提到,原版程式在每一支小程式裡都寫死了美股的規則。要改成台股版,最怕的不是程式寫不出來,而是規則本身搞錯:停損價設在不存在的價位、停利價超過漲停根本不可能成交、成本算漏了一半。這些錯誤不會讓程式當掉,只會默默給你錯的數字。
所以這一步的目標很單純:
- 準備資料一鍵連上 FinMind
- 固定規則寫給 Claude
- 整理規則程式要知道的
- 真實驗證拿資料比對
- 選方案哪些要付費
小辭典
- FinMind
- 提供台股資料的服務,有股價、漲跌停、交易日曆、法人買賣、財報、新聞等。免費註冊就能用一部分,進階資料要付費方案。
- token
- 一串像密碼的文字,證明「這是我的帳號在查資料」。等同密碼,不能給別人看,也不要貼進任何對話。
- 環境變數
- 電腦裡的一個小設定欄位,程式可以讀取,不必把 token 寫在程式或對話裡。
- MCP(連接工具)
- 讓 Claude 能直接使用外部服務的接口。接上 FinMind 的 MCP 後,Claude 在對話中就能直接查台股資料。
- 升降單位
- 股價每次跳動的最小單位,例如 30 元的股票一次跳 0.05 元。
2. 準備資料來源:FinMind 帳號,一鍵連上 Claude
原版用的是美股的免費資料,台股我選擇 FinMind。要讓 Claude 用它查資料,需要兩件事:一個 FinMind 帳號(和它的 token),以及把 FinMind 接到 Claude 上。
步驟 1:註冊 FinMind,複製 token
- 到 FinMind 官網免費註冊,並完成 email 驗證(沒驗證的帳號 token 會無法使用)。
- 登入後到會員頁面,複製自己的 token。先放在剪貼簿就好,不要貼到任何對話裡。
步驟 2:用一鍵安裝工具接上 Claude(Windows)
把 FinMind 接到 Claude,原本要手動改好幾個設定檔。為了讓初學者不用碰這些,我寫了一個一鍵安裝工具,放在 GitHub 上免費使用:
需要的東西:Windows 10 或 11、已安裝 Claude 桌面版(Claude Code 有裝就一起設定,沒裝會自動跳過),以及上一步複製的 token。
- 下載:在 GitHub 頁面按綠色的 Code 按鈕 →「Download ZIP」,解壓縮後找到
setup_finmind.ps1。 - 完全關閉 Claude 桌面版:在螢幕右下角系統匣的 Claude 圖示按右鍵,選「結束」。只關視窗不夠,因為工具要修改 Claude 的設定檔。
- 執行:在
setup_finmind.ps1上按右鍵,選「使用 PowerShell 執行」(不是直接雙擊)。 - 貼上 token:畫面提示時貼上 token 並按 Enter。貼上時畫面不會顯示任何字,這是正常的保護設計。
- 等它跑完:六個步驟完成後會顯示「全部完成!」。
- 重新打開 Claude 桌面版。如果有開著的 Claude Code 或終端機視窗,也要關掉重開。
一鍵工具幫你做了這些事
- 先用 token 實際向 FinMind 查一次,確認 token 有效(無效會請你重新輸入)。
- 把 token 存成使用者環境變數
FINMIND_TOKEN,之後 Claude 寫的程式可以直接讀取。 - 檢查並自動安裝 uv(FinMind 連接工具需要它來執行)。
- 在 Claude 桌面版的設定加入 FinMind 連接工具(MCP),修改前會先備份原本的設定檔。
- 在 Claude Code 加入 FinMind 連接工具,所有專案都能使用。
- 寫入一份全域的 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:升降單位(價格跳動單位)
| 股價 | 未滿 10 | 10–50 | 50–100 | 100–500 | 500–1000 | 1000 以上 |
|---|---|---|---|---|---|---|
| 股票 | 0.01 | 0.05 | 0.1 | 0.5 | 1 | 5 |
| ETF | 0.01 | 50 元以下 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.5 | 298.65 / 244.35 | 298.5 / 244.5 |
| 2330 | 股票,1000 元以上(一檔 5) | 2135 | 2348.5 / 1921.5 | 2345 / 1925 |
| 2884 | 股票,漲停跨到 50 元以上 | 47.6 | 52.36 / 42.84 | 52.3 / 42.85 |
| 0050 | ETF,50 元以上(一檔 0.05) | 97.45 | 107.195 / 87.705 | 107.15 / 87.75 |
| 00878 | ETF,50 元以下(一檔 0.01) | 31.99 | 35.189 / 28.791 | 35.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 |
| 交易日曆 | TaiwanStockTradingDate | Free |
| 股票清單 | TaiwanStockInfo | Free |
| 日線掃描 | TaiwanStockPrice | 逐檔查 Free;一次抓全市場 Backer |
| 新聞 | TaiwanStockNews | Free |
| 財報與月營收 | TaiwanStockFinancialStatements、TaiwanStockMonthRevenue | Free |
| 三大法人 | TaiwanStockInstitutionalInvestorsBuySell | Free |
| 處置股 | TaiwanStockDispositionSecuritiesPeriod | Backer |
| 暫停先賣後買 | TaiwanStockDayTradingSuspension | Backer |
| 盤中分 K、模擬勝率 | TaiwanStockKBar(1 分 K) | Sponsor |
| 即時報價 | taiwan_stock_tick_snapshot | Sponsor |
| 方案 | 月費(撰文時) | 每小時查詢次數 | 適合這個系列的哪一段 |
|---|---|---|---|
| Free | 免費 | 600 次(註冊並帶 token) | 第一階段:停損停利、計算張數、風控(處置股會改成警告) |
| Backer | NT$699 | 1,600 次 | 加上處置股檢查、全市場盤前掃描 |
| Sponsor | NT$999 | 6,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 官方最新公告為依據。








![[VIP] 定期定額0050+正2輪動,賺更多跌更少](https://aplus.trading/wp-content/uploads/2026/11/cover2-150x150.jpg)
