分類
績效
難度
進階
適用情境
回測EA 評估

建模品質

MT5 策略測試器印出的百分比,用來表示價格歷史對受測區間的涵蓋有多完整——它在使用產生式 tick 的執行中同樣會出現,並非只在真實 tick 上才有。

亦稱:tick 品質, 歷史品質, 回測品質

更新於

一句話講清

測試器所用的價格與真正發生過的價格有多接近。數值偏低代表模擬把它已知價格之間的大部分走勢編造出來,而策略交易的正是這份編造。

為什麼重要

回測中的其他每一個數字,都是建立在測試器所用的價格序列之上,因此建模品質是決定報告其餘部分究竟在衡量策略、還是在衡量插值的那個數字。它最要緊之處,恰好就是 EA 行銷嗓門最大的地方——日內與剝頭皮策略,它們的全部優勢都活在 K 棒內部。

  • 它劃定了報告可信的上限。建立在合成的 K 棒內走勢之上的獲利因子,是關於這份合成本身的事實。
  • 損害並不平均。以日線收盤為準的策略幾乎察覺不到差別;目標只有 5 點的策略,可能大部分成交都由測試器編造出來的價格決定。
  • 這是最常被留白的欄位,而空欄位可能比低數值更糟。這些商品頁背後的結構描述曾把它的預設值設為 99,於是一次使用產生式 tick 的執行一直顯示 '99% modelling quality, against a 92% minimum',直到該預設值在 2026-08-06 被移除。

用它驗證策略

用在哪裡

  • 在每一份 MT5 策略測試器報告的最上方讀取,印為 'History Quality',旁邊就是建模模式。
  • 在 EA 商品頁中被引用,用以確立公布的獲利因子與回檔是在什麼基礎上算出來的。
  • 在執行之前刻意選定:凡屬日內策略就用「以真實 tick 為基礎的每個 tick」(模型 4),較快的模型只用於粗略的參數掃描。
  • 在同一個 EA 的兩次執行之間比較,用來解釋它們的數字為何對不上。

可靠的結果長什麼樣

  • 測試器回報使用了真實 tick,歷史品質位於 100 % 或接近該值,並且指名了資料來源。
  • 該商品的 tick 歷史真正涵蓋整個區間,而不是早期年份由 K 棒回填而成。
  • 資料中的點差是記錄下來的點差,而不是拿一個固定值頂替。
  • 同一種建模模式涵蓋比較中的每一次執行。

警訊

  • 根本沒有聲明建模品質——這種缺席過去讀起來像一個體面的預設值,正因如此這個數字應該被量測而不是被省略。
  • 引用了高數值卻不給資料來源,而來源恰是這項主張中可查核的那一半。
  • 報告顯示採用以 K 棒插值建模的日內或剝頭皮 EA。
  • 同一區間兩次執行之間發生變化的數值,這通常代表其中一次把部分歷史補齊了。
  • 拿單一商品 EA 的標準去評斷一籃子 EA 的數值。一次同時載入多個商品的執行,僅憑這一點就會回報較低的品質,於是這種比較排的是工作量而不是模擬本身。

回測與實盤的差異

  • 插值資料會產生從未存在過的成交。測試器假定已知價格之間是一條平滑路徑,於是停損與目標以市場從未提供過的順序被觸發。
  • 固定點差建模抹去了真實帳戶要付的擴大部分,而這部分擴大最狠地落在低品質建模本就定價錯誤的小目標上。
  • 真實 tick 建模縮小了差距卻沒有消除它:延遲、重新報價以及券商自身的成交方式,依然在模擬之外。
  • 可以預期回測與實盤之間差距的大小會直接跟隨建模品質——資料越粗糙,意外就越大。

建議的驗證方法

  1. 1在執行之前選定測試器模型,並把它與結果一起記錄,而不是回報上一次執行碰巧用了什麼。
  2. 2凡是在當日內交易的策略都用真實 tick,並先確認終端裡究竟有沒有——本站一次公開執行背後的 ticks.dat 只有 123 KB,等於根本沒有庫存。
  3. 3把定稿的策略在第二個真實 tick 來源上重跑一次再作比較:來源之間的一致才讓這個數字成為證據。
  4. 4在每一次公開的執行中把品質數值與來源一併說明,讓讀者可以重現而不是只能相信。

範例

本站公開的四次執行,全都讀取測試器的同一個欄位。其中三次使用了相同的模型——模型 0,每個 tick 由 M1 K 棒產生——跑在同一份券商歷史之上,差別只在於這次執行需要載入多少個商品。

模型 0,單一商品(GBPJPY)
歷史品質 99 %
單一商品的 M1 歷史。
模型 0,五個商品(一籃子)
歷史品質 72 %
模型 0,七個商品(一籃子)
歷史品質 72 %
模型 4,真實 tick(Dukascopy)
歷史品質 100 %

一籃子執行自身的工作量把它的數值往下拉,因此本站的一籃子商品一律不公布品質數值,而不是公布一個會被讀者誤讀的低值。

計算 在模型、券商與資料來源保持不變的情況下 99 % → 72 %;唯一改變的是商品數量

結果 下降的 27 個點衡量的是這次執行的歷史載入量,而不是它的保真度

怎麼讀這個數字

把建模品質當成附著在報告中其他每個數字上的條件,並在判斷它有多重之前,先讀策略的持倉時間。

區間 含義
真實 tick,品質在 100 % 或接近 這些數字講的是策略本身。剩下的差異活在成交環節,而不在價格序列裡。
90 % 上下,由 K 棒插值 對日線收盤系統可用,對任何在 K 棒內交易的東西具有誤導性。把它讀作一次掃描,而不是一個結果。
用於參數掃描的低數值 作為搜尋工具是正當的,作為公開主張則毫無價值。任何存活下來的候選都必須規規矩矩地重跑一次。
未聲明 最弱的情形,因為它與根本沒量過無法區分。在讀獲利數字之前先問清楚。
  • 讓資料符合策略的時間週期。目標越細,結果中由測試器已知價格之間決定的部分就越多。
  • 來源不明的高數值只是半個主張。讓它可重現的正是來源。
  • 當同一個 EA 的兩次執行對不上時,先檢查建模模式,再去規則裡找錯。

本站 30 個 EA 商品中,有 6 個聲明了建模品質:全部為 100 %,且全部是在真實 tick 上完成的執行。其餘 24 個都不聲明:12 個以模型 0 執行,也就是測試器從 M1 K 棒生成每一個 tick,而不是重播錄下的 tick,其中包括報告裡印出 72 % 的那兩次一籃子執行;另有 12 次真實 tick 執行沒有給出任何數值。建置關卡讀取的是發布出去的頁面而非原始碼,因為預設值 99 就住在結構描述裡,而只看原始文字的檢查會漏掉它下一次回來的路徑。

常見誤解

把缺席的數值讀成好數值

被省略的建模品質不是一個謙虛的值,而是一個未經量測的值。任何代讀者填上的預設值,都會把沉默變成沒有人做過的主張。

以為高百分比就讓回測變得真實

它只說明價格序列是忠實的。滑價、重新報價、延遲以及券商的成交政策全都在測試器之外,所以就算是 100 % 的執行,仍然美化了成交。

比較由不同測試器模型產生的數值

建模模式改變的是成交集合而不只是價格——在插值資料上被觸發的交易,在真實 tick 上可能永遠不會觸發。這樣的兩次執行是兩個不同的實驗。

拿剝頭皮的標準去衡量日線系統,或者反過來

持倉數天的波段策略幾乎感覺不到 K 棒內的路徑;剝頭皮者卻靠它吃飯。用同一個門檻衡量兩者,必然會看錯其中之一。

深入說明

常見問題

EA 回測的建模品質應該達到多少?
凡是在當日內開倉並平倉的策略,都應使用歷史品質位於 100 % 或接近該值的真實 tick。對於日線收盤系統,由 K 棒插值得到的 90 % 左右通常已經夠用。這個數字的重要程度,與策略結果中有多少是在測試器已知價格之間被決定成正比。
為什麼即使用真實 tick 資料,建模品質也低於 100 %?
因為測試器回報的是歷史對所請求區間的涵蓋有多完整。券商保存的 tick 中的空洞、由 K 棒回填的早期年份、開始時間早於 tick 歷史起點的區間,或是一次必須同時載入多個商品的執行,都會拉低這個數字,即使執行本身用的就是真實 tick。其中最後一條,使得多商品執行的數值無法與單一商品執行相比。
90 % 的回測是不是就沒用了?
不是沒用,而是有限。它對慢速策略是合理的篩子,對快速策略卻是公布數字的糟糕依據,因為插值補上的恰恰是短目標策略所交易的那段 K 棒內路徑。