外匯回測:用資料驗證你的FX策略
只在腦海裡能跑通的外匯策略毫無價值。能扛住真實點差、滑點和向前推進式(walk-forward)驗證的外匯策略,才是唯一值得投入資金的策略。本指南將介紹能讓外匯回測變得真正可信的設定、方法和陷阱。

只在腦海裡能跑通的外匯策略毫無價值。能扛住真實點差、滑點和向前推進式(walk-forward)驗證的外匯策略,才是唯一值得投入資金的策略。本指南將介紹能讓外匯回測變得真正可信的設定、方法和陷阱。
外匯回測究竟在測試什麼
外匯回測把你的交易規則套用到歷史貨幣資料上,並回報本來會發生什麼:勝率、平均盈利與虧損、回撤、夏普比率、期望值。重點是搞清楚你的優勢在統計上是否真實存在,在不同市場狀態下是否穩健,在計入外匯經紀商實際收取的成本後是否仍然可行。
存在兩種形式。手動回測透過捲動圖表並記錄假想交易來完成——對於訓練酌情交易者的形態辨識很有用。自動回測則在歷史資料上以程式化方式執行規則——更快、可重複,並且是大規模執行向前推進式分析或參數掃描的唯一方式。
能產生誠實結果的設定
垃圾進,垃圾出。在執行任何一次回測之前,有五件事必須做對。
資料品質與粒度
- 日內策略:具有真實點差動態的分鐘或逐筆(tick)資料。
- 波段策略:小時或日線通常足夠。
- 如果你希望成交貼近實盤行為,請始終使用買賣盤報價,而不是僅用中間價。
貨幣對選擇
主要貨幣對(EUR/USD、GBP/USD、USD/JPY、USD/CHF)的點差最窄、流動性最深。交叉盤和異域貨幣對在非交易時段和新聞前後會擴大。在EUR/USD上有效的回測結果,往往在USD/TRY上失敗,因為成本結構本質上不同。
點差、滑點、手續費、掉期
| 成本 | 典型假設 | 何時放大 |
|---|---|---|
| 點差 | EUR/USD主要貨幣對上0.8-1.5點 | 非交易時段、新聞發布 |
| 滑點 | 每筆交易0.2-0.5點 | 高影響事件期間翻倍 |
| 手續費 | 每百萬美元交易5-7美元 | 因經紀商而異 |
| 掉期 | 按貨幣對,隔夜持倉時計入 | 套息交易使其十分重要 |
每一項都要建模。假設零滑點、恆定0.5點點差的回測就是童話。
時段過濾器
某些策略不應在低流動性視窗(歐洲貨幣對的亞洲時段)或計劃的高影響新聞前後執行。如果你的交易跨越事件,請對點差擴大進行建模。
交易延遲
在訊號出現的下一根K線進場,而不是在訊號出現的那根K線進場。否則你就是在假設按訊號K線收盤價成交,這是前視偏差。
降低虛假信心的方法
在EUR/USD的五年資料上跑一次回測就直接上實盤,這就是大多數散戶策略在生產環境中夭折的原因。
樣本外測試
把歷史資料分成樣本內(開發)和樣本外(驗證)。在第一組上建構並調參。鎖定規則,在第二組上評估。績效下滑應小於三分之一。如果斷崖式下跌,那就是過度擬合了。
向前推進式分析
在多個樣本內/樣本外視窗之間輪換。在第1-3年上最佳化,在第4年上測試。向前滾動:在第2-4年上最佳化,在第5年上測試。彙總樣本外結果。這能識別那些只在事後才有效的策略。
對交易序列的蒙地卡羅
一旦得到交易清單,就多次隨機重新排序。原本的權益曲線只是眾多路徑中的一條。蒙地卡羅會給出路徑的分布以及在比如95分位上的真實最壞情境回撤。
前向測試(模擬盤)
比回測慢,但能在當前資料上確認訊號、成交與風控按預期運作。在加碼前執行兩到四週。
重要的指標
| 指標 | 它告訴你什麼 | 健康區間 |
|---|---|---|
| 以R為單位的期望值 | 以風險單位表示的每筆交易平均利潤 | 可行系統在0.2R以上 |
| 獲利因子 | 總利潤 / 總虧損 | 一般而言1.5以上為佳 |
| 最大回撤 | 最糟的峰谷損失 | 取決於承受度;低於15%常見 |
| 恢復時間 | 多久創新高 | 以月計,而非以年計 |
| 夏普 / 索提諾 | 按波動率 / 下行風險調整的報酬 | 索提諾高於1.0較為穩健 |
| 交易頻率 | 每月交易次數 | 與你的時間和耐心匹配 |
勝率40%的系統也可以非常出色,只要盈利平均為2R、虧損平均為1R。光看勝率什麼也說明不了。
讓表面績效虛高的陷阱
前視偏差。 用當前K線的收盤價來決定一筆在該收盤價成交的入場。請改用下一根K線的開盤價。
資料窺探(data snooping)。 在同一份資料上不停調參,直到曲線好看為止。請在你未碰過的資料上做驗證。
倖存者偏差。 在外匯裡比股票裡沒那麼致命,但資料來源選擇很重要。某些歷史資料來源剔除了你在實盤中本會遇到的劣質tick。
忽視摩擦成本。 沒有可變點差、滑點、手續費和掉期的回測看起來比現實更漂亮。
市場狀態盲區。 在2017年低波動率中有效的策略,可能在2022年失效。按市場狀態分段,檢查優勢是否只集中在某一個視窗裡。
過度擬合就藏在光鮮的權益曲線裡。請偏好在樣本外與不同市場狀態下都站得住腳的簡單規則。
一個具體的例子:EUR/USD上的波段策略
| 組成元素 | 規範 |
|---|---|
| 假設 | 在上升趨勢內買入回撤具有正期望 |
| 趨勢過濾器 | 1H上200週期SMA,價格位於其上方 |
| 入場觸發 | RSI 14跌破30後再向上穿越30 |
| 停損 | 入場K線最低點下方1.5 ATR |
| 目標 | 2R |
| 放空邏輯 | 在下行的200 SMA下方鏡像處理 |
| 執行 | 訊號之後下一根K線的開盤價 |
| 成本 | 可變點差(最小0.8點,中位數1.2)、波動事件中翻倍的0.2點滑點、每百萬美元7美元手續費 |
| 期間 | 5年的1H EUR/USD,按樣本內3 / 樣本外2拆分 |
跑一遍。如果獲利因子落在1.6附近,每筆1%風險下的最大回撤保持在7%左右,並且權益曲線逐年穩定,那你就有了一個合理的候選。如果利潤來自某個短視窗或在樣本外消失,就把它斃掉。
謹慎迭代。加一個時間過濾器(如果倫敦開盤第一小時滑點更糟就跳過)、或加一個代表趨勢強度的ADX門檻。改動保持小幅,並在樣本外重新驗證。
手動 vs 自動
手動訓練形態辨識。對最佳化入場的酌情交易者有用。速度慢且容易受事後偏差影響(你會記住成功的交易)。
自動則在無情緒下強制執行規則,可擴展到上百種參數組合、向前推進式折疊與資產。平台的表達力比品牌更重要。MetaTrader、Backtrader和現代的零程式碼平台各有用武之地。選擇能縮短你迭代循環的工具。
用Obside在數秒內完成外匯回測
如果你想要自動測試的速度,又不想做工程化工作,Obside超快的回測引擎可以在數秒內執行策略,並透過你的經紀商部署到實盤。用平實的英語向Obside Copilot描述規則——平台會解析、測試並執行它。
端對端能運作的範例:
- 「在15分鐘圖上出現RSI看漲背離時買入,停損放在當日最低點,10%處停利。」
- 「如果EUR/USD的RSI上穿70且MACD轉為看跌,請通知我。」
- 「如果比特幣突破150,000且每日成交量翻倍,請提醒我。」
- 「如果標普500日內下跌10%,請賣出我所有的部位。」
同一套規則無需重寫即可從回測進入實盤。
誠實的考量
回測是模型,不是現實。滑點、延遲和市場衝擊常常比假設更糟。外匯市場會隨著央行政策變化以及流動性在不同時段間遷移而演變。在低利率環境中表現良好的策略,可能在套息成本變化後陷入困境。每季重新驗證。把假設保持得保守一些。
風險管理比任何回測都重要。請定義部位規模、最大組合熱度,以及當實盤表現與回測分布偏離超過1.5個標準差時的停機規則。
準備好用真實資料驗證你的FX規則了嗎?
挑一個你信賴的EUR/USD或GBP/USD配置。按上述工作流程跑一遍。如果它能扛住真實成本與樣本外檢驗,就以小部位部署。Obside Copilot接受平實英語,在數秒內返回回測結果,並透過你的經紀商路由訂單,內建風險控制。
建立你的免費Obside帳號,今天就把你的第一條FX規則跑起來。
僅為教育內容。不構成投資建議。交易具有風險,包括可能的本金損失。
FAQ
對於4H或日線的波段策略,通常三到五年就足以提供跨越不同市場狀態的足夠交易。對於日內策略,一到兩年的分鐘或逐筆資料可以捕捉時段動態和點差行為。如果優勢依賴於某個特定的市場狀態,資料並非越多越好——請按時段分段並檢查一致性。