【零基礎】MT4量化入門一:跑一個簡單的boll


一、前言

  今天開始研究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"獲取本節的示例代碼和中文用戶手冊。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM