TradingView 策略測試器:免費回測與必先檢查的事項
TradingView 免費方案就有策略測試器。相信結果之前,先檢查四件事:測試涵蓋多少 K 棒與交易筆數、訂單在每根 K 棒內如何成交、是否設定了手續費與滑價,以及平均每筆損益是否明顯大於一買一賣(來回)的成本。
作者 Soren Huang · 發佈 · 更新於 · 編輯原則
目錄
可以。TradingView 的免費方案就包含策略測試器,所以你可以免費在圖表上執行 Pine Script 策略。在相信結果之前,先檢查四件事:測試了多少 K 棒與交易筆數、訂單在每根 K 棒內如何成交、是否設定了手續費與滑價,以及平均每筆損益是否明顯高於一買一賣(來回)的成本。
TradingView 可以免費回測嗎?
TradingView 可以免費回測,因為策略測試器在免費方案上就能使用。策略測試器是圖表下方的面板,會在該圖表已載入的 K 棒上執行策略腳本,並回報交易、損益與回撤。策略腳本是會下模擬單的 Pine Script 程式,不同於只在圖表上繪圖的指標腳本。
要執行測試,先從你自己的腳本或公開資料庫把策略加到圖表上,再開啟策略測試器面板並打開該策略的設定。設定中有兩個重要的分頁:Inputs 放策略本身的參數;Properties 放初始資金、下單大小、手續費、滑價與成交選項。本指南中的大部分檢查都在 Properties。
免費方案與付費方案執行的模擬邏輯相同。主要差別在於圖表能載入多少歷史資料,以及有哪些額外選項可用。付費方案會增加 Deep Backtesting 之類的選項,可以測試圖表上看得到的 K 棒以外的範圍。TradingView 會不定期調整方案內容,請到它的方案頁面確認目前的限制。
免費策略測試器一次實際涵蓋多少歷史資料?
策略測試器只涵蓋圖表已載入的 K 棒。在較短的 K 棒週期上,可能只有幾週。你的方案決定圖表載入多少根 K 棒,而這些 K 棒涵蓋幾天,則取決於 K 棒週期以及該市場每天交易幾小時。看報表之前先算清楚。
假設範例
假設你的圖表載入 5,000 根 K 棒。該市場每天交易 20 小時,所以每天有 240 根 5 分鐘 K 棒。5,000 ÷ 240 約為 21 個交易日,大約一個月。若改用 60 分鐘 K 棒,同樣的 5,000 根 K 棒涵蓋 250 個交易日,約一年。一個每週交易兩次的策略,在 5 分鐘測試中只會有約 8 筆交易。這個數量遠遠不足以分辨是實力還是運氣。
要確認報表涵蓋的範圍,請看交易明細中第一筆交易的日期,並與今天比較,再數一下已平倉的交易筆數。常見的經驗法則是,至少要有一百筆交易,才值得認真看獲利因子或勝率。參數較多的策略需要更多筆數。如果期間太短,就改用較高的 K 棒週期或更長的歷史資料,或者只把結果當作初步草稿。
策略測試器如何在 K 棒內成交訂單?
沒有 K 棒內資料時,策略測試器只能猜測價格在每根 K 棒內的走勢順序。這個猜測可能讓停損與限價單的結果看起來比實單交易更漂亮。TradingView 的券商模擬器是測試器中負責模擬成交的部分,它只看得到每根 K 棒的開盤、最高、最低與收盤。TradingView 的 Pine Script 文件說明了它的規則:如果最高價離開盤價比最低價更近,就假設價格走勢是開盤 → 最高 → 最低 → 收盤;否則假設為開盤 → 最低 → 最高 → 收盤。
當停損與目標價可能在同一根 K 棒內都被觸及時,這一點影響最大。假設路徑決定了這筆交易的結果,但真實路徑可能剛好相反。還有三種成交行為會影響結果:
- 市價單預設在下一根 K 棒的開盤成交。在 K 棒收盤做出決定的策略,會在下一個開盤成交,這是合理的。而「On bar close」成交選項則改為在訊號 K 棒的收盤價成交。對日內策略來說,那個收盤價是你看到之後幾乎不可能拿到的價格。
- 停損單與限價單以各自的價格成交,除非 K 棒開盤就已跳過該價位。在快速行情中,實單的停損常常成交得更差。
- 限價單在價格觸及時就成交。「Verify price for limit orders」設定會要求價格越過你的限價一定的跳動點數後,才算成交。實單交易中,價格只是碰到並不代表你的單子成交了。
K 棒放大器(bar magnifier)改變了什麼?
K 棒放大器用較小 K 棒週期的資料取代每根 K 棒內猜測的路徑,讓停損與目標價的成交依實際發生的順序進行。在 Properties 中,「Fill orders」選項包括「Using bar magnifier」、「On bar close」與「Using standard OHLC」。開啟放大器後,一根小時 K 棒會以其內部更小的 K 棒來檢查,測試器就能知道是停損還是目標價先被觸及。是否可用取決於你的方案。
用一個簡單的測試就能看出你的策略有多依賴假設路徑:用標準 OHLC 跑一次,再用 K 棒放大器跑一次,然後比較淨損益與交易筆數。差距很大,代表有許多交易在同一根 K 棒內同時觸及停損與目標價,這些結果是建立在假設上。停損與停利都離進場很近的策略受影響最大。
還有兩項檢查也有幫助:
- 檢查是否重繪。重繪是指腳本在過去的 K 棒上顯示了即時交易時不會出現的訊號。這常發生在使用較高 K 棒週期的資料,或每個價格跳動點都會更新的計算上。讓策略在即時圖表上跑幾個交易時段,再檢查訊號是否停留在最初出現的位置。
- 檢查單筆交易。打開交易明細,對照圖表與規則,查看幾筆進場。
手續費與滑價該怎麼設定?
第一次執行前就要設定手續費與滑價,因為兩者預設都是零,而零成本對交易頻繁的策略有利。在 Properties 中,手續費可以設為成交金額的百分比、每口的現金金額,或每張訂單的現金金額。滑價以每次成交的跳動點數設定。期貨請使用每口的現金金額,輸入你的期貨商手續費加上交易所與結算費用,以單邊計算。測試器會在進場時收一次,出場時再收一次。
要把跳動點換算成金額,請查你所交易合約的每跳動點價值。期貨合約計算器(跳動點大小、每跳動點價值與交易損益)可以顯示每口的數值。交易所可能調整合約規格,請到交易所的合約頁面確認。然後把成本與報表中的平均每筆損益比較。
假設範例
一份沒有設定成本的報表顯示 300 筆交易,平均每筆損益為 $40。一個跳動點價值 $12.50。手續費與規費每一買一賣(來回)$4,滑價設為每次成交一個跳動點,也就是每一買一賣(來回)$25。一買一賣(來回)的成本是 $29,所以平均每筆損益降到 $11。如果實單的滑價其實是每次成交兩個跳動點,平均每筆損益就會變成 −$14。
策略測試器報表中哪些欄位最重要?
看報表時,先看交易筆數與平均每筆損益,而不是淨損益。淨損益取決於測試跑了多久,以及交易了多少口。平均每筆損益與回撤,更能告訴你優勢在扣除成本後是否還在。
| 欄位 | 它告訴你什麼 | 要檢查什麼 |
|---|---|---|
| 已平倉交易總數 | 報表包含多少證據 | 交易筆數是否足以讓結果有意義;見上方關於歷史資料的段落 |
| 平均每筆損益 | 扣除你設定的成本後,每筆交易的淨結果 | 明顯大於一買一賣(來回)的成本 |
| 獲利因子 | 總獲利除以總虧損 | 要與交易筆數一起看;少數幾筆交易算出的高數值意義不大 |
| 最大回撤 | 從權益高點往下的最大跌幅 | 以你實際的部位大小,是否承受得了 |
| 獲利百分比與平均獲利對平均虧損的比率 | 交易多常獲利,以及獲利相對於虧損有多大 | 兩者並用來算出每筆交易的期望值,並確認與平均每筆損益一致 |
| 最大單筆虧損 | 最差的單筆交易 | 是否有一筆交易抹去了數週的獲利 |
| 已付手續費 | 收取的總成本 | 不應為零;與總獲利比較 |
還有一項檢查與你自己的流程有關。每次你更改一個輸入值再重跑測試,就是在多個變體中做選擇。你試的變體越多,表現最好的那個就越可能只是碰巧看起來漂亮(Bailey et al., 2014)。把你試過的組合數量寫下來,然後用它在你沒有調整過的期間的表現,來評斷最好的那個。
如何在長期歷史資料上研究圖表想法,再帶回 TradingView?
一個好用的循環是:在長期歷史資料上研究與檢驗,再把完成的策略帶回 TradingView 做圖表檢查與警報。圖表測試回答的是「這些規則在這些 K 棒上做了什麼?」研究流程還會問:這些規則在沒有調整過的資料上是否仍然成立,成本與設定改變後是否依然成立。
- 把想法寫成規則。寫下進場、出場、停損,以及你想測試的參數範圍。不要直接鎖定在圖表上看起來最好的那一組設定。
- 在含成本的長期歷史資料上研究。使用你自己多年的歷史 K 棒資料。每次執行都要納入手續費、滑價與下一根 K 棒成交。
- 檢驗。使用推進分析等樣本外(OOS)測試。推進分析是一種測試:在一段期間調整規則,再到它從未見過的下一段期間檢查,並在整段歷史上重複這個過程。同時也要觀察結果在不同設定之間如何變化。
- 匯出並檢查。在 AlphaPrime(Valynox)中,把策略匯出為 Pine Script v6;步驟請見如何將 AlphaPrime 策略匯出到 TradingView。然後把它加到 TradingView 圖表上。
- 對齊設定。在 Properties 中使用相同的下單大小、手續費、滑價與成交選項,並在圖表上使用相同的交易時段。
- 在兩邊測試都涵蓋的期間比較交易。抽查一些進場與出場。小差異通常來自資料來源、交易時段設定,或轉倉的處理方式。在實單交易這個策略之前,先找出原因。
在 AlphaPrime 中,第 1 步對應策略生成,第 2 步對應含手續費、滑價與下一根 K 棒成交的回測,第 3 步對應含推進分析與自訂門檻的策略檢驗。第 4 步使用平台匯出到支援的交易平台。
如果你使用 AlphaPrime,這代表:把繁重的研究與檢驗放在 AlphaPrime 裡,用含成本的長期歷史資料來做。然後把策略匯出到 TradingView,用策略測試器以相同設定在圖表上檢查成交、交易時段與警報。
常見問題
TradingView 可以免費回測嗎?
可以。策略測試器在 TradingView 的免費方案上就能使用,你可以在圖表上執行任何策略腳本並查看它的報表。測試只涵蓋圖表載入的 K 棒,而你的方案決定這個數量。在較短的 K 棒週期上,這可能只有幾週的資料。
TradingView 策略測試器預設會包含手續費嗎?
不會。手續費與滑價預設都是零。請在第一次執行前,到該策略的 Properties 中設定。期貨請以每口的現金金額設定手續費,並以每次成交的跳動點數輸入滑價。
TradingView 的 K 棒放大器是什麼?
K 棒放大器是一個成交選項,它使用每根圖表 K 棒內較小 K 棒週期的資料,來判斷停損與限價單被觸及的順序。沒有它時,測試器會根據 K 棒的開盤、最高、最低與收盤假設一條價格路徑。開啟與不開啟各跑一次測試,就能看出結果有多依賴這個假設。
為什麼我的 TradingView 回測和實單交易不一樣?
常見原因包括成本為零、限價單只要價格碰到就成交、K 棒內的假設價格路徑,以及訊號重繪。請設定符合實際的手續費與滑價,並開啟「Verify price for limit orders」。然後讓策略即時跑幾個交易時段,看它的訊號是否停留在原位。
策略測試器報表需要多少筆交易?
沒有確切的數字。常見的經驗法則是至少一百筆已平倉交易,參數很多的策略則需要更多。只有幾十筆交易時,光是幾筆幸運或不幸的交易,就能讓獲利因子與勝率大幅改變。
參考資料
- Bailey, D. H., Borwein, J., López de Prado, M., & Zhu, Q. J. (2014). Pseudo-Mathematics and Financial Charlatanism: The Effects of Backtest Overfitting on Out-of-Sample Performance. Notices of the American Mathematical Society, 61(5), 458–471.
AlphaPrime 在這裡能幫上什麼
AlphaPrime 的策略檢驗會以推進分析與自訂門檻,在長期歷史資料上測試策略。平台匯出會把完成的策略原始碼送到支援的平台,包括以 Pine Script v6 匯出到 TradingView。

