VALYNOXSTRATEGY RESEARCH TECHNOLOGY
AlphaPrimeAlphaPrime
策略學院 / 平台與匯出

MultiCharts 細部回測:K棒內成交在哪開、結果差多少

MultiCharts 細部回測在 Format Strategies → Properties → Backtesting 分頁開啟,用 1 分 K 或 Tick 資料補出每根 K 棒內的價格路徑,讓同一根 K 棒內同時碰到停損與停利的交易算得出先後。結果差多少,取決於策略有多少筆交易在同一根 K 棒內進出。

作者 · 發佈 · 更新於 · 編輯原則

目錄
  1. MultiCharts 細部回測是什麼?為什麼一般回測的成交價會騙人?
  2. 細部回測要開哪裡?Bar Magnifier 設定步驟
  3. 停損停利在同一根 K 棒怎麼算?
  4. 細部回測需要什麼 Tick 資料?速度會慢多少?
  5. 開細部回測結果差多少?怎麼比較
  6. 常見問答
  7. 參考文獻

MultiCharts 細部回測是什麼?為什麼一般回測的成交價會騙人?

MultiCharts 細部回測(Bar Magnifier)是在 Format Strategies → Properties → Backtesting 分頁開啟的功能:用更細的資料(1 分 K 或 Tick)補出每根 K 棒內的價格路徑,讓同一根 K 棒內同時碰到停損與停利的交易算得出先後。結果差多少,取決於策略有多少筆交易在同一根 K 棒內進出。

一般回測是只用每根 K 棒的開盤、最高、最低、收盤四個價格來決定成交的回測。這四個價格像一趟車程的起點、終點、最高速和最低速:你知道車子 8 點出發、9 點到達,卻不知道它中途先經過哪裡。一根 60 分 K 內,價格可能先跌到最低再漲到最高,也可能先漲後跌,兩條路徑畫出來是同一根 K 棒。

停損是價格走到不利方向的某個價位時,自動出場認賠的單;停利是價格走到有利方向的某個價位時,自動出場獲利的單。只要這兩個價位都落在同一根 K 棒的高低點之間,平台就得決定哪一張先成交。沒有 K 棒內的資料,它只能用一條假設的路徑;假設跟真實路徑不同時,回測算出的那筆交易就是錯的。各家平台對這件事的處理方式不同,本文只談 MultiCharts。

同一根K棒內,兩條不同的價格路徑都觸及停損與停利:一條先碰到停損,另一條先碰到停利,但兩者畫出的K棒相同 哪個價位先到? 兩條路徑畫出的K棒相同 停利 停損 先停損 先停利 四個價格隱藏了順序。 因此:在K棒內加入更細的資料。
一根 K 棒只記錄四個價格。沒有更細的資料,就不知道價格在棒內先走到停損還是先走到停利。

細部回測要開哪裡?Bar Magnifier 設定步驟

Bar Magnifier 在策略屬性的 Backtesting 分頁裡,勾選後選一個細部解析度,再重新計算策略就會生效。MultiCharts 的中文介面譯名會隨版本不同,下面每一步都附英文原名,對照英文找比較不會走錯。

  1. 在圖表上開啟 Format Strategies(格式化策略)。圖表右鍵選單或 Format 選單都找得到;先確認要測的策略已經套在這張圖上。
  2. 按 Properties(屬性)。這裡是整張圖的策略屬性,不是單一訊號的輸入參數。
  3. 切到 Backtesting(回測)分頁。同一個分頁裡還有手續費、滑價和初始資金等設定,這些照原本的值不要動,才能比較開與不開的差別。
  4. 勾選 Use Bar Magnifier 並選擇細部解析度。常見的選項是 1 分鐘、1 秒或 1 Tick。解析度越細,判定越接近真實順序,需要的資料也越多(下一節說明)。
  5. 按確定後對圖表執行 Recalculate(重新計算策略)。重新計算之後再打開 Strategy Performance Report(策略績效報告),和未開啟前存下的報告對照。
在 MultiCharts 開啟 Bar Magnifier 的五個步驟:Format Strategies、Properties、Backtesting tab、勾選 Use Bar Magnifier 並設為 1 分鐘,然後 Recalculate 五步開啟 Bar Magnifier 依序為英文選單名稱 1 2 3 4 5 Format Strategies Properties Backtesting tab Use Bar Magnifier Recalculate 1 分鐘 只改成交,不改訊號。 因此:重新計算後再比較。
開啟 Bar Magnifier 的點選順序,以介面上的英文原名為準。

兩個容易混淆的地方。第一,Bar Magnifier 只影響「成交價怎麼判定」,策略的訊號仍在 K 棒收盤時計算;要讓訊號在棒內隨時計算,是另一個叫 Intra-bar Order Generation(棒內下單)的設定,兩者可以分開開關。第二,細部資料是 MultiCharts 從同一個資料來源另外載入同一個商品、同一段期間的更細資料,不是從原本的 K 棒推算出來,所以資料來源必須真的有這段細資料。

停損停利在同一根 K 棒怎麼算?

不開細部回測時,MultiCharts 只能依內建的假設決定停損和停利哪張先成交;開了之後,它依細部資料顯示的真實先後判定,同一筆交易的結果可能因此從賺變賠,或從賠變賺。兩種算法的規則完全一樣,差的只是「價格先碰到哪一條線」這個事實。

情況不開 Bar Magnifier開 Bar Magnifier
棒內只碰到停損或只碰到停利照碰到的那張單成交結果相同
棒內同時碰到停損與停利依平台假設的路徑決定先後依細部資料的真實先後決定
進場與出場在同一根 K 棒整根棒的順序都是假設進場後的路徑依細部資料判定
出場在下一根或更後面的 K 棒不受影響不受影響

假設範例

一支 NQ 的 60 分 K 策略,在 18,000 點做多,停損 20 點(17,980)、停利 40 點(18,040),兩張單都掛在同一根 K 棒內。這根 K 棒的最低是 17,975、最高是 18,045,所以兩個價位都被碰到了。不開 Bar Magnifier,平台依假設先成交停損,這筆記為 −20 點;開了 Bar Magnifier,1 分鐘資料顯示價格先漲到 18,045 再回落,停利先成交,這筆記為 +40 點。同一根 K 棒、同樣的單,相差 60 點。以 NQ 每點 20 美元計算,是 1,200 美元的差距,還沒算手續費和滑價。

假設的 NQ 多單交易,單一 60 分鐘 K 棒:關閉 Bar Magnifier 時,停損先成交,虧損 20 點;開啟時,停利先成交,獲利 40 點,同樣的委託相差 60 點 同一根 K 棒,相差 60 點 假設的 NQ 交易,一根 60 分 K 棒 關閉 Magnifier 停損先成交 −20 點 開啟 Magnifier 停利先成交 +40 點 同樣委託:可能虧損,也可能獲利。 因此:要檢查同時觸及兩者的 K 棒。
同一根 K 棒、同樣的停損停利,知道棒內路徑與否會算出不同的結果。數字為假設範例。

範例裡用到的每點 20 美元、最小跳動 0.25 點(5 美元)來自 CME 的 E-mini Nasdaq-100 合約規格;交易所可能調整這些值,查最新規格以 CME 的合約頁為準,或用期貨合約計算器換算點數與金額。停損的距離越近、停利的距離越近,兩個價位同時落在一根 K 棒內的機率就越高,所以短停損的日內策略受這件事的影響最大;停損型式怎麼選,見期貨策略的停損設計。

細部回測需要什麼 Tick 資料?速度會慢多少?

細部回測需要同一個商品、同一段期間、比圖表 K 棒更細的資料,回測時間大致隨每根 K 棒被切成幾段而增加,實際快慢取決於處理器與資料量。一根 60 分 K 用 1 分鐘資料補路徑,平台要多讀 60 根小 K 棒;用 Tick 資料,要讀的筆數依市場成交量而定,遠多於 60。

細部解析度需要的資料一根 60 分 K 要多讀多少還剩下的不確定
1 分鐘同一段期間的 1 分 K60 根停損與停利落在同一根 1 分 K 內時,仍是假設
1 秒同一段期間的秒 K約三千六百根(60 分 × 60 秒)同一秒內的順序仍是假設
1 Tick逐筆成交資料依成交量而定,遠多於 60幾乎沒有,但資料最大、檔案最難完整
每根 60 分鐘 K 棒的價格讀取點數:1 分鐘解析度為 60 點,1 秒解析度約為其 60 倍,逐筆(tick)解析度則依成交量而定,遠多於前者 資料更細,讀取次數更多 每根 60 分鐘 K 棒的讀取次數 1 分鐘 60 1 秒 多 60 倍 1 跳動點 遠多 每提高一級,運算時間都會倍增。 因此:先用 1 分鐘測試,再考慮逐筆。
解析度越細,回測要讀的價格點越多;多出來的工作量大致就是回測變慢的倍數。

實際做法分三步。第一,先確認資料來源的細部資料涵蓋整段回測期間:中間缺一段,那段的 K 棒就補不出路徑。第二,先把圖表的回測期間縮短到一、兩個月試跑,記下花的時間,再按比例放大到全期間;處理器、記憶體和資料筆數不同,同一個設定在兩台電腦上的時間可能差很多。第三,先用 1 分鐘跑一次看結果有沒有變,有變再決定是否換成 Tick;大多數日內策略的差距在 1 分鐘解析度就已經看得出來。細部資料本身的品質也要檢查,缺漏和錯誤的 Tick 會直接寫進成交價,回測資料品質一文列了檢查項目。

開細部回測結果差多少?怎麼比較

差多少沒有通用的答案,唯一可靠的做法是同一支策略開與不開各跑一次,逐筆對照;差距會集中在同一根 K 棒內同時碰到停損與停利的那些交易。下面先說比較的方法,再用本文的 NQ 日線回測說明哪一類策略理論上幾乎不受影響。

  1. 不開 Bar Magnifier 跑一次,把 Strategy Performance Report 的交易清單匯出存檔。
  2. 只改 Use Bar Magnifier 這一個設定,其他手續費、滑價、資料期間全部不動,再跑一次並匯出。
  3. 以進場時間對齊兩份清單,標出出場價不同的筆數。出場在後面 K 棒的交易兩邊應該一樣;不一樣,代表改到的不只這個設定。
  4. 對照三個數字:交易筆數、淨利、同根 K 棒出場的筆數。同根 K 棒出場的筆數佔總筆數的比例,就是這支策略對 K 棒內順序的依賴程度。
兩份假設性交易明細,Bar Magnifier 關閉與開啟,逐筆對齊:出場於較晚 K 棒的交易應完全相同,只有出場於進場同一根 K 棒的交易會不同 只有同一根 K 棒出場的交易會不同 假設性明細,Magnifier 關閉 vs 開啟 關閉 開啟 較晚 K 棒出場:相同 同一根 K 棒出場:不同 其他交易必須完全一致。 若不一致,表示有其他地方改變了。
逐筆對照兩次回測,差異只出現在同根 K 棒內進出的交易。清單為假設範例。

為了說明哪種策略不太受影響,這裡放一個 AlphaPrime (Valynox) 的真實回測。這次搜尋測的是 NQ 日線、2019-01-02 到 2025-06-30、多空雙向、一口,規則是標準差通道做為唯一的進出場條件,沒有停損、沒有停利、沒有濾網,在次根 K 棒開盤成交。它是用標準指標組成的代用規則,不是細部回測本身的測試;表中是搜尋嘗試的 1,024 個候選中,依報酬對回撤留下的一個,事後挑出留下的那個會美化結果,所以這些數字不代表這個規則或這個指標賺了這些錢,也不是讀者可以預期的結果。

來源:AlphaPrime 產品引擎(CPU),2026-10-31 執行。NQ 日線,2019-01-02 至 2025-06-30,多空都做,1 口,每筆手續費 $20、滑價 $10。

項目結果
淨利(已平倉)$116,360
最大回撤$110,535
交易筆數35
勝率54.29%
獲利因子1.487
平均每筆$3,324.57
在場時間95.01%
這份摘要是 1,024 個候選中留下的一個。看交易筆數和在場時間:筆數少、幾乎一直有部位,代表每筆交易橫跨很多根 K 棒,出場不是在進場的同一根棒內發生。
這份摘要是 1,024 個候選中留下的一個。看交易筆數和在場時間:筆數少、幾乎一直有部位,代表每筆交易橫跨很多根 K 棒,出場不是在進場的同一根棒內發生。 NQ・日線・2019-01-02 至 2025-06-30・CPU 引擎回測

推理如下。這個規則只有一張市價單在次根 K 棒開盤成交,棒內沒有任何掛著等待觸發的價位,所以 Bar Magnifier 要判定的「哪張單先碰到」這個問題根本不存在;35 筆交易、95.01% 的在場時間也說明每筆交易都跨越許多個交易日。把它匯入 MultiCharts 後開與不開細部回測,成交價理論上不會改變。但這是推理,不是開與不開的實測對照;要確認,仍是上面的四個步驟。AlphaPrime 的回測本來就以次根 K 棒成交、每筆計入手續費與滑價,所以它的交易清單可以直接拿來當第一份對照用的清單。

反過來說,如果你在 MultiCharts 裡替這類規則加上固定點數的停損和停利,它就立刻變成會受 Bar Magnifier 影響的策略,加完之後要重新做一次開與不開的對照。Pardo(2008)談策略評估時反覆強調的也是這一點:回測模擬的成交假設要和實際下單的方式一致,否則數字再好也沒有意義。

從 AlphaPrime 匯出 PowerLanguage 原始碼到 MultiCharts 之後,先核對的順序是:資料期間與 K 棒週期是否相同、Backtesting 分頁的手續費與滑價是否與匯出時一致、成交是否同樣設在次根 K 棒、交易筆數是否相同,最後才看淨利。匯出與匯入的每一步見把策略匯入 MultiCharts 並對照回測,逐項核對的清單見從產生的策略到 MultiCharts 的 PowerLanguage 對照清單;AlphaPrime 支援的其他匯出平台列在平台匯出頁。

下一步:挑一支你現在正在跑、有停損也有停利的日內策略,在 MultiCharts 裡用最近兩個月的資料,不開和開 1 分鐘 Bar Magnifier 各跑一次,數一數出場價不同的筆數佔總筆數的比例。這個比例就是你該不該把細部回測設成預設值的答案。

常見問答

細部回測需要什麼 Tick 資料?

需要同一個商品、同一段回測期間、比圖表 K 棒更細的資料,由資料來源另外提供,MultiCharts 不會從原本的 K 棒推算出來。解析度可以選 1 分鐘、1 秒或 1 Tick;1 分鐘資料最容易取得也最小,Tick 資料判定最準但筆數依成交量而定,檔案最大。先確認細部資料涵蓋整段期間,中間缺一段的 K 棒就補不出路徑。

開了 Bar Magnifier 結果就一定正確嗎?

它只把成交順序的判定從假設換成細部資料顯示的順序,剩下的不確定取決於解析度。用 1 分鐘資料時,停損和停利落在同一根 1 分 K 內仍要靠假設;用 Tick 資料幾乎沒有這個問題。手續費、滑價、次根 K 棒成交這些設定不會因為開了 Bar Magnifier 而變正確,仍要自己設好。

細部回測和 Intra-bar Order Generation 一樣嗎?

不一樣。Bar Magnifier 只改變「已經送出的單在棒內哪個價位先成交」的判定,訊號仍在 K 棒收盤計算。Intra-bar Order Generation 是讓策略在棒內隨時計算訊號並下單的設定,兩者在不同的地方開關,可以只開其中一個。

日線策略也需要開細部回測嗎?

看策略有沒有在棒內會被觸發的價位。日線策略如果只在次日開盤用市價進出、沒有停損停利,棒內沒有任何待觸發的單,細部回測理論上不會改變成交價。日線策略如果掛了停損或停利,一根日 K 的高低點範圍很大,兩個價位同時被碰到的機會反而更高,就需要開啟並對照。

參考文獻

  • CME Group. E-mini Nasdaq-100 Futures contract specifications (contract size $20 × index, minimum tick 0.25 index points = $5.00). cmegroup.com/markets/equities/nasdaq/e-mini-nasdaq-100.contractSpecs.html
  • Pardo, R. (2008). The Evaluation and Optimization of Trading Strategies (2nd ed.). John Wiley & Sons.
  • Bailey, D. H., Borwein, J., López de Prado, M., & Zhu, Q. J. (2017). The Probability of Backtest Overfitting. Journal of Computational Finance, 20(4), 39–69.