會用 Pine Script 畫指標之後,下一步就是「策略回測」——把一套進出場規則寫成程式,讓 TradingView 用歷史資料模擬下單、算出這套規則過去的績效。這篇用均線交叉當例子帶你寫第一個策略(v6),並誠實講清楚回測最容易騙到你的陷阱。
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):帳戶從高點到低點最慘縮水多少,這決定你抱不抱得住。
・交易次數:太少代表樣本不足、結論不可靠。
1. 過度最佳化(overfitting):把參數(例如 5、20)調到剛好完美貼合過去,換一段時間就失靈——這是新手最常見的自我欺騙。
2. 沒算成本:不含手續費、證交稅、滑價的回測都太樂觀。台股一買一賣成本可觀,務必加 commission。
3. 前視偏誤:不小心用到「未來才知道」的資料(例如用當根收盤價當根就進場)。
4. 樣本太少 / 只測多頭:只測一段大多頭當然漂亮,要跨多頭、空頭、盤整都看看。
一句話:漂亮的歷史績效 ≠ 未來會賺。回測是「淘汰爛策略」的工具,不是「證明會賺」的保證。
想從技術分析一路學到程式交易與策略設計,用完整分析程式邊學邊驗證?有一門由資深券商/投信研發主管開的課程可以參考:技術分析與程式交易基礎的線上課程 →