所有圖均可點開,手機可雙指放大;完整數字與逐日淨值可從文末下載。
寶塔線紅色持有、黑色出場,這次九組參數沒有通過驗證。本文以反面教材為主:我們保存實際形成的線段,再判斷收盤是否突破它們的界限,沒有把「前三根線」簡化成「前三天收盤」。
寶塔線是什麼,紅黑顏色表示什麼
寶塔線用收盤價格與先前的線段界限描述趨勢,常以翻紅為上升、翻黑為下降。它省略部分日內價格資訊,重點放在突破與翻轉;紅色只是規則判定的狀態,沒有保證從紅色出現後買入就會賺錢。不同看盤軟體可能採每天畫柱、紅白相間或其他修正版本,使用前需要確認畫法。
轟天雷的指標說明列出寶塔線與修正變形,也指出盤整時可能頻繁翻轉。英文的StockCharts三線突破說明則以已形成線段描述延續與反轉。這兩份來源可幫助辨認版本差異;本篇採下列明確定義的線段突破變體,不宣稱與每套軟體畫出的寶塔線逐柱一致。
本次怎麼形成一根線
從第一個有效收盤開始,等到下一個不同收盤才建立第一根線,兩個端點就是線的上下界;價格上升為紅、下降為黑。同方向價格超過上一根線的最後端點,就新增一根同色線;價格仍在區間內、沒有足夠反向突破,便不畫新線,保留原本顏色。中間可能跨過多個交易日,因此三根線並不必然等於三天。
轉向時先取最近至多N根已形成線段的最高與最低界限;暖機不足N根時,只用當時已有的線段。收盤高於最高界限乘以一加緩衝,才翻紅;低於最低界限乘以一減緩衝,才翻黑。沒有突破就維持狀態,同方向延續不另要求跨過緩衝。中心設定是N等於3、緩衝0.5%,另測兩根、四根與0%、1%緩衝,完整三乘三。
| 價格與目前線段的關係 | 畫線與部位處理 |
|---|---|
| 紅色狀態繼續創新端點 | 新增紅線,已持股繼續持有 |
| 黑色狀態繼續創新端點 | 新增黑線,保持空手 |
| 反向跨過參考線段界限與緩衝 | 新增反向線、翻色,隔日收盤才調整部位 |
| 價格留在區間內 | 不新增線,沿用原本顏色與部位 |
| 只有一天價格變動,尚未形成第一根 | 暖機,不憑空指定多頭 |
這個定義的代價是需要等待。從圖上回看,黑色翻紅往往已離最低點一段距離;翻黑也可能在高點回落後才觸發。回測若把買點放回最低點、或用線段壓縮後的相鄰柱當成相鄰交易日,就會拿到當時不可得的價格。本篇仍保留原始交易日曆,不把空白日刪掉,也不在翻色當天用同一收盤成交。
寶塔線的台股回測結果
寶塔線中心設定的平均每年複利變化為 −1.84%,從高點最多跌 72.29%;同期0050含息持有年化 14.07%、最多跌 52.38%。本次翻色規則的長期報酬與最大跌幅都較差。
手機可左右滑動下表,看最大回撤與前後半段;日夏普越高,代表報酬相對波動的表現越好。
| 設計 | 年化報酬 | 日夏普 | 最大回撤 | 前/後半段日夏普 | 鄰近參數贏的格數 |
|---|---|---|---|---|---|
| 寶塔線 | -1.8% | 0.01 | -72.29% | -0.31/0.37 | 0/9 |
| 同期0050含息持有 | 14.1% | 0.75 | -52.38% | 0.39/1.11 | — |
本文提供研究結果,沒有推薦這些買賣規則。想自行重跑,可先 設定 FinLab 環境,再 下載研究程式(.py);其他檔案見 研究下載區。
九格都沒贏同期0050與固定平均曝險對照,未達至少七格的要求。這裡測的是個股紅色持有的等權組合,並非0050單一標的擇時,不能把個股成績當成大盤進出時點的證明。
互動報告是三根、0.5%緩衝的中心設定。文末另一份報告則固定三根、把緩衝降為零,供讀者直接檢查較容易翻色的規則;沒有從九格中挑出最高報酬當對照。所有圖都畫出0050含息持有,讓翻色規則與長期在市場中的機會成本一起比較。
圖上線段變少不代表交易風險變小。寶塔線會忽略日內高低點,但持有期間真實價格仍會波動;未翻黑時持股也可能持續下跌。還原收盤價用於形成線段與算績效,可以處理配息、分割的尺度變化,卻不代表實際委託一定以圖上價格成交。尤其流動性突然變差時,圖上的狀態不會替投資人保證賣得掉。
回測方法與驗證門檻
資料截至 2026-11-10,於 2026-11-11 重跑,使用 finlab 2.3.8。區間為2008-01-02至2026-11-10,前置資料從2006年載入以暖機。基準採 etl:adj_close 的0050還原收盤價,包含配息與分割調整,純粹以價格比值計算含息持有,不經回測引擎,也不扣交易成本。所有比較保留相同交易日與空手日,淨值共同從一開始。
| 項目 | 本次設定 |
|---|---|
| 成交時點 | 當日收盤後形成訊號,隔一個交易日收盤成交;未使用當日訊號回買當日收盤 |
| 成本 | sim() 預設買賣手續費各0.1425%、賣出證交稅0.3%,沒有打折或設為零;0050擇時也沿用這個較高的股票稅率 |
| 股票池 | 使用歷史四碼普通股代號,排除0與91開頭;保留下市資料,不按今日上市名單預篩;未另排除金融、KY與全額交割股 |
| 流動性 | 進場須20日平均成交金額至少2,000萬元;成交金額來自 price:成交金額,並非還原股價乘原始成交量 |
| 部位 | 個股每日依訊號等權,持股不設檔數上限;空手時現金報酬為零,沒有槓桿或放空 |
| 滑價與容量 | 未另設滑價,未估計可容納資金;真實委託仍可能碰到漲跌停或成交量不足 |
| 資料可得性 | 開高低收採同口徑還原價;只使用當日及更早資料,不把事後找到的轉折回填 |
| 樣本 | 全段樣本內,沒有樣本外、滾動訓練或前瞻實盤驗證;前後切半不能替代樣本外 |
本研究的「贏」定義為日夏普高於同期0050:日報酬平均除以標準差,再乘252的平方根,不扣無風險利率。每個設計有九組鄰近參數,至少七組要贏;事前指定的中心參數在前、後半段也必須各自贏,全部使用扣成本結果。中心取參數中間值,沒有改採績效最好的格子。
有現金的設計另比較「每天固定維持同平均市場權重的0050,其餘現金」。平均權重取隔日成交後的目標總權重;個股等權持有任意檔時總權重為一,完全空手才是零,不能把股票數量或訊號出現頻率當曝險。固定權重對照不扣調倉成本,用來檢查低波動是否只是少投資造成。通過前三項後,再拿掉報酬最好的一個日曆年,要求日夏普仍高於同期0050。
下表的周轉為目標權重變動絕對值的月合計,包含買與賣,沒有除以二;不是按實際成交金額與價格漂移計算的周轉率。交易筆數也不能當成周轉率。這個估計可以顯示換股負擔,但不足以推算實際資金容量。
| 設計 | 平均持股檔數 | 交易筆數 | 每月目標周轉平均/最高 | 持股日比例 |
|---|---|---|---|---|
| 寶塔線 | 402.1 | 64,215 | 255.1%/1163.1% | 100.0% |
本設計的流動性只限制進場:股票已經是紅色、20日平均成交金額達標時可以買入,之後即使成交量轉弱也維持到翻黑。這與「每天要求成交金額都達標,低於門檻便賣」不同,後者會在寶塔線翻黑以外另增加退出條件。研究期間股票缺乏有效收盤資料時不設持股,保留下市歷史資料也不等於已完整模擬每一種最後交易限制。
兩根、三根、四根與突破緩衝
熱圖的縱軸是參考線段根數2、3、4,橫軸為緩衝0、0.005、0.01,分別代表0%、0.5%、1%。每格都使用預設成本;中心格取三根與0.5%。較大的緩衝讓反轉更難觸發,也可能更晚離場;較少根數較容易換色,也可能增加盤整區的進出。本文沒有預設哪一種一定較好,而是把九格一起檢驗。
前後半段採同一組中心設定,各自與同段0050比較。即使其中一段比較好,也必須與全段九格、另一半及成本檢查一起成立。可下載結果另列拿掉最好一年的日夏普,避免單一市場年度支撐整個故事;本次未通過的設計,不會因為圖形看起來清楚就列為已驗證策略。
寶塔線與其他趨勢方法的差別
均線糾結與扣抵使用固定交易日數的平均與待移出價格,寶塔線則以已形成線段保存狀態。兩者都用過去價格,卻以不同方式處理時間。均線每天會變動;本篇寶塔線在某些交易日完全不增線。把兩者混用同一個「三天」參數,無法重現本文的規則。
道氏理論回測需要確認波段高低點,可能另有等待轉折的天數;本次寶塔線只要當日收盤跨界就能確認顏色,仍必須等隔日成交。葛蘭碧八大法則看價格、均線方向與乖離情境,不能用寶塔線翻紅代替其買點。十字線與錘子線研究則直接使用日內開高低收,保留寶塔線省去的影線資訊。
Brock、Lakonishok與LeBaron(1992)的技術規則研究檢驗均線與區間突破,是本篇比較規則型交易的背景,沒有直接測本文的線段演算法。Sullivan、Timmermann與White(1999)的資料探勘偏誤研究則提醒大量挑規則會高估績效;這也是保留全部九格、事前固定中心設定的理由。本篇沒有做它們的完整統計推論,不能把參數檢查寫成顯著性檢定。
重現寶塔線時最容易寫錯的地方
完整研究程式的 tower() 函式逐日保存線段端點,並在讀取下一個價格之前,用當時已有的線段判斷門檻。下列示範從同資料夾的下載程式匯入它;不能把這段單獨貼到沒有 research.py 的環境。完整批次另有全部九格與比較指標。
顯示程式碼
import finlab
from finlab import data
from finlab.backtest import sim
from research import tower
finlab.login()
data.truncate_end = "2026-11-10"
close = data.get("etl:adj_close").loc["2006":]
amount = data.get("price:成交金額")
columns = [s for s in close.columns if len(s) == 4
and s.isdigit() and not s.startswith(("0", "91"))]
close = close[columns]
eligible = amount[columns].reindex(close.index).rolling(20).mean().ge(20_000_000)
position = tower(close, eligible, 3, 0.005)
report = sim(position.loc["2008-01-02":], resample=None,
upload=False, retain_initial_cash=True, end_date="2026-11-10")
report.to_html("tower_report.html")程式檢查也把資料截短後重算,確認早期訊號不會因後面加入新資料而改變;再用一段指定價格路徑,檢查區間內不會誤翻色。這些檢查能抓到回填或把天數誤作根數的錯誤,不能證明策略未來有獲利能力。對交易程式而言,算對訊號與驗證投資優勢是兩件都要完成的工作。
寶塔線常見問題
寶塔線翻紅可以立刻買嗎?
當日收盤才知道有沒有跨界。本文隔日收盤成交,翻紅當天的收盤或低點不能事後當成買價;本次也未得到可直接採用的策略證據。
三根寶塔線就是三日新高嗎?
本篇的線段變體在區間內不畫新線,三根可能跨很多天。用三日滾動最高最低取代保存線段,是另一個演算法。
看盤軟體顏色為何和這篇不一樣?
畫法、價格口徑、反轉門檻與是否每日畫柱都可能不同。先核對公式與暖機方式,再比較顏色,不能只憑指標名稱認定一致。
緩衝越大是不是越安全?
更難翻色可能少交易,也可能讓出場變慢。九格結果已包含0%、0.5%、1%,沒有證據支持把門檻越調越大就能降低所有風險。
黑色代表要放空嗎?
本文只做多,黑色把既有持股賣出、回到現金,沒有融券或其他空頭部位。技術分析指標總覽整理方向與部位的區別。
可以和均線一起用來提升績效嗎?
本次沒有測交集條件,不能宣稱加上均線就能修好。新組合會改變進出次數與空手時間,需要重新固定條件、保留未見資料再驗證。程式交易指南提供研究流程,回測陷阱說明為何漂亮圖形不能替代完整交易紀錄。
研究下載與重跑
- 研究程式 .py:三篇共用的完整程式,一次重跑12個設計、108組回測,每組另存HTML報告。
- 逐日淨值 .csv:只列本文中心參數與0050的每日淨值。
- 完整數字 .json:只列本文全部參數、扣成本指標、前後半段與移除最佳年結果。
- 互動報告 .html:本文主要設計的回測儀表板。
- 對照報告 .html:本文說明的另一組規則報告。
從AI輔助安裝流程設定 FinLab 後,把下載檔交給AI並要求「保留固定日期、參數與預設交易成本,重跑這份研究」。程式會引導登入、讀取所需資料,先產出各組結果,再彙整;資料權限與下載額度依帳號方案,原始資料不隨文章再散布。重跑期間較長,可先閱讀現成的逐日淨值與報告。這些未通過驗證的設計沒有公開策略頁與 Studio 策略捷徑。
歷史資料修補與套件更新可能讓同區間重跑數字不同;本文採本次完整執行結果,不把不同快照的成績拼在一起。若研究自己的新規則,應另留一段完全未看過的資料,並在下一次實驗前寫定條件。回測方法說明常見偏差,量化交易指南則整理從研究到執行需要補足的證據。
投資警語:本文僅供教學參考,不構成投資建議。過去績效不代表未來表現,投資有風險。本文結果僅涵蓋指定規則、成本與期間,未驗證實盤可成交性,也沒有保證未來報酬。
作者簡介:FinLab量化研究團隊以FinLab資料與Python程式整理台股、美股的策略研究,提供規則、回測與可下載產物,讓讀者能核對研究結果與限制。
最後更新:2026-11|回測區間:2008-01-02~2026-11-10|作者:FinLab量化研究團隊
FinLab AI
想建立自己的策略?
用自然語言描述你的選股想法,AI 自動驗證、回測、給你答案
免費開始





