與別處相比,在 MQL5 應用商店 購買交易機器人有一個明顯的優(yōu)勢 - 其提供的自動化系統(tǒng),可直接在 MetaTrader 5 終端內(nèi)接受完整測試。購買前,EA 交易可以、也應該在內(nèi)置的策略測試程序中,以所有不利的模式謹慎運行,從而對此系統(tǒng)有一個全面的認識,注意 MQL5 應用商店中提供的每一個 EA 交易都有試用版本提供。
記?。翰粌H僅是您在購買交易機器人時支付款項方面的風險,還有使用此類交易機器人在實際賬戶交易所帶來的潛在損失。
下面,我們以免費的三種移動平均線 EA 交易(直接在 MetaTrader 5 終端下載)為例來研究一下。它是某種基于三種移動平均線的經(jīng)典交易策略的一種實施。

圖一
基于測試結(jié)果的 EA 交易評估法
盡管沒有什么可以 100% 保證交易機器人性能的通用方法,但允許您在 MetaTrader 5 終端策略測試程序中檢查任何特定交易系統(tǒng)主參數(shù)的簡單方法還是有的。主要方法如下:
隨機延遲模式下的壓力測試,
不同交易環(huán)境下的測試,
不同交易品種/時間框架的測試,
不良歷史數(shù)據(jù)的事后檢驗,
延長歷史周期的事后檢驗(繼 EA 交易于 MQL5 應用商店中發(fā)布之后),
前向測試。
此外,對潛在的可疑因素應予注意,比如:
過高的獲利系數(shù),
歷史數(shù)據(jù)的巨大利潤值,
某交易系統(tǒng)中大量的外部參數(shù),
資金管理的復雜規(guī)則。
盡管上面所說的都是非常簡單的任務,但大多數(shù)的初學者、甚至許多擁有一定程度經(jīng)驗的交易者,要么不清楚其微妙之處,要么不能始終集中注意力。再一次提醒大家,從 MQL5 應用商店下載的任何交易機器人,都可以設置為在 Navigator (導航器)窗口中直接測試。

圖二
一旦您按下上下文菜單中的 "Test" (測試),就會顯示出帶有您所選 EA 交易的策略測試程序面板。測試所下載 EA 交易的一切工作均已就緒,我們也做好了仔細研究上述評估方法的準備。
隨機延遲模式下的壓力測試
策略測試程序主要設計用于測試系統(tǒng)的交易規(guī)則。也就是說,此策略測試程序會模仿所有過程的理想環(huán)境:
發(fā)送交易請求,
更新未平倉與掛單的狀態(tài),
獲取交易事件,
獲取價格歷史,
計算指標以及許多其它事項。
一切都旨在用最少的時間,完成交易策略的測試和優(yōu)化。但是,鑒于實際環(huán)境中交易機器人的操作遠非理想和即時,所以利用一種附加的測試模式來模擬某交易訂單發(fā)送與執(zhí)行之間的隨機延遲,從而強化策略測試程序。

圖三
此測試模式會準確地檢測:
交易操作處理錯誤,
調(diào)整策略以適應特定交易條件。
在標準與隨機延遲兩種模式下,運行單次 EA 交易測試后得到的交易結(jié)果卻有顯著不同,讓人不得不重視。首先,查看策略測試程序日志,因為其所包含的大量交易錯誤,足夠作為不再考慮此 EA 交易的原因。而本例中,在隨機延遲模式下的壓力測試過程中未檢測到任何此類錯誤,這就表明此 EA 交易已成功通過測試的前半部分。
現(xiàn)在,我們來看看利用兩種模式下運行的單次測試所獲得的交易結(jié)果之間有無差異。隨機延遲模式下所獲交易數(shù)與利潤的大幅縮減,表明此策略高度依賴于傳輸和交易訂單執(zhí)行的質(zhì)量,而且只能在特定的理想條件下盈利??赡艽蠖鄶?shù)情況下,開發(fā)人員都是在無意中完成了這一操作。但是,這樣一個“瑕疵”卻可能變成您交易賬戶的一場災難。

圖四
本例中,切換到不同的交易訂單執(zhí)行模式并未影響到交易數(shù)量。而測試結(jié)果的些微不同,用由于重新報價而導致的交易中出現(xiàn)的小幅價格變動完全可以解釋。
總結(jié):三種移動平均線 EA 交易已通過此測試。隨機延遲模式下的壓力測試,并未對交易結(jié)果產(chǎn)生重大影響。
不同交易環(huán)境下的測試
在 MQL5 應用商店中的描述里指明的條件下,運行交易機器人測試。然后連接到另一經(jīng)紀人賬戶,并再次運行此測試。這與之前的壓力測試有些類似,允許您查看價格與交易條件(點差、允許的止損/獲利水平等)對于交易結(jié)果的影響有多小。
比如說,您擁有經(jīng)紀人 A 賬戶上的 EURUSD EA 交易測試結(jié)果。再次運行相同的 EURUSD 測試,只是這次是在經(jīng)紀人 B 賬戶。假如兩個結(jié)果有很大不同,則是重新考慮是否需要此交易機器人的很好理由。
另一交易品種/時間框架
大多數(shù)的交易機器人都是為了執(zhí)行某特定交易品種的交易而研制,有一些甚至還要求必須用于某特定時間框架。這似乎很合理,因為每一款工具都有自己的操作方式。因此,一般來說,MQL5 應用商店提供的交易機器人的描述中,始終都會指定交易品種和時間框架。
下載一份 EA 交易的試用版,并按不同的交易品種和(或)周期啟動它。首先,您需要確保 EA 交易不會因嚴重錯誤崩潰,或是因在不宜的啟動條件下使用而向日志添加交易錯誤消息。第二,確??捎灰撞呗陨形匆蛞陨显O置變更而變得極端虧損 - 出現(xiàn)曲線擬合處可能會有這種情況發(fā)生。
為 EA 交易安排此類測試最簡單的方法之一,即就 Market Watch (市場報價)中選定的所有交易品種實施優(yōu)化。我們在相當長的時間框架 H1、且生成“每一價格變動”的情況下,于此模式下運行 EA 交易優(yōu)化,很快就得到了第二個問題的答案。

圖五
此優(yōu)化的結(jié)果表明,該策略有存在的權(quán)利,從統(tǒng)計學上展示了每一交易品種足夠的交易量,且未產(chǎn)生真正的不良結(jié)果。注意,我們已經(jīng)按默認設置,利用相同參數(shù)就 Market Watch 中的全部 13 個交易品種完成了一次策略測試。

圖六
當然,我們也不奢望每一個 EA 交易在任何交易品種和時間框架上都同等有效。但利用此法在策略測試程序中檢查一下還是值得的。它不僅會揭示出潛在的代碼錯誤,甚至還可以催生新想法。
總結(jié):三種移動平均線 EA 交易在不同的交易品種/時間框架上測試時表現(xiàn)正常。測試期間未見任何明顯代碼錯誤。
不良歷史數(shù)據(jù)的事后檢驗
我們發(fā)現(xiàn),此 EA 交易在 GBPUSD 上的結(jié)果最佳。但是,如果這不是一種一致的形態(tài)、且這種行為是由于所選的從 2012.01.01 到 2012.09.28 的測試間隔、而這種選擇又是純粹出于偶然得到了有利結(jié)果,那么,又會怎樣呢?為深入研究這一問題,我們就 2011 年采用相同的參數(shù)來測試此 EA 交易,并取 2011.01.01-2011.12.31 作為間隔。運行測試,并查看結(jié)果。

圖七
此 EA 交易不再有利可圖,而且立即變得乏善可陳。此外,2011 年遭受的損失,已大大超過了策略測試程序于 2012.01.01-2012.09.28 間展示的利潤。但是,現(xiàn)在我們知道了潛在的損失,即便是在 GBPUSD 上交易也是一樣。
總結(jié): 三種移動平均線 EA 交易需要進一步的開發(fā),才能確保對于市場行為變化的正確自動應對;否則,就要通過優(yōu)化,找到每個間隔的最佳參數(shù)。
延長歷史周期的事后檢驗
給出描述時,交易機器人的開發(fā)者都會試圖呈現(xiàn)其產(chǎn)品最好的一面,并因此提供針對某特定間隔參數(shù)最優(yōu)的報告及測試圖表。由于從交易機器人發(fā)布之日到您對其感興趣之時,通常已經(jīng)過去了相當長的時間,所以,我們可以運行一次所謂的前向測試。
前向測試會針對選擇最優(yōu)參數(shù)時未考慮到的一段歷史期間執(zhí)行測試。我們會用 GBPUSD 、在稍長一點的測試間隔內(nèi)(其中包括自 2012 年 9 月 28 日之后的歷史數(shù)據(jù))繼續(xù)此 EA 交易的分析。結(jié)束日期設置為 2012.11.26,由此又添加了近兩個月。所以,在完成從 2012.01.01 到 2012.11.26 期間的運行測試之后,我們得到了新的測試圖表:

圖八
本例中,三種移動平均線 EA 交易在附加短間隔(前向)表現(xiàn)的結(jié)果,甚至比之前 10 個月達成的結(jié)果都要好。當然,這種情況也非常罕見。
總結(jié): 用 GBPUSD、就延長歷史期間的三種移動平均線 EA 交易測試,未能顯示出交易參數(shù)的任何削弱。
前向測試
前向測試用于評估交易系統(tǒng)在不斷變化的市場行為中的穩(wěn)定性。經(jīng)過對策略測試程序中參數(shù)的優(yōu)化,即可得到交易機器人在特定時間間隔內(nèi)、就歷史數(shù)據(jù)實現(xiàn)最佳狀態(tài)的參數(shù)。但這樣卻不會確保所獲的參數(shù)將同樣地最為適合,即便是用于即將到來的交易也是如此。
開發(fā)自動化交易系統(tǒng)的交易者通常都會混淆優(yōu)化和曲線擬合之類的概念。出色優(yōu)化與曲線擬合之間的界線并不明顯,很難找到。而前向測試允許客觀地評估所獲參數(shù),證明確有用武之地。
經(jīng)過在 MetaTrader 5 策略測試程序中的優(yōu)化之后,您可以選擇對產(chǎn)生的優(yōu)化參數(shù)進行前向測試,并設置必要的限制。我們利用以下顯示的設置,運行我們交易機器人的前向測試。

圖九
前向被設置為 1/4,也就是說,指定的間隔 2012.01.01- 2012.11.26 會被分為 4 部分。前 3/4 的歷史將被用于查找最優(yōu)參數(shù),而最佳的 25% 傳遞(EA 交易參數(shù)集)則會在剩余的 1/4 歷史數(shù)據(jù)上接受前向測試。
指定要優(yōu)化的參數(shù) - 我們會選擇那些應該會對交易邏輯造成影響的參數(shù)。因此,我們將優(yōu)化負責資金管理的參數(shù)。

圖十
上述的組合步驟,加上各值的啟動與停止,就已經(jīng)導致了近 500 萬次的傳遞。在給定的環(huán)境下,在優(yōu)化過程中使用遺傳算法并加入 MQL5 云網(wǎng)絡也不是沒有道理。
所以,我們來研究一下優(yōu)化結(jié)果,其中包括共耗時 21 分鐘的前向傳遞,并花費利用云代理執(zhí)行 4000 多次傳遞的 0.26 積分。成本計算方式的示例,請見MQL5 云網(wǎng)絡:您還在計算嗎?

圖十一
乍一看來,似乎是出錯了。我們檢查結(jié)果,發(fā)現(xiàn)前三個優(yōu)化參數(shù)的值在整個傳遞過程中都一樣。而且,只有最后兩個參數(shù) Inp_Signal_ThreeEMA_StopLoss 和 Inp_Signal_ThreeEMA_TakeProfit 的值有變化。

圖十二
有鑒于此,我們可以做出兩種假設:
這些參數(shù),尤其是止損與獲利值,實際上都對交易結(jié)果沒有影響;
遺傳算法未能避免優(yōu)化期間我們遇到的局部極值。
我們一起利用相同的設置和輸入?yún)?shù)重新優(yōu)化,以檢驗這兩種假設。這一次,前向測試結(jié)果圖表看起來有些不一樣了。

圖十三
作為優(yōu)化的結(jié)果,我們現(xiàn)在可以看到三個主流。這就意味著,給定交易機器人最后兩個優(yōu)化的參數(shù)仍然顯得偶然。
總結(jié): GBPUSD 上三種移動平均線 EA 交易的優(yōu)化已表明,交易邏輯僅取決于 7 個參數(shù)中的 3 個。
我們一起做最后一次嘗試,消除優(yōu)化中的不必要參數(shù)。現(xiàn)在,我們只有 1650 次傳遞。

圖十四
因此,完整的參數(shù)搜索比遺傳優(yōu)化更有意義。這種情況下,MQL5 云網(wǎng)絡會為我們提供更多的代理,而完成這一過程所需的時間也會因此大幅縮短。

圖十五
此任務由 2000 個云代理在 7 分鐘內(nèi)完成,且前向測試圖表看起來不錯。

圖十六
整個前向期間的大多數(shù)傳遞都顯示出可盈利,在初始 10.000 美元之上的點數(shù)比虧損區(qū)域中的大很多??雌饋碛悬c希望,但還不能因此就說,相關(guān)參數(shù)集未來亦可盈利。
交易系統(tǒng)中的參數(shù)數(shù)量
我們有機會看到,并非所有可用于設置某交易機器人的策略參數(shù),都能同等有效地影響交易結(jié)果。本例 中,Inp_Signal_ThreeEMA_StopLoss 和 Inp_Signal_ThreeEMA_TakeProfit 的值對 EA 交易性能幾乎沒有影響。但是,碰到擁有大量參數(shù)設置的交易機器人的情況卻更加常見。
大量參數(shù)允許您為交易機器人做出非常準確的設置,從而匹配其性能,以適應極有可能在優(yōu)化期間揭示的特定歷史期間。
曲線擬合是指 EA 交易在超出指定間隔、用于優(yōu)化的數(shù)據(jù)上,很可能就不會顯示與測試數(shù)據(jù)同樣的盈利水平。而且,更糟糕的是,還可能會產(chǎn)生相當負面的結(jié)果——導致虧損。
人們相信,交易系統(tǒng)的參數(shù)設置越少,已確定模式將在未來消失的可能性就越小。反過來也一樣 - 系統(tǒng)中的參數(shù)越多,市場會保持其與這種經(jīng)過微調(diào)的 EA 交易一致特征的可能性就越小。作為上述內(nèi)容的證明,我們強烈建議您熟悉優(yōu)化與現(xiàn)實:來自 ATC 2011 的證據(jù)一文中提供的交易分析,下文我們將詳細講解。

圖十七
此圖表所示為整個 2011 年自動交易錦標賽參與者的交易結(jié)果??v軸顯示錦標賽結(jié)束后的賬戶余額,而橫軸則顯示 EA 外部參數(shù)的數(shù)量。EA 交易則由紅色方塊代表??梢郧宄乜闯?,在錦標賽的前向周期進行交易時,擁有大量參數(shù)的 EA 交易都虧損,最多也就是不盈不虧。
代售交易機器人中外部參數(shù)的缺少,也并不能說明預置交易規(guī)則的普遍性,更不能被視為冷靜。出于某種原因,EA 交易的開發(fā)者必須直接將外部參數(shù)引入交易機器人內(nèi)部。
極高的利潤系數(shù)
許多交易者不喜歡輸?shù)艚灰?,并將此認作是某交易系統(tǒng)運行故障的表現(xiàn)。實際上,由于金融市場中交易的屬性,這些情況都不能避免。只要一建倉,任何交易 最終都面臨著或贏或輸?shù)木置?。而交易損失也不可避免,像所有企業(yè)一樣,被視為一種自然發(fā)生的支付形式,以及不可避免的支出項目。
有許多自動化交易系統(tǒng)的開發(fā)者更是走向極端,試圖將虧損交易和毛損的數(shù)量降至最低。為實現(xiàn)這一目標,并改善策略測試程序中可能取得的結(jié)果,他們又添加了允許您避免虧損交易、由此加大利潤系數(shù)的額外過濾器。額外過濾器有其自身的參數(shù)和設置,從而加大了輸入?yún)?shù)的總量。
利潤系數(shù)被定義為毛利除以毛損。盈利系統(tǒng)的利潤系數(shù)總是大于 1。但是,如果有人使用過度、利用策略測試程序過度優(yōu)化交易系統(tǒng),則此數(shù)字可能會大得多。我們再來看看來自優(yōu)化與現(xiàn)實:來自 ATC 2011 的證據(jù)一文中的另一圖表。

圖十八
很顯然,幾乎所有的利潤系數(shù)超高的交易機器人,在歷史數(shù)據(jù)測試期間,甚至都沒有接近過在 2011 年自動交易錦標賽前向期間測試的事后檢驗結(jié)果,幾乎損失了一切。這就表明,策略測試程序中顯示的超高利潤系數(shù),只是由于調(diào)整策略以適應某個用于交易機器人優(yōu)化的特定時間段。
基于歷史數(shù)據(jù)的巨額利潤
另一個驚人的事實,可能就是某交易機器人描述中聲稱的巨大利潤。如果隨附的策略測試程序報告顯示了超高余額,那么最有可能是與曲線擬合有關(guān)。此類“印鈔機”式的開發(fā)者甚至沒有意識到,他們的系統(tǒng)已經(jīng)過度優(yōu)化,而且有太多的外部參數(shù)。我們用上文提過的報告優(yōu)化與現(xiàn)實:來自 ATC 2011 的證據(jù)中的另一圖表來支持這一論斷。

圖十九
這種“圣杯”的購買者已成定式,都是沒有經(jīng)驗、易于被基于歷史數(shù)據(jù)的巨額利潤蒙騙的人。這種情況下,此類交易機器人可以贏得利潤的幻象就變得真實且有響應。
資金管理操作
創(chuàng)建一種允許您在策略測試程序中仔細檢查不良歷史數(shù)據(jù),成功交易虧損最小化、回報最大化的交易操作規(guī)則,是應對交易機器人畸形開發(fā)的一種最復雜、也最罕見的方法。它與所謂的資金管理相去甚遠。
發(fā)現(xiàn)此類擬合的最好辦法,就是測試在歷史期間之外、用于獲取開發(fā)者在交易機器人描述中所聲稱的結(jié)果的數(shù)據(jù)。擬合范圍越寬,該交易機器人通不過測試的可能性越大。
不要相信任何人,甚至包括自己
遺憾的是,與任何復雜的程序一樣,交易機器人也可能包含無意的失誤。除了在線交易,無法檢測出這種失誤。沒有任何交易機器人的開發(fā)者可以保證其程序 沒有錯誤,可以正確處理所有非標準的狀況。即便是成功通過測試的 EA 交易,將其放入開發(fā)者不能預見的未知狀況,也可能會犯交易錯誤,或是因嚴重錯誤而崩潰。這種情況下,唯一的隱性擔保,可能就是交易機器人開發(fā)者的經(jīng)驗和聲望了。
而且,已在足夠長的期間內(nèi)在“信號”服務領(lǐng)域顯示出積極成果的 EA 交易,相比之下更加可靠也是理所當然的。不管怎樣,千萬不要被未來利潤的計算所擊倒,要記住兩條仍然有效的規(guī)則:
1. 不要相信任何人,
2. 以及,任何過去的成功都不能保證明天的利潤。