這是在 XQ 官方論壇和 PTT 股票版上最常出現的「痛點」。許多新手好不容易寫出一套勝率 80%、期望值極高的策略,結果丟到盤中執行真錢(實單)交易時,卻發現績效慘不忍睹。
這種「回測與實戰的巨大落差」,在量化交易中被稱為回測陷阱。
1. 致命傷:忽略了「交易成本」(手續費與證交稅)
這是最常見、也最容易修正的低級錯誤。
- 回測的狀況:如果你在 XQ 設定回測時,沒有特別去勾選或自訂「手續費」與「交易稅」,系統默認的成本可能極低甚至是零。
- 實戰的現實:台灣台股的證交稅高達
0.3%(當沖減半為0.15%),券商手續費基本是0.1425%(雖然有打折)。如果你的策略屬於當沖、隔日沖等「高頻率、小賺就跑」的類型,實戰中你賺到的利潤,早就全被政府和券商的稅費吃光了。 - 💡 解法:在 XQ 發動回測前,務必進入「進階設定」,將手續費折扣(如 2.8 折)和證交稅精確填入,改看「淨報酬率」。
2. 滑價(Slippage)與成交量陷阱:你根本買不到那個價格
- 回測的狀況:XQ 在跑歷史數據時,通常是用「K線的收盤價」或「觸發當下的價格」來計算。只要價格到,系統就認定你「100% 買到或賣出」。
- 實戰的現實:
- 穿價買不到:當盤中主力發動、一檔股票突然往上急拉時,等 XQ 程式偵測到並送出市價單,價格早就又往上跳了 2、3 個檔位,這叫滑價。你實戰買到的成本永遠比回測高。
- 流動性危機:如果你的策略選到成交量只有 50 張、100 張的小型股或殭屍股,回測顯示你可以買 10 張,但實戰中你一掛買單,就會自己把股價推高;要賣出時,根本沒有外盤單可以承接,導致你必須砍在極低的價格。
3. 未考慮「逐筆洗價」與「延遲」的落差
- 回測的狀況:回測是在盤後,用已經固定、完美的歷史 Tick(逐筆)或 Minute(分鐘)資料來跑,運算速度極快,沒有時間差。
- 實戰的現實:開盤時,你的電腦必須透過網路接收券商的即時大數據,這中間存在毫秒級的網路延遲。如果你的電腦配備不足(如前幾題提到記憶體吃滿、CPU 降頻),程式判斷會變慢。當你的電腦還在運算 09:05:01 的訊號時,市場早就走到 09:05:05 了,導致送單時機完全錯過。
4. 倖存者偏差與過度最佳化(Curve Fitting)
- 過度最佳化:你在寫程式時,為了讓過去 3 年的報表好看,不斷微調參數(例如:把均線從 20 改成 23.5,把 KD 限制改成 18 等),直到回測曲線變完美。這種策略只是「完美適應了過去的歷史」(過度擬合),當未來市場盤勢一變(多頭變空頭、或進入窒息盤),策略就會瞬間失效。
- 倖存者偏差:你的回測可能只涵蓋了目前「還在市場上活躍、沒下市」的股票。那些過去幾年表現很差、減資、甚至倒閉下市的股票數據,如果沒有包含在你的回測母體中,回測勝率自然會虛高。
5. 心理素質與人為干預(最難克夫的點)
- 回測的狀況:電腦沒有感情。遇到連續虧損 5 次、10 次時,回測程式依然會冷酷地在第 11 次觸發時買進,並最終迎來大波段獲利。
- 實戰的現實:當你用真錢連續賠了 5 天,到了第 6 天程式再度發出買進訊號時,你人性中的恐懼會讓你「手動猶豫」甚至「關掉程式」。偏偏那一檔就是噴出 3 根漲停的大行情。你因為害怕而人為干預,導致你實戰「只扛了虧損,卻沒賺到大波段」。
💡 縮短「回測與實戰落差」的 3 個心法:
- 策略必須預留「滑價空間」:在回測設定中,強制設定買進成本+1檔、賣出成本-1檔,如果加了滑價策略還能賺錢,才是好策略。
- 避開低量股:在 XS 程式碼第一行就加入限制條件:
If Volume < 1000 Then Return;(過濾掉日均量低於 1000 張的流動性差個股)。 - 上線前先跑「模擬交易」或「零股測試」:策略寫好後,不要直接砸大錢。XQ 有內建免費的模擬交易功能,讓策略在「現在的即時盤」跑 2 到 4 週。對照模擬交易的紀錄與你的回測報表,如果兩者軌跡吻合,再換成真錢(或從 1 股、1 張開始)正式實戰。

