EA自動交易

EA過度優化是什麼?如何避免?

避免過度優化EA

避免過度優化EA

所謂的「過度優化」,就是為使EA看起來有更好的表現,不斷地對各種參數作出調整、優化等。

這篇文章主要介紹如何避免過度優化。

只在回測時出現好成績的陷阱

開發EA時,有一個過度優化的大問題。所謂的過度優化是指在開發EA當中,調整指標或停利(take profit)、停損(stop loss)等的參數時,過度追求獲得更好結果的數值。

換句話說,就是對於用在回測的歷史數據(historical data),去尋找數學上能達成最佳成績的數值組合,這也稱作曲線套入(curve fitting)。

在EA的開發階段會希望使用過去的歷史資料找出更好的參數,但是過度優化雖然可以讓該數據能產生佳績,但是在實時測試(forward test)(實際運用)中卻可能不會產生同樣的結果。

 避免過度優化的方法

由於這樣的問題,因此我們必須不斷地以「是不是過度的優化?」的觀點來檢視EA。

換句話說,不可單以回測的結果判斷EA是否具有優勢。

在判斷EA是否過度優化時,可透過實時測試中收集數據,然後與回測比對。

以上是站在投資人(使用者)的立場來看。

接著,從開發者的角度來看。

開發EA時,可降低技術指標的使用,以防止發生過度優化的情形。

技術指標太多就會增加參數的組合,於是很容易出現過度優化的情形。

而且還有一大重點就是,在設計上必須讓技術指標的重要參數即使在一定範圍內出現變化,也不會造成結果出現落差。

小幅改變參數就導致結果大不相同,這樣的邏輯自然讓人對其優勢產生疑慮。

 推進分析(walk forward)

原本最好是能實施實時測試,但是也可以縮短所需的時間。

這個方法的概念就是,將部份歷史數據當作未來的價格走勢進行模擬實施測試。

例如有10年份的歷史數據時,以10年前到1年前的數據開發EA,再把剩下的1年份數據當作模擬未來價格走勢的資料。

比較開發所需的回測與實時測試的結果,若兩者未出現差異時,表示過度優化的可能性不高。

同時還能利用此推進分析(walk forward)提高開發的精度。

在如下的工程中反覆進行分析與參數的調整,就能完成無過度優化的EA開發。 

避免過度優化的EA開發步驟

製作最近1年期間,能獲得佳績的EA(短期測試)
以不包含1期間的過去10年數據調整出更好的參數(長期測試)
以最近1年的數據確認&調整2的EA(短期測試)
以不包含3期間的過去10年的數據調整出更好的參數(長期測試)
之後反覆3與4

 按此步驟採用短期測試與長期測試結果相等的參數。這就是避免發生過度優化的開發方法。

-EA自動交易

© 2020 外匯交易平台比較/外匯交易商排名 Powered by AFFINGER5