當你的 XQ 策略越寫越精細,從長線的「日線選股」跨入短線的「當沖、現股當沖、或當日隔夜沖」時,你一定會遇到這個致命的系統限制:當你在回測設定中把頻率切換成「分鐘(1分K、5分K等)」,歷史時間的拉條最多只能選到過去 2 年(或大約 500 個交易日),完全沒辦法選擇 5 年或 10 年前的時間。
這並不是你的軟體壞掉,而是 XQ 官方基於資料庫架構與硬體承載量所做的硬性商業限制。
原因一:龐大到無法想像的「資料量(Data Volume)」
很多投資人會拿「日K」和「分K」來對比,覺得 XQ 既然能提供台股上市以來 20 幾年的日 K 線,為什麼不能提供 10 年的分 K 線?我們用簡單的數學來算一下兩者的差距:
- 日 K 線:一檔股票一年大約只有 250 筆 資料(一天一根 K 線)。
- 1分鐘 K 線:台股一天交易 4.5 小時(270 分鐘),一檔股票一天就有 270 根 K 線。一年下來,一檔股票就會產生高達 67,500 筆 資料!
如果把全台灣 1,700 多檔股票、加上所有已經下市的股票,全部乘以 10 年份的 1 分鐘 K 線,那將會是高達 數十億、甚至數百億筆 的恐怖天文數字。
原因二:雲端伺服器的「運算效能與頻寬限制」
XQ 個人版的歷史回測,並不是在你的電腦單機運算,而是將策略送到 XQ 嘉實資訊的雲端伺服器去跑。
- 如果 XQ 開放所有免費或低月費的個人會員,去回測 10 年前的分 K 線,每個人一按「開始回測」,伺服器就要瞬間撈取並運算幾億筆的逐分鐘資料。
- 這會導致 XQ 的雲端伺服器在盤後嚴重塞車、甚至集體當機,影響到所有使用者的正常使用。因此,官方將分鐘線的回測長度限制在「最近 2 年」。
🛠 實戰中,量化交易者該如何解決這個限制?
如果你開發的當沖或短線策略,堅持一定要看 5 年、10 年以上的歷史分 K 資料來驗證它經歷「多空循環」的穩定度,你有以下 3 個主流折衷解法:
解法一:改用日線(日K)模擬短線邏輯(最省錢)
如果你的策略不需要精準到看「第幾分鐘盤口黃金交叉」,而是看「開盤一小時的振幅」或「前一天的收盤價」,你可以試著改用「日線腳本」搭配 XS 語法內的內建函數(例如:GetField("開盤價")、HighD(0) 等最高最低價函數)來模擬部分短線邏輯。日線回測就可以拉到 10 年以上。
解法二:改用專業級交易軟體 MultiCharts(最嚴謹、但最貴)
這也是為什麼專業程式交易大戶最終都會走向 MultiCharts 的原因:
- MultiCharts 允許使用者自己購買並匯入歷史資料(Data Feed)。
- 你可以向專業的歷史資料商(如凱衛或海外資料商)購買台灣股市 10 年、甚至 20 年的逐筆(Tick)與分鐘 K 線資料庫,直接存在你家裡的電腦硬碟中。
- 因為是用你自己的電腦硬碟讀取、自家的 CPU 運算,你想回測多久、多精細(哪怕是 15 年前的 1 分 K)都完全沒有人會限制你。缺點是軟體與資料費用每年可能需要數萬元新台幣。
解法三:採取「滾動式樣本外測試(Walk-Forward Testing)」
利用 XQ 現有的 2 年分 K 限制,進行策略調整:
- 先用過去第 2 年的資料做策略研發與參數最佳化。
- 接著把寫好的策略,拿到「最近 1 年」完全沒看過的資料中進行測試(這叫樣本外測試)。
- 如果最近這 1 年的績效依然與前 1 年高度吻合,代表這個策略在短線上具備一定的實戰肉搏能力,不需要盲目追求 10 年前的古老數據。
總結
XQ 限制分 K 回測在 2 年內,是商業與系統流暢度權衡底下的結果。如果你是剛入門的散戶,2 年的分K歷史(經歷過完整的季度財報與大盤波段波動)其實已經具備足夠的統計顯著性,可以放心先用這 2 年的資料把策略打磨好!

