iT邦幫忙

2026 iThome 鐵人賽

DAY 12
0

要解決的

Day 11 把 settings、skills、rules、agents 各自的內容處理好,有關 CLAUDE 加目錄設定就告一段落了。接下來要進實際的專案來測試看看,而排在最後面的專案是總體經濟與股票相關的,並要嘗試接上 GitHub Pages 的自動更新。

而這個專案需要串接外部 API,其中有些需事先申請,而且其中申請證券戶要花上幾天,不是當天想到當天就有。

所以今天不寫程式。今天只做一件事:把該辦的帳號辦一辦,該申請的金鑰申請下來,約十天後會用到(想要跟著做的話,現在就得動手)。

先給結論,約十天後的範例會用到:永豐金 Shioaji(台股)+ yfinance(美股與跨市場)+ FRED(總體經濟)。另外還需要一個 GitHub 個人帳號。


1. 今天要辦的四件事

要辦的 前提 要等多久 費用
永豐金 Shioaji API 必須先有永豐金證券帳戶 開戶需幾個工作天,API Key 當下就給 免費
FRED API Key 一個 email 註冊完當下就給 免費
yfinance 不用申請 免費
GitHub 個人帳號 一個 email 當下 免費

順序上唯一有卡點的是第一項。沒有永豐金證券的戶頭,就拿不到 Shioaji 的 API Key,而開戶審核不是即時的。打算跟著後面幾天做的話,這一項要先去辦。


2. 永豐金 Shioaji:先要有證券戶

2.1 前提:永豐金證券帳戶

Shioaji 是永豐金證券提供給自家客戶的程式交易 API,不是公開資料服務。要用它,必須是永豐金證券的客戶。

沒有戶頭的話,永豐金有線上開戶:備妥雙證件(身分證 + 健保卡或駕照)、本人名下的銀行帳戶資料,在手機或電腦上完成身分驗證與問卷,送出後等審核,開戶本身不收費。

開戶完成後會拿到帳號與密碼,這兩個是接下來每一步的基礎。

2.2 申請 API Key 與 Secret Key

有戶頭之後,剩下的都在網頁上點:

  1. 搜尋「永豐金證券 API 管理頁」並進入 (要確認是正確的 www.sinotrade.com.tw 並有類似 PythonAPIKey 字眼的網址)
  2. 按「新增 API KEY」
  3. 做一次雙因素驗證(手機或 email)
  4. 設定這把金鑰的到期日、權限(行情/帳務/下單/正式環境)、綁定帳號、IP 限制
  5. 建立成功,畫面上給出 API Key 與 Secret Key

第 5 步有一個不能忘記的地方:Secret Key 只在建立當下顯示一次,關掉頁面就再也看不到,只能刪掉重辦。當場複製起來。

至於權限,如果只是要抓資料做評分、暫時不打算下單,第 4 步可以先不勾「下單」。少一項權限就少一個出事的面向。

2.3 金鑰要放哪裡

官方建議寫進 .env,用 python-dotenv 讀進來:

SJ_API_KEY=...
SJ_SEC_KEY=...
SJ_CA_PATH=...
SJ_CA_PASSWD=...

這裡要提醒的是 Day 11 講過同一件事:.env.pfx 都要進 .gitignore,而且要在第一次 commit 之前就進去。金鑰一旦被推上 GitHub,就算馬上刪 commit 也要當作已經外洩,回頭重辦一組比較安全。

2.4 流量與次數限制,先看一眼

Shioaji 有明確的用量上限,而且級距是綁交易量的:

近 30 日成交金額(證券/現貨整股) 每日流量
0 元 500 MB
1 元 – 1 億元 2 GB
> 1 億元 10 GB

期貨那邊一樣是這三階,級距換成近 30 日成交口數(0 口/大台 1,000 或小台 4,000 口以內/超過)。流量在開盤日早上 8:00 重置。

其他幾條限制:同一身分證字號最多 5 個連線、行情查詢 10 秒 50 次、帳務查詢 5 秒 25 次、委託操作 10 秒 250 次、訂閱上限 200 個、登入一天上限 1,000 次。超過流量時行情查詢會回空值,超過次數則暫停服務一分鐘,屢次違規會被停掉 IP 與 ID 的使用權。

對只是每天抓一次盤後資料的用途來說,500 MB 綽綽有餘。會撞到牆的通常不是資料量太大,而是迴圈寫錯、斷線重連沒退避、或是錯誤重試沒有上限,這幾種寫法會在幾分鐘內把一天的額度燒光。

想當初我就是因為想知道自己燒掉多少,順手寫了一個查用量的小工具。 這個工具我放在 shioaji-usage


3. FRED API Key:上網填一頁就好

FRED 是聖路易聯準銀行的經濟資料庫。總經那一整層的資料,包括利差、CPI、失業率、高收益債利差、聯準會資產負債表、OECD 各國出口,都從這裡拿。

申請流程比 Shioaji 短很多,不需要任何帳戶或身分證明

  1. https://fredaccount.stlouisfed.org/ 註冊一個免費帳號(email 驗證)
  2. 登入後進 API Keys 頁面,按 Request API Key
  3. 填一句用途說明(寫個人研究、學習用途就可以)
  4. 同意使用條款,送出
  5. 金鑰當下就出現在頁面上

額度方面:帶 API Key 的請求速率上限是每分鐘 120 次,沒帶金鑰只有 30 次。官方沒有公布每日總量。對每天更新一次、一次抓十幾條序列的用法,這個額度完全不是問題。

存放方式跟上一節一樣,環境變數 FRED_API_KEY 或一個被 gitignore 的檔案,二選一。


4. yfinance:不用申請,但要知道它的代價

yfinance 完全不需要申請,pip install yfinance 就能用。它拿的是 Yahoo Finance 公開端點上的資料,涵蓋美股、ETF、指數、外匯、部分台股代號,而且有很長的歷史資料,回測要拉十幾年的價格,這是最省事的來源。

有個部分要講清楚:yfinance 不是 Yahoo 的官方 API,也沒有得到 Yahoo 的背書。 它是社群套件,靠著呼叫 Yahoo 前端在用的端點運作,官方定位是研究與教學用途、個人使用。這代表三件事:

  1. 會壞。 Yahoo 改端點的時候套件就會壞,通常幾天內社群會修好,但那幾天是真的抓不到。
  2. 沒有 SLA,也沒有客服。 出事只能自己讀 issue。
  3. 資料品質要自己驗。 特別是台股代號、除權息調整、以及成交量欄位,偶爾會出現明顯不合理的值。

所以用法預計是:yfinance 負責「長歷史 + 廣度」,不負責「準確 + 即時」。真的要精確到單一台股的當日資料,要靠 Shioaji。


5. 台灣其他券商的 API

會選永豐是因為它的 Python 套件最單純,pip install shioaji 之後就是一般的 Python 物件,不用裝 COM 元件、不用綁 Windows。但台灣提供程式交易 API 的券商不只一家,有些的語言生態跟永豐差很多,開戶之前值得先看一眼。

以下是 CLAUDE 整理的

5.1 對照表

券商 API 名稱 主要語言 作業系統 功能範圍 申請門檻 額度/限制
永豐金 Shioaji Python Windows/macOS/Linux 行情、歷史 K 線、下單、帳務、期權 永豐金證券戶 → 網頁自助申請 API Key + 憑證,免營業員 每日流量 500 MB/2 GB/10 GB(依近 30 日成交金額三階);5 連線;行情 10 秒 50 次;訂閱 200 個
富邦 Neo API Python、C#、Node.js Windows/macOS/Linux 行情、下單、帳務 富邦證券戶 → 簽署 API 協議 + 連線測試 + 憑證 未公開
元大 SPARK API Python、C#(另有舊的 COM/Delphi/WPF 元件) Windows/macOS/Linux 行情、下單(含雲端條件單)、帳務、庫存損益 元大證券戶,無財力或交易量門檻;簽風險預告書 + API 測試 未公開
凱基 SUPER PY Python 3.9–3.13(64 位元) Windows(需 VC++ 2015–2022 Redistributable) 台股、美股行情與下單 凱基證券戶 + 數位憑證 + 簽署風險預告書 + 測試軟體驗證 未公開
群益 策略王 API C#、Python(以 COM 元件為底) Windows 國內外證期選行情、下單、回報 群益戶 → 需向營業員申請並簽約 未公開
元富 MasterTradePy(下單)+ SolPYAPI(行情) Python Windows 行情與下單分成兩個元件 元富戶 + 數位憑證 + 線上簽署風險預告書 + 線上驗證 未公開
統一期貨 統一 API Python、C#、Excel VBA Windows 期貨為主 統一期貨戶 → 洽營業員,免費 未公開
玉山(富果) Fugle 行情 API/交易 API Python、Node.js(REST + WebSocket) 跨平台 日內行情、歷史行情、技術指標、盤後籌碼、下單 行情 API 註冊富果會員即可;交易 API 需玉山證券富果帳戶,開戶次日可申請 token 分級收費,見 5.2

5.2 三個值得單獨講的差異

第一,「跨平台」在這裡差很多。 群益和元富是以 Windows COM 元件為基礎的,套件裝好之後仍然綁在 Windows,Linux 上的排程機器跑不了。永豐、富邦、元大、富果是真的跨平台。

第二,自助 vs. 找營業員。 永豐、元大、凱基、元富都是網頁上自己走完流程;群益要向營業員申請並簽約,統一期貨也是洽營業員。

第三,富果是唯一把「行情」和「券商戶」拆開賣的。 沒有玉山證券帳戶也可以註冊富果會員拿免費行情 token,甚至有 demo token 可以先試,是唯一一個能在完全不開戶的情況下先玩玩看的選項。它的行情方案是這樣分的:

方案 價格 台股日內行情 歷史行情 技術指標/盤後籌碼 WebSocket
基本用戶 免費 60 次/分 60 次/分 不支援 5 訂閱/1 連線
開發者 NT$1,499/月 600 次/分 60 次/分 60、30 次/分 300 訂閱/2 連線
進階用戶 NT$2,999/月 2,000 次/分 60 次/分 60、30 次/分 2,000 訂閱/2 連線

免費那一層的「不支援技術指標」值得注意:打算讓別人幫忙算指標的話,免費方案不夠;打算自己從 K 線算,免費方案夠用。

5.3 那為什麼是永豐

三個理由,按重要性排:

  1. Python 是第一等公民。 不是「附了 Python 範例的 C# 元件」,是原生的 Python 套件,而且跨平台。
  2. 申請全程自助。 網頁上點一點就有 Key,憑證也是網頁下載,不用約時間、不用打電話。
  3. 限制寫得清楚。 流量分級、各種次數上限、超限的後果,官方文件一條一條列出來。這在後面設計更新頻率時,是可以直接拿來算的數字。

反過來說,本來就是元大或富邦的客戶的話,那兩家的 API 也都跨平台、也都免費,沒有必要為了跟這個系列而多開一個戶。後面幾天的重點是資料怎麼流、評分怎麼設計,換一家券商要改的只有取資料那一層。

但依照我目前查詢到的內容,套件 Shioaji 的 document 是真的很完整,推推。


6. 記得還要有一個 GitHub 帳號

約十天後的那個專案要把結果推上 GitHub Pages,並且用排程做定期更新,所以需要一個 GitHub 個人帳號

這裡先提需求就好:免費帳號足夠,到 https://github.com/ 用 email 註冊,順手把兩步驟驗證打開。


小結

今天沒寫半行程式,但這是整個系列裡「不做完就沒辦法往下走」的一天。

三個來源的分工大概是:FRED 管總體經濟、yfinance 管長歷史與廣度、Shioaji 管台股的準確與即時。 三個都免費,兩個要申請,一個要先開證券戶。

開戶審核那幾天,不管手上的程式寫得多好都沒有辦法縮短。而這種前置作業在專案裡通常不會被排進時程,因為它看起來不像工作,直到某個週六下午想開始動手,才發現什麼都做不了。

約十天後才會真正用到,但審核時間不會等人,所以先辦起來放著。

參考資料

券商官方文件

資料源官方文件


註一:本文所有申請流程、額度數字與方案價格以各家官方頁面為準。券商 API 的規格、收費與限制改動頻繁,實際申請前請以官方公告為準。

註二:第 5.1 節對照表中標示「未公開」的欄位,代表該券商的公開文件未揭露流量或呼叫額度,不代表沒有限制;實際上限請洽該券商。表中富邦、元大、凱基、群益、元富、統一期貨六家的資訊來自官方頁面與公開技術文章的整理,我本人只實際申請並使用過永豐金 Shioaji,其餘六家屬文件引述而非實測,細節(特別是群益的 Python 支援程度、元富行情與下單元件的實際相依性)待確認

註三:本文為個人學習與工具建置紀錄,所有提及的券商、資料源與方案均非業配,也不代表推薦。本文不構成任何投資建議,亦不構成開立特定券商帳戶之建議。投資有風險,任何投資決策請自行評估並自負盈虧。


上一篇
Day 11|規則擋不住的交給圍欄,每次用不到的別讓它進來
系列文
三個介面,一套工作流?30 天 Claude 跨領域實戰:從 claude.ai、Claude Desktop 到 Claude Code12
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言