MT4的策略測試器會在兩個條件下出現比預期更像真的數字──先於PF前看到的4行
n/a 建模品質(壞掉的結果) | 114 不一致圖表錯誤 | 4行 先於PF看到的報告行 |
製作MT4/MT5指標並在GogoJungle販售的,是 lab.aiueo。
略有一段時間沒更新。從今天起,會再寫下去。
MT4的策略測試器是讓EA在過去行情中運作,並給出成績的工具。
只是,視條件而定,會出現看似合理的壞掉數字。它不會因錯誤而停止。
今天,我會寫下我實際踩過的兩個情況,以及如何在報告中分辨它們。
第一個:1分鐘K線缺口期間以「全點」回測
發生了什麼
為了驗證而製作的EA,於歐元/美元的4小時K線回測約13年。測試方式設定為最細的「全點」。
出現的數字是PF0.71。
光看數字,似乎是「賠錢EA」的結果。但在報告上方,卻是這樣顯示。
- 建模品質:n/a
- 不一致圖表錯誤:114
這個結果是壞掉的。
為何會壞掉
「全點」是以1分鐘K線為基礎,於K線內的價格波動細部模擬並推動的方式。
然而,我的MT4中歐元/美元的1分鐘K線只有2026年4月以後的數據。4小時線自2009年12月就有,但1分鐘線在整個測試期間幾乎都沒有。
缺乏1分鐘K線的期間,無法提供足夠的材料去模擬價格變動。但測試器仍會不間斷運作,直到結束並輸出數字。
區分方式
- 報告的「建模品質」是否為 n/a
- 「不一致圖表錯誤」是否為0
- 測試期間起始時,1分鐘K線是否齊全(可用「工具」→「歷史中心」確認)
若以確定的K線做判斷的EA,請以「開盤價」回測
此EA僅在K線確定時才作出判斷。K線期間的價格波動不會被用於決策。
若是這種EA,測試方式只需以「開盤價」回測即可。每次K線確定就回測一次。即使沒有1分鐘K線,只要有4小時K線也能回測。
關於是否以「開盤價」回測,報告的「模型Tick數」可以看出。我的環境中,測試的K線數大約是本數的兩倍。
但「僅以開盤價」無法在K線內完整呈現止損與獲利先後觸及的情形。若止損和獲利距離近,且都在同一根K線內達成,數字可能與實際有所偏差。
第二個:把價差設定為0卻沒有在0回測
發生了什麼
為檢視「純粹實力」,把價差設定為0再回測。這是回測2019年EA的回合中所寫的「先把價差設定為0再回測」。
然而,報告上方的「價差」行顯示「當前值 (10)」。並非0,而是當時帳戶的價差(10個點)在回測。
區分方式
查看報告中「價差」行是否與設定的值相同。此處顯示的值即為實際使用的值。
若0回測無法成立,則以兩個值延伸
在價差欄列出的值(例如2和10)各回測一次。
價差成本會隨價差大小而近似線性增加。若以直線連結兩次結果延伸至0,便可估算出0價差時的結果。
舉例(數字為說明用):
- 價差2時,淨虧盈+800美元
- 價差10時,淨虧盈0美元
- 多出了8點,淨虧盈減少800美元,因此每點約100美元
- 若價差為0,則在+800美元上再加上2點共200美元,約為+1,000美元
此時也要確認交易次數是否相差過大。若次數不同,無法用直線延伸至0。
先於PF查看報告上方四行
兩者的答案都寫在報告上方。
- 建模品質
- 不一致圖表錯誤
- 模型Tick數
- 價差
現在在查看PF或淨虧盈之前,會先看這四行。
測試器的數字會因測試方式而變化,這點在2019年重新回測的EA中也有說明。
關於驗證數字是否可信,與以其他方法得到的數字做交叉比對的說法,見下方。這裡描述的是我的驗證腳本比測試器更易出錯的情況。
作為開發者,所遵循的事項
- 以確定的K線做判斷的EA,應以「開盤價」回測
- 「全點」回測時,先確認測試期間的1分鐘K線是否齊全
- 先於PF查看報告上方的四行
- 若需要0價差的結果,則以兩個價差回測再延伸
- 測試數字需與以其他方法得到的數字交叉比對
本文是本人驗證的紀錄。策略測試器的運作可能因MT4版本、經紀商資料而異。此文非特定EA或交易方法的推薦,後測結果不代表未來表現。投資判斷請自行負責。
感謝您閱讀至此。