【專案|台股多策略儀表板】
2026-10-18 交接卡補錄|台股多策略儀表板-交接卡_備份_20261018.md
#### 【有效技巧】
- 官方 openapi 唯一數據來源:TWSE(
https://openapi.twse.com.tw/v1)+ TPEx(www.tpex.org.tw/openapi/v1),不碰第三方爬蟲。 - 備份先行:每次覆蓋主檔前先存
_backup_YYYYMMDD.xlsx;主力檔與升級前備份都留在 D 槽勿刪。 - 驗證閉環每改必做:openpyxl 回讀+抽樣基準值(台積電 2330:毛利率 67%、負債比 30.9%、ROE 年化 39.8%、EPS 上半年 49.33、9/24 收 2475;環球晶 6488:最新價 948、PE 44.27)。
- 快照累積法:每月更新後存
D:\dashboard_snapshots\YYYY-MM-DD.json,滿 1 年自然算出 5Y CAGR(繞開 openapi 無歷史參數)。 - 公式單點連動:A1 時間標記用公式指到「使用說明!B1」,VBA 只改 B1 一處,9 分頁同步更新。
- 數據層與呈現層分離:歷史日線存 CSV 長表(hist_tw/hist_tx),Excel 只是呈現層,重算策略分頁只重算快照。
- 驗證腳本留檔:
C:\Users\Lucky star\Doubao\chats\2026-09-27\new-chat\verify_final.py 等 3 支為現成驗證工具,下次直接複用。 - 派工給編排代理(
o_0001Y9BLz2s)一次講全:驗收基準、抽樣基準值、輸出路徑、備份要求,它才能自我驗證。
#### 【踩坑/避開的錯誤】
- 上櫃補價時把最新價 948 誤寫進 E 欄(日漲跌%)而非 D 欄 → 寫入前務必對 header(A=代碼 B=名稱 C=市場別 D=最新價 E=日漲跌%)。
- (最嚴重坑)全市場總表「最新價」欄從第一天就是空白:歷史分頁有 51 萬列收盤價但從沒「帶回」總表 D 欄,連鎖造成 EPS/合理價/1M~7Y 報酬率全空 → 任何新增分頁都要確認最新價欄真的有值。
- TPEx openapi 忽略日期參數,永遠回最新日 → 上櫃歷史無法逐日回補(死路)。
- TWSE
t187ap05_L 月營收端點只能拿當月 → 無法一次算 5 年 CAGR。 - TPEx U 系列(興櫃)無資產負債表端點 → 興櫃 ROE/負債比算不出,欄位留空(不填 0 誤導)。
- MOPS(mops.twse.com.tw)需 session cookie 被擋;Goodinfo/CMoney/HiStock 選股清單 403 防爬 → 皆死路。
openapi.tpex.org.tw 網域不存在 → 正確是 www.tpex.org.tw/openapi/v1。- openpyxl/xlsxwriter 寫的公式無 cached value → Excel 開啟按 Ctrl+Alt+F9 強制重算才顯示數字。
- 本機無 Office → 不能 pywin32 COM、不能嵌 vbaProject.bin;按鈕只能「畫形狀+手動指定巨集」,需在別台 Office 電腦設定一次。
- SSL 憑證驗證失敗 → Python 一律
ssl.CERT_NONE。 - 驗證陷阱:openpyxl
data_only=True 讀公式格會顯示 None(無快取值),不代表公式消失;要確認公式用 data_only=False。 - PowerShell 長命令(>15 秒)自動轉背景任務 → 用 TaskOutput 等結果,別以為命令失敗。
2026-10-18 交接卡補錄|台股多策略儀表板-接續說明_備份_20261018.md
#### 【有效技巧】
- 先讀 swagger.json(
https://www.tpex.org.tw/openapi/swagger.json,225 端點)列端點清單再下手,避免亂猜路徑;任何新端點先 curl/Python 測回傳結構、確認欄位名再寫大量寫入邏輯。 - 數據分層:候選池 18 檔深度數據(財報+技術指標)+全市場 2,724 檔快照,兩層並存;公式引用單一數據源(全市場總表),改總表各策略分頁自動連動重算。
- 條件格式用真規則(非靜態色):正報酬綠底/負報酬紅底、估值四色,數據變動顏色自動連動。
- VBA 增量更新:讀最後日期→只補缺失月份,不重抓全量;晚期繫組 CreateObject、ADODB.Stream 處理 UTF-8、Dictionary 建代碼→列號、每步錯誤隔離。
- Python 獨立複算驗證:抽樣(台積電/環球晶)用 Python 重算比對 Excel 公式結果,不只靠 Excel 回讀;3 層驗證=回讀首/中/末哨兵格+條件格式規則存在+Python 複算一致。
- 歷史數據留編排代理 workspace:換任務不重抓,send_message 喚醒續用。
#### 【踩坑/避開的錯誤】
- TPEx swagger 首頁路徑對,但端點要加
/v1 前綴(servers 定義);TPEx 財報欄位是英文開頭(Date/Year/Season/SecuritiesCompanyCode/CompanyName),其後才接中文財務欄。 - TWSE X 系列(公發公司)≠ 上櫃,與上櫃清單 0 覆蓋,白測一場。
- 興櫃無估值 API、多數無成交價格、無資產負債表 → 三缺;TPEx 日行情只含當天有成交的興櫃股,比對常為 0。
- TWSE API rate limit:每 5 秒約 3 request,超過被 ban → 抓歷史要分批+sleep。
- xlsxwriter
write_only 模式無原生圖表 → 需非 write_only 模式才能出 14 張原生圖。 - openpyxl
read_only=True 不支援 data_validations/寫入;要看圖表/資料驗證須 read_only=False。 - 動態圖表 B2 手輸代號不換圖四因:①手輸被當數字 vs 歷史表文字 → TEXT() 轉換;②MATCH 整欄 50 萬行超慢 → 限制範圍;③無預算值需 F9;④只查上市表 → 上市/上櫃需自動切換。
- Excel 原生圖表做不到「十字線跟滑鼠+浮動 OHLC」→ 用 tooltip+旁邊 OHLC 一覽表替代;用戶若堅持需做 HTML/JS 網頁版。
- 飛書表格無 STOCKHISTORY/WEBSERVICE/GOOGLEFINANCE → 更新機制只能靠 VBA;飛書跨表引用空白儲存格回傳 0(非空白)→ ISNUMBER 守衛誤判(空白負債比被當 0≤50 給分、空白 EPS 算成「昂貴」)→ 必須源層級空白判斷。
- 飛書 LAMBDA 系函數(MAP/REDUCE/BYROW)導出 .xlsx 會靜默算錯 → 改 ARRAYFORMULA/逐行填充。
- 單表 104 萬行上限 → 96 萬行歷史拆兩表(上市/上櫃)。
- 上櫃無收盤價 → EPS/三價顯示「數據不足」,非 bug,是來源缺口。