EA 回測利用歷史資料模擬策略,並非預測,也不保證未來收益。
理解測試內容
結果取決於所選商品、時間區間、價格資料、建模方式、交易成本、執行假設和 EA 設定。比較測試時應使用相同且有記錄的假設;結果理想本身不能證明測試設定符合真實情況。
回測評估選定的設定;優化則嘗試多組設定,尋找更好的歷史結果。挑選歷史表現最好的組合可能導致對過去資料的過度擬合。
在 MT4 桌面版設定一次 EA 回測
開啟檢視 → 策略測試器,或按 Ctrl+R。在設定中選擇平台內已有且已編譯的 EA。
選擇完整的商品名稱及週期(圖表時間週期)。勾選使用日期,填寫從及到,限定歷史測試範圍。
選擇模型:每個報價、控制點或僅開盤價。僅開盤價測試不會重現一根蠟燭內的全部價格變化;儲存結果時也應記錄所選方法。
核對點差。預設使用測試開始時的商品點差,依 Bid 歷史資料模擬 Ask 價格;也可設定自訂點差。這不表示歷史點差會持續變化。
在EA 屬性 → 測試中設定模擬初始餘額、幣別及允許的交易方向。在輸入參數中填寫各項值;開始、步長及停止範圍僅用於參數最佳化。
以固定參數進行單次測試時,關閉最佳化。需要時勾選視覺化模式,然後點擊開始。完成後查看結果、圖形、報告及日誌,包括建模品質與錯誤資訊。
MT4:最佳化輸入參數,並重新測試所選輪次
最佳化會改變所選輸入參數的數值,反覆執行歷史模擬。
在測試器 → 偏好設置中,選擇可用的EA、交易商品、圖表週期、建模方法、日期範圍和點差。勾選最佳化;若未勾選,將使用固定參數進行單次測試。
開啟EA屬性 → 測試,設定模擬初始資金、幣別、允許的交易方向和排序指標。僅在打算使用時選擇遺傳演算法搜尋。
在輸入參數中,勾選要變動的參數,並設定初始值、步長和終值。未勾選的參數會保留數值欄中的固定值。
在EA屬性 → 最佳化中,僅啟用並設定需要的輪次限制。達到限制時會中斷目前輪次,然後繼續下一輪。
點選開始,查看最佳化結果和最佳化圖表。結果依輪次彙總,並非逐筆交易明細。可依欄位排序,並檢查略過無效結果是否隱藏了未獲利輪次。
按兩下某個輪次,或選擇設定輸入參數。MT4會把該輪次的參數帶回偏好設置,並取消勾選最佳化。核對還原的數值,再點選開始進行單次測試。
參數欄位 | 含義 |
初始值 | 開始使用的數值 |
步長 | 每次增加的幅度 |
終值 | 最後使用的數值 |
數值 | 未勾選該參數時使用的固定值 |
保留所選參數和實際測試區間。挑選歷史表現最好的結果,不等於使用未來資料進行獨立驗證,也不能證明未來能夠獲利。
在 MT5 桌面版設定一次 EA 回測
在導覽器中開啟 EA 的右鍵選單,選擇測試。在測試器的設定中選擇單次測試,而非參數最佳化。
選擇主要商品、時間週期及日期範圍;結束日期不包含在測試範圍內。多商品 EA 須先在市場報價 → 商品中啟用所需商品。
核對報價建模模式及執行延遲。產生的報價與可用的真實報價是不同的資料選項;無延遲測試代表理想執行條件,不能證明真實交易表現。
設定模擬初始餘額、幣別及槓桿,然後填寫 EA 的輸入參數。請將這些模擬假設與測試結果一併記錄。
如需圖表回放,使用本機測試代理,關閉最佳化並啟用視覺化測試。在設定中點擊開始;下載歷史資料可能需要一些時間。
查看結果、圖形及日誌。核對資料相關提示及是否調整了開始日期,將報告與 EA 版本及設定一起儲存。比較結果前,請閱讀下方的解釋。
在 MT5 桌面版設定參數最佳化
在導覽器中開啟 EA 的「測試」命令。在「設定」中確認商品、時間週期、日期及模擬假設。
選擇參數最佳化,而非單次測試。
在「輸入參數」勾選要變動的參數,填寫「開始」「步長」及「停止」值;未勾選的參數維持固定。檢查顯示的參數組合數量。
選擇搜尋方式;使用遺傳演算法最佳化時,也要選擇用來排序的最佳化準則。
如需保留後續時段進行驗證,請在開始前依下方說明設定「前向」。
點擊「開始」。完成後,在「最佳化結果」點擊欄位標題排序。按兩下某次結果,可使用該組參數執行一次單獨測試。
選擇最佳化方式
慢速完整演算法會評估全部選定組合,可能耗時較長。快速遺傳演算法搜尋較少的組合,不能證明每個組合都已測試。最佳化準則用來排列測試結果,不代表策略已獲認定能夠獲利。請記錄使用的方式及準則。
以點數計算獲利的估算模式不計算隔夜利息、佣金,也不檢查保證金。評估風險前,請使用更詳細的模式;這種快捷估算無法還原全部交易成本。
保留並比較前向驗證時段
在「設定 → 前向」選擇 1/2、1/3、1/4 或「自訂」。
「日期」範圍較晚的一部分會被保留,較早的一部分用於最佳化。選擇「自訂」時,指定前向驗證的開始日期。
完成後,在「最佳化結果」及「前向結果」比較選出的測試結果;並非每個參數組合都會進入前向驗證。
將兩個時段及參數組合與報告一併儲存。若繼續依據前向時段調整參數,該時段便不再是獨立驗證。
明確選擇 MT5 的報價建模模式
模式 | 該選項的意義 |
每個報價 | 依據分鐘柱模擬中間價格,並非記錄下來的真實逐筆報價歷史。 |
基於真實報價的每個報價 | 使用可用的經紀商逐筆報價,點差可在一分鐘內變動。缺少逐筆報價的分鐘可能依據分鐘柱產生報價。 |
1 分鐘 OHLC | 使用每分鐘的開盤、最高、最低及收盤價格點,不會把 EA 的測試時間週期改為 M1。 |
僅開盤價 | 在柱開盤時呼叫 EA;W1/MN1 按日模擬。停損及掛單結果、可存取的時間週期均有限制,且無法使用隨機延遲。 |
這些模式採用不同的測試假設,粗略模式的結果不能等同真實逐筆報價測試。請選擇符合 EA 邏輯的模式,並在報告保留模式名稱。
檢查資料準備及實際測試時段
等待所需商品的歷史資料同步。多商品策略可能在載入其他歷史資料時暫停。
在「日誌」比較要求的日期與實際日期。開始前的資料不足,可能使實際開始日期向後移。
在報告記錄這種位移,不要將原先要求的整個時段都描述為已完成測試。
為縮短資料準備而更換時間週期,會改變測試條件。比較不同週期的結果前,請先檢查 EA 的設計。
MT5:影響測試的技術條件
以下 MT5 測試器行為須與 MT4 的假設及真實帳戶運行區分。
條件 | 測試行為 |
點差 | MT5 使用歷史數值並按浮動處理。若歷史數值為零或負數,則使用最近已知數值。 |
測試前的歷史資料 | 最低歷史請求量:D1及以下為一年;W1為100根柱;MN1為八年(96個月)。準備資料不足可能使實際開始時間後移。 |
多個商品 | 一個商品形成新柱,不保證另一個商品也已形成新柱。僅開盤價測試尤其須注意同步問題。 |
模擬時間 | 測試器內的 GMT、本地時間及伺服器時間相同。這不能證明真實伺服器的時區。 |
圖形物件 | 非視覺化測試或最佳化中不繪製物件,查詢其屬性返回零。此限制不適用於視覺化測試。 |
DLL 呼叫 | 遠端代理禁止 DLL 呼叫。本地代理需要相應匯入權限;僅有權限不代表程式可信。 |
不要僅為讓測試運行而開啟 DLL 匯入。先確認具體需求及程式可信性,並保持與該需求無關的權限關閉。
檢查 MT5 視覺化回測
依上文啟動視覺化測試後,使用另行開啟的視覺化視窗。主圖表採用測試時選擇的時間週期;此視窗內無法修改,因此請在開始前選好。
結合測試價格查看圖表上的交易標記。它們表示模擬活動,並非您的真實帳戶目前發生的交易或行情。
開啟檢視 → 市場報價,或按 Ctrl+M,查看模擬過程中的報價與目前測試時間。
開啟檢視 → 資料視窗,或按 Ctrl+D。將滑鼠移至柱線上,查看日期、開高低收價(OHLC)、點差、成交量與指標數值。
開啟檢視 → 工具箱,或按 Ctrl+T。在交易中查看模擬持倉與掛單,在歷史中查看訂單與成交,在操作中查看 EA 發出的請求,在日誌中查看測試日誌,並相互對照。
排查非預期操作時,依模擬時間對照相關請求、成交與日誌記錄。請求執行某項操作與實際成交屬於不同的記錄。
排查未完成的 MT5 回測
依時間順序查看「日誌」。準備歷史資料時,可能需要下載主測試商品及貨幣換算所需商品的資料;準備資料與 EA 已開始執行是不同階段。
OnInit 失敗代表 EA 無法完成初始化。檢查輸入參數與對應訊息;這不能證明真實帳戶的訂單遭拒。
記憶體錯誤、陣列索引超出範圍或除以零,都可能使測試終止。記錄確切錯誤並與程式開發者討論,勿將部分報告當成完整測試結果。
將所選日期範圍與實際停止位置比較。模擬強制平倉或 EA 自行移除,都可能使測試提前結束。將 EA 版本、設定與相關日誌連同報告保留;僅憑提前結束不能確定原因。
MT5:理解測試報告欄位
請結合這些歷史模擬指標比較。單一比率較高,並不能證明未來能夠獲利。
欄位 | 解讀 |
歷史品質 | 一分鐘價格資料的品質,包括資料缺口;不是獲利交易的百分比。 |
獲利因子 | 總獲利除以總虧損;數值為一表示兩者相等。 |
恢復因子 | 所得利潤除以最大回撤。 |
夏普比率 | 報酬率減去無風險利率,再除以報酬率標準差。測試器假設無風險利率為零。 |
餘額/淨值回撤 | 絕對回撤比較初始資金與低於初始資金的最低值。最大回撤以貨幣金額衡量局部峰值至其後谷值的最大跌幅;相對回撤以百分比衡量該跌幅。請分別檢查餘額與淨值。 |
持倉時間 | 從開倉至完全平倉的時間。部分平倉與反向操作在此指標中不算完全平倉。 |
進場分布圖統計開倉、加倉與反向操作;損益分布圖統計出場,包括部分平倉與反向操作。按小時、星期或月份劃分的分布只描述該次測試,不能據此確定保證獲利的交易時段。
結合完整過程理解結果
例如,測試從 10,000 開始,結束時為 12,000,只能說明這次模擬的淨收益;它沒有說明期間帳戶曾下跌多少、承擔了多少資金風險,或結果是否只依賴少數交易。請同時比較淨值曲線、回撤、交易筆數和收益分布。這些數字僅為範例,不是收益目標或策略建議。
餘額曲線主要反映已完成的交易;淨值曲線還反映未實現盈虧。因此,平滑的餘額曲線也可能隱藏較大的浮動虧損。比較兩份報告前,請先核對使用的是哪種曲線及哪種回撤指標。
比較前先核對資料和成本
確認完整商品名稱、日期範圍、資料覆蓋、建模方式及成本假設。點差、佣金、隔夜費和執行延遲都可能改變結果。不要假定每次測試都包含全部成本,或能重現目前真實交易的執行情況。資料缺失或價格來源不同,也可能改變交易順序。
請區分 MT4 與 MT5 的測試。MT4 EA 與 MT5 EA 並不自動等同於同一個程式;平台、EA 版本及設定必須與報告一致。如果測試沒有交易,請先檢查測試日誌、可用資料及 EA 輸入參數,再判斷是否為程式故障或策略本身沒有觸發交易。
把參數選擇與獨立驗證分開
如果反覆調整參數,直到某段歷史表現理想,該時段就不再是獨立驗證。請在選參數前保留另一段時間,並在該區間評估選定設定,不要再針對該區間調參。不斷挑選最佳結果,可能形成漂亮但無法適用於其他時期的歷史報告。
保留可重現紀錄:平台和 EA 版本、商品、測試區間、初始測試餘額、參數組、建模方式、成本及報告。每次只比較一個變化。回測、參數優化及後續模擬運行回答的是不同問題;任何一項都不能單獨證明 EA 適合您的情況或將會盈利。
合理使用結果
除了利潤,也要查看回撤和交易筆數。保留一段未用於選擇參數的獨立時間區間,比較策略在該區間的表現。模擬測試可增加運行經驗,但仍不保證真實交易結果。
將 EA 版本、設定、測試區間和假設與報告一起保留,便於調查差異。EA 能在 MT4 或 MT5 中運行,不代表 FXTRADING.com 認證其盈利能力。EA 不可在 FXTRADING.com App 上安裝或運行。
