內容目錄
什麼是回測?
當我們寫完一隻自動交易程式(EA)後,或是你今天從某處得到一支EA時,
我們通常不會直接就放到實盤去使用,
而是會先去「回測」來看看這支EA策略的表現。
那回測就是使用商品過往的歷史價格,
讓EA在你選定的某段歷史區間去模擬交易時的進場與出場,
回測由電腦全自動自己執行。
不管你想要測試過往2年、過往5年、或過往10年的交易表現,
都可以在短短幾分鐘,甚至幾秒鐘內得到結果報表,
是觀察一個交易策略非常有效率的方法。
當然,前提是你的交易策略要能夠程式化,寫成EA。
今天我們這篇文章會教大家如何在MT4與MT5的軟體中回測你的EA,
在回測之前,我們要先來把EA新增至你的MT4或MT5的軟體中。
如何新增EA到MT4/MT5軟體中
首先,我們來到MT4或MT5的介面,
從右上角找「文件」的下拉式選項,並在點選「打開數據文件夾」,
然後在點選「MQL4」 (MT5是點選MQL5) 這個資料夾進去。
在這裡面最常用到的分別為:
1. Experts:放自動交易程式EA的資料夾
2. Indicators:放指標的資料夾
3. Scripts:放腳本的資料夾
這幾個資料夾分別對應著MT4/MT5介面中「導航」那欄裡面的幾個功能選項。
那EA的檔案就要放進「Experts」這個資料夾裡面,
就可以在MT4或MT5前台的導航欄的EA交易中看到它了,
也才可以進行回測。
開始回測
在MT4/MT5開啟EA回測介面
MT4可在介面上方找到一個有放大鏡的圖案,名稱為「投資策略測試」,
點下去即可開啟回測功能。
而MT5的話,則是在介面上方「查看」的下拉式選單中,點選「策略測試」,
就可開啟回測功能。
MT4回測介面設定
中間由上至下為:
1. 選擇要回測的EA、
2. 回測什麼貨幣或商品、
3. 復盤模式,為價格精確度的選擇,
MT4分價格精確度分為三種:開盤價、控制點、每個即時價格。
1)每個即時價格最準確,但回測跑得很慢,需要最久時間;
2)控制點精確度普通,回測需要時間也居中;
3)只用開盤價精確度超低,艾比本人完全不會去使用這個,回測需要時間超短,瞬間跑完。
控制點是使用K棒的開高低收價格,去模擬出12個分價點,
一般想要先看看策略大概的表現時,就會去選擇控制點,很快就可以得到結果,結果也不會太失真。
但如果是快進快出的交易策略,像是剝頭皮策略,就會失真很多。
4. 使用日期,回測的起始時間到終止時間、
5. 復盤顯示,
這邊如果打勾,則會在回測時開啟跑動的K棒圖表,像是真實在交易一樣,
艾比強烈建議打勾,因為我們要看EA是否有在正確的點位進場跟出場。
右邊的選項則是:
6. EA交易屬性,
點開裡面可以設定EA的「外部參數」,也在這邊設定回測的起始資金,
還有讓EA只下多單或只下空單的設定也在這裡面。
7. 圖表週期為K棒圖表的時區、
8. 價差就是「點差」,外匯保證金交易的主要成本,
在MT4的回測設定點差為固定點差,並可以直接在這一欄做設定;
那MT5的部分點差是包含在歷史資料當中的,無法在回測時再去修改。
9. 優化,不打勾就是單次回測EA;如果打勾會去針對你有選定的外部參數做優化。
圖中黃色框框部份為有安裝Tick data suite這個軟體才會顯示的,
如果沒有,你的介面不會出現。
Tick data suite提供MT4的回測使用者完整的歷史價格資料,
而且不用下載檔案很大的價格檔案與自己灌入MT4中,使用上非常的方便。
它還有可以設定浮動點差、自訂槓桿、模擬滑價等功能,但是它要付費。
MT5回測介面設定
中間由上至下為:
1. 選擇要回測的EA、
2. 回測什麼貨幣或商品、
3. K棒的時區、
4. 選擇自定義週期,然後可以選擇回測期間、
5. 中文翻譯成「轉寄」,聽這個翻譯會完全不知道這個在幹嘛?
其實他是「向前測試」的功能 (英文叫做 Forward test),
會根據你這邊選定的日期把全部回測期間切開,後面的當作是假裝未來的測試,
主要是用在優化時,後面這段期間不會拿來擬合找參數(insample),而是當成outsample。
(所以其實就是艾比在課堂上跟大家講的樣本內外測試,in-out sample test)。
6. 延遲速度,可選擇他偵測到你伺服器的最後ping即可、
7. MT5的價格模式總共有5個等級:
1) 每次報價,就是每個tick都計算;
2) 每次報價基於真實報價,這個模式他會實際抓取你交易商伺服器報價的真實狀況,如果伺服器有滑點、斷線等狀況也會被放進去,所以他最接近真實交易狀況,
但交易商伺服器內的歷史價格只有在近期比較完整,早期價格跟伺服器狀況依然缺漏的問題;
3) 一分鐘HOLC,就是只使用1分K的開高低收價格;
(在MT5匯入歷史價格時有分bar跟tick兩種不同模式,這個就是bar)
4) 開盤價,只使用每根K棒的開盤價格,很快,但參考性極低;
5) 數學模式,這個模式下只會調用EA中的OnInit(),OnTester()和OnDeinit(),讓你做一些函數的計算。
8. 入金,起始金額設定、
9. 槓桿設定(MT4回測只能依照券商槓桿,MT5則可以在這邊自行設定)、
10. 優化功能(MT5多了可以一次回測在報價欄中的全部商品)、
11. 視覺化模式,就是MT4的復盤顯示,可在回測時開啟跑動的K棒圖表、
12. 輸入頁籤,這邊是設定EA的外部參數。
另外,Tick data suite目前沒有支援MT5系統,
所以使用MT5回測的同學可以看一下券商本身的歷史價格資料是否完整,
如果不完整,那就要額外去自己匯入歷史價格資料。
回測在交易中的角色
回測不管是在手動的主觀交易或是自動程式交易當中,都是非常重要的,
可以說是一個交易策略,如果沒有經過回測,根本無從去判斷是否能使用。
而程式交易的好處就是可以透過軟體快速並自動的回測;
而一般的手動交易的交易者,通常是透過肉眼人工的方式,
將圖表從過往的某個時間點,開始去一筆一筆核對交易策略的進出場,
算是相當費工費時的過程。
我們來看一下,關於自動交易程式回測的優缺點:
回測的優點
1. 快速、省時
回測即使10年的過往歷史,使用速度較慢的精確價格模式,也頂多花費5~10分鐘左右的時間;
如果要大概看一下策略表現,使用像是MT4控制點模式,那只需要10~20秒的時間,即可得知結果。
快速省時絕對是程式交易中很大的優勢。
2. 自動統計報表
回測完成之後,軟體會給出一份統計報表,
讓你馬上可以知道策略能不能賺錢?風險有多大?下了幾張單?勝率是多少?等等…
可以依照報表來決定是否要使用該策略,
或是該從什麼方向去調整策略。
3. 驗證策略可行性
基本上一個交易策略在過往要會賺錢,我們才會願意在未來使用。
那當然會盡量排除是「過度最佳化」的可能性(報表會賺錢、但實際不會),
可以透過使用回測來做樣本內外測試(in-out sample test),
更有效的去檢測策略的可行性。
4. 優化找到策略適合參數
相同的策略使用在不同的商品、或不同的時區當中,
適用的交易參數會不同(例如:海龜突破的「20」日、月均線「20」與季均線「60」),
透過電腦自動的一次測試幾千種甚至幾萬種參數組合,
這是人工手動無法完成的事情。
回測的缺點
1. 略為失真
回測主要是透過「價格」來去做測試,但實際交易環境會更複雜,
包含滑價(滑點)、點差擴大、伺服器延遲或斷線、或券商不成交等等…
所以回測比較是屬於安穩的交易環境。
那以策略準確度來說,越是長線的策略(越不吃精確價格的策略),
回測出來的準確度、可信度越高。
2. 短進短出策略不適合
依照上面提到的原因,
極短線(例如:剝頭皮 scalper)的策略因為只要稍微偏差一點價格、或是進出場差個幾秒,
就會造成完全不同的表現,
所以容易造成回測表現超好、賺很多錢,但實際用了卻只會賠一屁股。
回測報表的判讀
回測完成之後的報表有著非常多的統計資訊,
最直觀的賺錢判斷法則是什麼?
哪些數據是程式交易者最在意的?
可以到艾比的這一篇文章來看喔:
👇投資自己的腦袋:
我需要用ZigZag寫出一個EA交易程式,不知有何人能幫忙。
dvo9987@yhoo.com.tw陳兆雋。
你好,請問是要代寫EA嗎?
詳細狀況可以加LINE@討論喔
https://line.me/R/ti/p/@anm4447v