一、前言
今天開始研究MT4了,MT4是大大有名的外匯交易和量化軟件,使用一種叫做MQL的語言來開發量化程序(跟C比較像)。因為是外國人做的,用的也大部分是外國人,使用起來不是很順手,跟極星各有優劣吧。這里我就先逐步講一下MT4的使用,然后再簡單跑一個boll指標,最后匯總下使用心得。
二、安裝
1、下載MT4
不熟悉這東西,連安裝都是個麻煩事兒。MT4官網好找一搜就有,下載鏈接好找安裝包不大,一會就安裝上了。可是你給我裝的啥?我要的MT4你咋給我裝個MT5?
原來這家公司現在力推MT5,但是大家都用慣了MT4不想換,所以官網只能下載MT5,但你可以到各經紀商下載老版本的MT4。由於二者間有些差別,而且大部分人都不用新版本的,所以我也從善如流找個老版本吧。
最后經網友幫助終於下了經紀商的版本,我使用的下載鏈接:
https://www.fuhuiyazhou.com/
翻到中間就有下載鏈接了
2、注冊模擬賬戶
安裝后直接打開,會提示你開戶。我們先注冊個模擬賬戶,下圖中就是可接入的站點,你選一個ping值較小的,然后地址名帶Demo的(Real是實盤不是模擬)。
填寫信息后即可注冊成功,一開始會給你1萬的資金用來模擬。啟動后的窗口大概就是下圖這樣。就不說MT4本身的操作了,大家可以自己摸索下。
三、編寫量化代碼
1、新建量化
現在我們看到這個叫“交易端”,在上方的功能菜單中選擇“工具->MQ語言編輯器”打開量化編輯窗口。然后新建一個量化策略,注意是“新建”而不是“新建項目”。
新建向導里有很多選擇,一般我們用到的就是:
EA交易:就是我們說的量化了,在MT4他們叫EA(Expert Advisor 智能交易系統)。
自定義指標:比如我們在K線圖上看到的MA指標、BOLL指標,在MT4你可以自己來編輯指標然后應用到K線圖上,國內一般將指標編輯放在交易端,MT4把這些全部放到了MQL編輯器里了。
腳本:腳本可以在你觸發后自動執行一系列操作,與EA不同的是,腳本是手動觸發,而EA是行情觸發。
選擇“EA”->下一步->名稱輸入“testboll”->下一步
接着就會讓你選一些額外的觸發函數。什么叫額外呢,因為一般我們是來一個行情觸發一次量化執行的,現在你可以多加幾個,比如下面的“OnTimer定時觸發”就是到時間了就觸發一次。這里我們統統不要選,直接下一步。
創建成功啦,代碼的目錄在左側導航器的Experts目錄里,這是默認的。
2、代碼結構說明
從前面的圖可以看到,默認有三個函數,分別是:
OnInit():啟動EA時觸發一次的函數
OnDeinit():結束EA時觸發一次的函數
OnTick():來一個行情觸發一次的函數
3、簡單的boll策略
代碼比較簡單,向上突破后做空,向下突破做多,而且只做一單。需要說明的不多:
iBands是MT4自帶計算boll指標的函數,其中PRICE_CLOSE代表了當前收到的最新價。
Close 中存着所有收到的收盤價,Close[0]是最新的那個。
OrderSend 就是下單函數。
Symbol返回當前合約,其實填NULL也行。
OP_BUY、OP_SELL分別是買和賣。還有四個類型分別是:OP_BUYLIMIT、OP_SELLLIMIT、OP_BUYSTOP、OP_SELLSTOP
Ask、Bid分別代表當前的賣價和買價
Bid+50*Point、Bid-50*Point分別用作止損和止盈,即在下單價的基礎上,上浮和下浮50個點止損、止盈。一個點就是合約的最小變動價
Green、Red設置箭頭的顏色,在跑EA時下單的話可以在K線上顯示一個箭頭表明下單了。國外一般綠色是多、紅色是空(跟我們反過來)
更多的參數說明可以看用戶手冊,英文版的在“幫助->MQL4幫助文件”,文末附上了中文版的說明(翻譯的一般,看的吃力)
四、回測
由於今天剛好不是交易日,所以就只能做一下歷史數據回測。
1、檢查代碼
在開始測試可以先運行下調試,主要是檢測下代碼有沒有問題,沒有問題的話會進入MT4下單界面。
點確定即可
然后你會發現什么都沒發生。但是注意看K線圖的右上角,會有你當前測試EA的名字,還有個哭哭臉。這是因為EA已經加載了,但你還沒啟動策略執行。
在工具欄找到“自動交易”,點擊即可。
如果是在有即時行情的時候,點擊“自動交易”后,哭哭臉就會變成笑笑臉,那策略就真的開始執行了。但現在沒有行情,我們只能做回測,就沒必要點“自動交易”了。
2、啟動回測
建議修改代碼后,每次都點一下“運行調試”,一是看看代碼有沒有問題,其次有時我更新代碼后立即做回測發現代碼並沒有更新,執行一次“運行調試”就一定是最新的,反正是比較玄乎。
在下方的回測欄中選擇我們剛寫好的策略、回測的合約、K線周期等等。
注意1:復盤模型選“僅用開盤價”即可,這樣顯示復盤的速度會快點,如果選了“每個即時價格”則K線生成的會比較慢
注意2:勾選“復盤顯示”后會在K線圖上重現K線生成的過程,后面那個滑動條是快進的速度
注意3:“時間周期”設置的是K線顯示的周期,而不是觸發的周期,這個后面詳細說明
3、結果查看
K線圖上會以圖標的方式顯示你的下單情況
最下方有“結果”、“凈值圖”、“報告”、“日志”分別代表了“下單明細”、“資金變化”、“回測報告”、“系統和用戶日志”可以查看回測的各方面信息。
注意在“下單明細”中,除了我們操作的buy和sell外,還有自動執行的止盈和止損(下單時就設置了的)。
五、注意事項
1、回測的K線周期只是顯示的周期,不是觸發的周期。
你看代碼里觸發的函數是OnTick,意思是每一個tick都會觸發一次,而不是5分鍾、10分鍾觸發一次,所以你獲取到的close是當前tick的,而不是K線bar柱的。這一點跟我以前的經驗有很大不同。但是呢,open獲取到的開盤價又確實是指定周期bar柱的開盤價。總的來說MT4的回測有點像極星的即時行情,從這個角度來說確實是實現了更高真實度的回測。
2、歷史數據可能沒有你期待的那么可靠
通過數次測試我發現,越是以前的數據tick越稀松,越是現在的數據tick越密集。比如你做3月26日到3月27日的回測,26日開始時的tick數據是1分鍾一個觸發,而到了27日可能一秒鍾一個觸發。具體怎么回事我還得再測測看。
六、總結
本節簡單做了個boll回測,而且把大概的流程搞清楚了,但也發現了很多問題導致回測不准,后面還得花時間把問題搞清楚先。
關注公眾號“零基礎愛學習”回復"MT1"獲取本節的示例代碼和中文用戶手冊。