Pine Script · 策略回測

Pine Script 策略回測入門
寫一個均線交叉策略

用 v6 把規則變成可回測的策略,並認清回測的陷阱

會用 Pine Script指標之後,下一步就是「策略回測」——把一套進出場規則寫成程式,讓 TradingView 用歷史資料模擬下單、算出這套規則過去的績效。這篇用均線交叉當例子帶你寫第一個策略(v6),並誠實講清楚回測最容易騙到你的陷阱

💡 strategy 和 indicator 差在哪?

indicator() 只把東西畫在圖上、不會下單;strategy() 可以定義買賣規則,讓 TradingView 模擬下單並產生回測報告(淨利、勝率、最大回撤…)。要回測,就用 strategy()。

第一個策略:均線黃金交叉做多

規則很簡單:快線向上穿過慢線(黃金交叉)就買進,向下跌破(死亡交叉)就出場。注意 v6 的重點——進出場要用 if 條件式(v6 已移除舊版的 when= 參數):

//@version=6
strategy("均線交叉策略", overlay = true, initial_capital = 100000,
         default_qty_type = strategy.percent_of_equity, default_qty_value = 100,
         commission_type = strategy.commission.percent, commission_value = 0.1425)

fastLen = input.int(5,  "快線天數")
slowLen = input.int(20, "慢線天數")

fast = ta.sma(close, fastLen)
slow = ta.sma(close, slowLen)

plot(fast, "快線", color = color.red)
plot(slow, "慢線", color = color.blue)

// 黃金交叉 → 進場做多
if ta.crossover(fast, slow)
    strategy.entry("做多", strategy.long)

// 死亡交叉 → 出場
if ta.crossunder(fast, slow)
    strategy.close("做多")

if 下一行要縮排(Pine 靠縮排辨識區塊)。貼進 Pine 編輯器 → 新增到圖表後,會多出一個「策略測試器」報告。

逐段看懂

strategy(...):宣告這是策略。initial_capital 初始資金 10 萬;default_qty_type / value 這裡設每次用 100% 資金進場(示範用,實務不建議全押);重點是把手續費算進去——commission_value=0.1425 對應台股單邊約 0.1425% 手續費。
if ta.crossover(...)strategy.entry("做多", strategy.long):黃金交叉時做多進場。
if ta.crossunder(...)strategy.close("做多"):死亡交叉時把多單平掉。

怎麼看回測報告?

新增到圖表後,下方「策略測試器(Strategy Tester)」會顯示幾個關鍵數字:

・淨利(Net Profit):整段期間的總損益。
・勝率(Percent Profitable):賺錢的交易佔比——但高勝率不等於賺,要配合賺賠比一起看。
・最大回撤(Max Drawdown):帳戶從高點到低點最慘縮水多少,這決定你抱不抱得住
・交易次數:太少代表樣本不足、結論不可靠。

⚠️ 回測最容易騙到你的 4 個陷阱

1. 過度最佳化(overfitting):把參數(例如 5、20)調到剛好完美貼合過去,換一段時間就失靈——這是新手最常見的自我欺騙。
2. 沒算成本:不含手續費、證交稅、滑價的回測都太樂觀。台股一買一賣成本可觀,務必加 commission。
3. 前視偏誤:不小心用到「未來才知道」的資料(例如用當根收盤價當根就進場)。
4. 樣本太少 / 只測多頭:只測一段大多頭當然漂亮,要跨多頭、空頭、盤整都看看。

一句話:漂亮的歷史績效 ≠ 未來會賺。回測是「淘汰爛策略」的工具,不是「證明會賺」的保證。

📚 想更深入?延伸課程

想從技術分析一路學到程式交易與策略設計,用完整分析程式邊學邊驗證?有一門由資深券商/投信研發主管開的課程可以參考:技術分析與程式交易基礎的線上課程 →

*聯盟行銷連結:透過它報名我可能獲得回饋,不影響你的費用;課程內容與品質以 Udemy 平台為準,本站不對學習成效作保證。

在 TradingView 跑你的第一個回測

免費帳號就能用策略測試器,把上面的均線策略貼上去看歷史績效。

前往 TradingView →

常見問題

strategy 和 indicator 差在哪?
indicator() 只把指標畫在圖上、不下單;strategy() 可定義買賣規則、模擬下單並產生回測報告(淨利、勝率、最大回撤)。要回測就用 strategy()。
v6 的策略進出場怎麼寫?
v6 已移除 when 參數,改用 if 條件式:if ta.crossover(fast, slow) 換行縮排寫 strategy.entry("做多", strategy.long);出場用 strategy.close 或 strategy.exit。
回測績效漂亮就會賺嗎?
不是。最大陷阱是過度最佳化(參數貼合過去、換時間就失靈),還要留意有沒有算手續費滑價、前視偏誤與樣本是否足夠。漂亮的歷史績效不代表未來會賺。
回測怎麼加手續費?
在 strategy() 設 commission_type=strategy.commission.percent、commission_value=0.1425(對應台股單邊約 0.1425% 手續費)。沒算成本的回測會過度樂觀。
延伸閱讀
🌱 Pine Script 新手入門(第一支指標)→ 🧩 用 Pine Script 寫自訂指標(均線交叉、RSI、KD)→ 🧾 Pine Script 下單指令與市價/限價/停損單 → 📋 Pine Script 常用語法速查(新手版)→ ⚡ 當沖是什麼?資格、手續費與風險 → 📊 KD、MACD、RSI 怎麼看?→
本文為 Pine Script 策略回測教學,並非投資建議,也不保證任何策略能獲利。程式以 TradingView Pine Script v6 撰寫,語法若因官方改版而異動,以 TradingView 官方文件為準。回測有過度最佳化、前視偏誤等限制,歷史績效不代表未來,實單還有滑價、流動性等差異,請自行評估、量力而為。TradingView 與課程連結為聯盟連結,不影響你的費用與本文中立。