MultiCharts 策略怎麼開發?從找想法、寫程式、回測到自動下單的六步流程
可靠的 MultiCharts 策略流程有六步:找想法、寫成 PowerLanguage、含成本回測、樣本外驗證、模擬帳戶自動下單、小部位上線。每一步都在淘汰候選策略,順序不能顛倒;回測報告裡最好看的那條曲線,常常只是你測得最多的那一條。
作者 Soren Huang · 發佈 · 更新於 · 編輯原則
目錄
MultiCharts 策略的完整流程是什麼?
一套可靠的 MultiCharts 策略流程有六個固定順序的步驟:找想法、寫成 PowerLanguage 規則、含成本回測、樣本外驗證、模擬帳戶自動下單、小部位上線。每一步都會淘汰一部分候選策略;順序一顛倒,過度配適的策略就會直接進到真錢帳戶。
過度配適是把策略調整到完全貼合某一段歷史價格,結果它描述的是那段價格裡的雜訊,而不是會重複出現的規律。整個流程可以想成招募員工:六關面試,每一關刷掉一些人,最後留下的才簽約。如果先簽正職再面試,面試就只剩形式。策略開發也一樣,先用真錢交易再回頭驗證,驗證就只剩形式。
- 找想法。從內建訊號、公開規則或自己的盤中觀察出發,寫下一句話就能說清楚的進出場理由。說不清楚理由的想法在這一關淘汰。
- 寫成 PowerLanguage 規則。把想法變成 MultiCharts 能執行的條件與下單指令,訊號在 K 棒收盤計算、下一根 K 棒成交。用到當根收盤價才成交的寫法在這一關淘汰。
- 含成本回測。手續費與滑價從第一次回測就加進去。平均每筆獲利低於來回成本的策略在這一關淘汰。
- 樣本外驗證。用沒參與調整參數的那段資料跑一次。樣本外轉負、或只靠一兩筆大單撐起來的策略在這一關淘汰。
- 模擬帳戶自動下單。讓 MultiCharts 真的送單到模擬帳戶,逐筆比對成交價。成交價持續偏離回測假設的策略在這一關淘汰。
- 小部位上線。以最小口數進真錢帳戶,持續記錄。實際結果脫離回測範圍的策略在這一關暫停。
MultiCharts 策略範例哪裡找?
策略範例有三個來源:MultiCharts 內建的訊號、經典書籍與公開規則、自己的盤中觀察;三者都只能當模板,參數範圍、停損與交易時段都要自己重新測試,不能照抄。
MultiCharts 安裝後就附有一批寫好的訊號,像是均線交叉、通道突破這類常見規則,在 PowerLanguage Editor 裡可以直接打開原始碼。這些訊號的程式已經能跑;預設參數是範例值,不是針對你交易的商品與時段測出來的,所以要用自己的商品與時段重測。
公開規則是第二個來源。通道突破、ATR 停損、開盤區間突破這些規則在書籍與論壇上有完整的文字說明,但多半沒有針對台指期或 NQ 的參數範圍,也很少交代成本。把文字規則寫成程式的過程本身就是一次重新思考:哪一根 K 棒算突破、停損掛在哪裡、收盤前要不要平倉。
第三個來源是自己的盤中觀察,例如「台指期日盤開盤後十五分鐘的區間,被突破後常會延續」。這類想法最貼近你實際盯盤的商品,但也最容易只記得成功的那幾天。把它寫成明確的規則,用十年資料跑一遍,才知道記憶是否可靠。
| 比較項目 | 內建訊號 | 經典公開規則 | 自己的盤中觀察 |
|---|---|---|---|
| 取得難度 | 低,軟體內已有 | 低到中,需要讀懂文字規則 | 高,要先把印象寫成規則 |
| 已有程式碼? | 有 | 通常沒有,要自己寫 | 沒有 |
| 需要自己補的部分 | 參數範圍、停損、時段 | 參數範圍、停損、時段、成本 | 全部,包括規則本身的精確定義 |
| 常見陷阱 | 直接套用預設參數 | 沒含成本、只在作者的市場有效 | 只看一段行情、只記得贏的日子 |
MultiCharts 策略怎麼寫?PowerLanguage 的四個部分
一支 PowerLanguage 策略由輸入參數、變數、進出場條件、下單指令四個部分依序組成;訊號在 K 棒收盤計算、下一根 K 棒成交,這個簡單的寫法就是避免偷看未來價格的第一道防線。
可以把一支策略想成一張食譜:輸入參數是可以調整的份量,變數是切好備用的食材,進出場條件是「什麼時候下鍋」,下單指令是「用什麼鍋、煮幾人份」。
- 輸入參數。之後要最佳化的數字,例如回看期、停損點數、進場時段。每多一個輸入參數,最佳化器就多一個可以轉動的旋鈕,也就多一個貼合雜訊的機會。三到五個通常夠用。
- 變數。每根 K 棒重新計算的中間值,例如通道上緣、ATR、今天的開盤區間。把它們獨立出來,條件式才好讀、好檢查。
- 進出場條件。什麼時候做多、什麼時候做空、什麼時候出場。每一條條件都要能用一句話說明理由。
- 下單指令。用市價單還是停損單、幾口、什麼時候送出。MultiCharts 的下單指令預設是針對下一根 K 棒,這正是我們要的。
訊號計算與成交的時間點是整支程式裡最容易出錯的地方。偷看未來價格是指策略在決定時用了當下還拿不到的價格,例如用當根 K 棒的收盤價決定、又用同一個收盤價成交。MultiCharts 預設在 K 棒收盤時計算一次訊號,下單指令對下一根 K 棒生效,所以只要不特地去改這個設定、不在條件式裡引用當根收盤之後才知道的值,大部分的洩漏就自然避開了。其他常見的洩漏點與一根 K 棒的自我檢查,整理在回測中的前視偏差與常見洩漏。
如果你的規則是在 MultiCharts 之外產生的,匯入後要逐步確認四個部分都對上,尤其是下單指令的成交時點與口數,步驟整理在把策略匯入 MultiCharts 後逐步比對。
MultiCharts 回測結果怎麼看?
看回測報告先看四個數字:淨利對最大回撤的比例、交易次數、獲利因子、平均每筆獲利對來回成本的倍數;這四個數字合起來,比年化報酬率單獨一個數字能說明更多問題。
下面用 AlphaPrime (Valynox) 跑的一次 NQ 日線回測來示範怎麼讀。先把這次回測測了什麼說清楚:市場是 NQ(Nasdaq-100 期貨),日線,期間 2019-01-02 到 2025-06-30,多空都做,1 口,每筆 20 美元手續費與 10 美元滑價。它測的是一個替代規則,不是本文的主題:只用線性回歸規則進出場,沒有停損、沒有獲利目標、沒有濾網。搜尋總共試了 1,024 個變體,依報酬對回撤留下一個候選,表裡的數字就是留下來的那一個。事後從上千個裡挑出最好的一個,數字一定會比真實能力好看;這些數字不代表線性回歸規則賺了這些錢,也不是讀者可以預期的結果。
來源:AlphaPrime 產品引擎(CPU),2026-10-31 執行。NQ 日線,2019-01-02 至 2025-06-30,多空都做,1 口,每筆手續費 $20、滑價 $10。
| 項目 | 結果 |
|---|---|
| 淨利(已平倉) | $150,865 |
| 最大回撤 | $111,615 |
| 交易筆數 | 127 |
| 勝率 | 53.54% |
| 獲利因子 | 1.355 |
| 平均每筆 | $1,187.91 |
| 在場時間 | 86.09% |

第一個數字是淨利對最大回撤。最大回撤是權益曲線從某個高點掉到之後最低點的最大金額,也就是你在這段期間裡最痛的一次帳面虧損。這次回測淨利 150,865 美元、最大回撤 111,615 美元:淨利只比最大回撤高出一截,表示六年半裡有一段時間,帳戶吐回了大部分之前賺的錢。真實帳戶能不能撐過那一段,比淨利本身更值得問。
第二個數字是交易次數。127 筆分在六年半裡,平均幾週才一筆,屬於低頻策略。筆數少,每一筆的運氣成分對總結果的影響就大;用來做統計判斷時要把它當成線索,而不是結論。
第三個數字是獲利因子。獲利因子是所有獲利交易的總金額除以所有虧損交易的總金額;1.355 表示每虧 1 元,同時賺回 1.355 元。這個數字高於 1 才有討論的價值,但越接近 1,成本或滑價多算一點就可能把它推到 1 以下。
第四個數字是平均每筆獲利對來回成本的倍數。平均每筆 1,187.91 美元,相對於每筆 20 美元手續費與 10 美元滑價的假設,倍數很高,是這張表裡最安心的一格。這個檢查在高頻策略上才會露出問題,下面用台指期的例子說明。
假設範例
假設一支小台當沖策略十年回測賺了 400,000 元,共 10,000 筆交易,平均每筆 40 元。假設每筆來回手續費加稅是 100 元,單邊滑價算 50 元,來回成本 200 元。平均每筆 40 元連成本的一半都不到,加上成本後每筆虧 160 元。沒含成本時這支策略看起來比上面的 NQ 日線漂亮得多,含成本後卻在第三關就被淘汰。

還有一格值得多看一眼:持倉時間比例 86.09%,表示這個規則大部分時間都在場內。這段期間 Nasdaq 整體走高,一個幾乎一直持倉的多空規則,結果有一部分會跟著指數本身的漲幅走。這不是錯,但它提醒你去看多單與空單分開的績效,才知道規則本身貢獻了多少。
MultiCharts 策略怎麼驗證、避免過度配適?
驗證的關鍵有四件事:把資料切成樣本內與樣本外、做 walk-forward 滾動視窗、檢查相鄰參數是否表現相近,以及記住自己測過多少個變體,因為測過的變體越多,最好的那一條回測曲線就越可能是運氣。
樣本外是指策略在調整參數時完全沒碰過、只拿來跑一次並讀結果的那段資料。像學生考試:樣本內是講義,樣本外是考卷;事先看過考卷的學生考高分,分數說明不了任何事。切法與需要多少筆樣本外交易,寫在樣本內與樣本外怎麼切、多少才夠。
為什麼測得越多越危險?想像一千個人同時丟十次銅板,總會有幾個人連丟十次正面;你選出丟得最好的那個,並不代表他會丟銅板。策略搜尋也一樣,上面那次 NQ 回測從 1,024 個變體裡留下一個,留下的那一個有一部分是規律、一部分是在這段歷史裡剛好湊對的運氣。Bailey、Borwein、López de Prado 與 Zhu(2014)證明,只要試的變體夠多,即使規則完全沒有預測力,也一定能找到一條樣本內很漂亮的曲線;同一群作者在 2017 年進一步給出計算「最好的那一個其實是過度配適」的機率的方法。
Walk-forward 是把「樣本內最佳化、樣本外只測試」沿著時間重複做的方法:在一段視窗上選參數,用選好的參數在緊接的下一段只跑不調,再往前滾動一段,重複到資料用完,最後把每一段的樣本外結果串接成一條曲線。這條串接曲線的每一筆交易,用的都是當時就能決定的參數,所以它是整份報告裡唯一「當年真的交易得到」的結果。Pardo(2008)把這套做法寫成完整的操作流程。MultiCharts 的 Walk-Forward Optimizer 可以執行這個流程;視窗長度與切法的選擇,整理在walk-forward 分析:唯一能真正交易到的回測數字。
第三個檢查是相鄰參數。把回看期從 10 跑到 40,把每個值的淨利畫成長條圖:穩健的規則會出現一片相鄰數值都差不多的高原,過度配適的規則則只有一根孤立的高柱,左右鄰居都很差。市場不會剛好只在回看期等於 23 時有效,24 就失效;那根高柱多半是雜訊。
第四件事是記帳:寫下你測過幾個變體。手動最佳化很容易低估這個數字,因為每改一次停損、每換一個時段都算一個變體。
假設範例
假設一支策略有三個輸入參數:回看期 10 到 40、步長 1,共 31 個值;停損 20 到 60 點、步長 5,共 9 個值;交易時段分日盤與全時段 2 種。全部組合是 31 × 9 × 2 = 558 個變體。最佳化器排序後最上面那一個,是從 558 個裡挑出來的,不是你只測過一次的結果,解讀它的樣本外表現時要把這個數字放在心裡。
這四個檢查最好在搜尋開始前就把通過門檻寫下來,而不是看完結果再決定。AlphaPrime 的策略驗證就是依照事先設定的門檻依序跑樣本內外、walk-forward 等檢查,候選策略在哪一關失敗就停在那一關,後面的資料不會被它多看一眼。
MultiCharts 怎麼自動下單?上線前要檢查什麼?
自動下單先在模擬帳戶跑至少數十筆交易,逐筆比對成交價與回測假設的滑價,確認合約月份、交易時段與券商連線設定一致後,再以最小部位上線並持續記錄。
在 MultiCharts 裡,自動下單是在圖表上開啟自動交易(Automate Order Execution),並選一個券商連線設定;台灣的期貨商多數提供模擬帳戶,MultiCharts 本身也有 Paper Trader 可以在沒有真實連線時模擬成交。模擬帳戶的價值不在獲利數字,而在三個回測裡看不到的東西:單子有沒有送出、成交價離觸發價多遠、斷線後策略的部位狀態對不對。
- 模擬帳戶開啟自動下單。用和回測完全相同的策略檔與設定,連到模擬帳戶,讓它自己跑。
- 累積數十筆成交。筆數太少時,一兩次異常就會讓判斷偏掉;低頻策略要有耐心等。
- 比對成交價與回測滑價假設。把每筆實際成交價減去策略的觸發價,算出平均滑價。若平均滑價高於回測設定,回到回測把滑價調成實測值重跑,看策略是否還過第三關。
- 確認合約月份、時段、券商連線設定一致。回測多半用連續合約,實際下單卻送到特定月份,換月前後要確認圖表商品與下單商品是同一個;圖表的交易時段範本要和交易所的實際時段相同;券商連線設定裡的口數與回測一致。逐項比對的清單在從產生的策略到 MultiCharts 的 PowerLanguage 比對清單。
- 最小部位上線並記錄。第一口真錢只是為了取得真實成交資料。把每筆成交、每次斷線、每次手動介入都記下來,三個月後和回測的平均每筆、勝率、最大回撤範圍對照。
如果你評估的不只是 MultiCharts,不同平台在不寫程式的情況下能自動執行到什麼程度差異很大,不寫程式也能自動交易的平台差異一文按功能逐項整理。選擇平台時,上面五個步驟能不能在那個平台上一步不漏地做完,比介面好不好看重要。
下一步可以今天就做:打開你 MultiCharts 裡最舊的一支策略的績效報告,數一數交易次數,再回想這支策略的參數你前後改過幾次。把這兩個數字寫在策略檔的第一行註解裡,之後每次看它的回測曲線,先讀這兩個數字再讀曲線。
常見問答
MultiCharts 策略回測要用多長的資料?
用交易筆數而不是年數來決定。樣本外至少要有幾十筆已平倉交易才看得出平均每筆是否站得住,幾百筆以上比較可靠;低頻策略需要更多年的資料,或改用 walk-forward 把同一段歷史產生更多筆樣本外交易。資料同時要涵蓋趨勢、盤整、劇烈波動與清淡等不同行情,不然策略可能只是因為資料全是多頭而通過。
參數最佳化之後,怎麼確認不是過度配適?
做三件事:用最佳化時沒用到的樣本外資料跑一次,看平均每筆是否還是正的;把被選中參數的相鄰數值也跑一遍,看表現是否相近而不是只有一個值有效;寫下這次最佳化總共試了多少個組合,組合越多,對最好那一個的折扣要越大。三項都過,再進模擬帳戶。
MultiCharts 自動下單要先在模擬帳戶跑多久?
以交易筆數計,至少幾十筆成交,而不是固定幾週。每一筆都把實際成交價和策略的觸發價相減,算出平均滑價,再和回測裡設定的滑價比較。同時確認下單的合約月份、圖表時段與券商連線設定都和回測一致。平均滑價高於回測假設時,先回到回測把滑價改成實測值重跑,而不是直接上線。
不會寫 PowerLanguage 也能做 MultiCharts 策略嗎?
可以從 MultiCharts 內建的訊號開始,這些訊號已經寫好,只要調整輸入參數就能回測。進一步可以讀懂內建訊號的四個部分(輸入參數、變數、進出場條件、下單指令),再修改條件式。也有工具能把搜尋出來的策略匯出成 PowerLanguage 等平台的策略原始碼,匯入 MultiCharts 後,仍然要走一次含成本回測、樣本外驗證與模擬帳戶這三關,不能因為程式是現成的就跳過。
參考文獻
- Bailey, D. H., Borwein, J., López de Prado, M., & Zhu, Q. J. (2014). Pseudo-Mathematics and Financial Charlatanism: The Effects of Backtest Overfitting on Out-of-Sample Performance. Notices of the American Mathematical Society, 61(5), 458–471.
- 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.
- Pardo, R. (2008). The Evaluation and Optimization of Trading Strategies (2nd ed.). John Wiley & Sons.

