如何編寫一個模塊化交易系統EA

引言

本人之前在用MQL4開發EA交易系統的時候,總是習慣性的將所有的代碼邏輯都放在一個.mql4文件裏,新寫一個EA的時候,也是直接把老的EA直接複製粘貼過來再改。這樣做在當時覺得很快很爽,但是當我寫了很多EA的時候就發現問題來了。第一,重複的樣板代碼太多,有時一個EA的某個功能改了,你去修改另一個EA的時候,發現這個功能還得再改一遍,像這種情況,完全可以把一些通用的功能抽取出來,讓所有EA都去依賴它就可以了,這樣只用修改一處即可。第二,把所有的邏輯都堆到一個文件中,也不符合軟件設計中的單一職責原則,隨着功能的增加,文件變得越來越冗長,不僅業務邏輯顯得混亂,而且定位問題也會比較耗時。基於這些問題,我想要是有個模塊化的交易系統就好了,這樣在寫一個新的EA時,很多常用的功能可以直接依賴一下,只需完成核心的交易策略部分就可以了。起初我是想在網上找找看有沒有現成的,但是找了一段時間並沒有找到比較滿意的,當然在這過程也有些文章給了我一些靈感。既然沒有現成的輪子,那就自己造一個吧,下面就是我的這個模塊化交易系統的簡單介紹,文末附有項目源碼鏈接。

模塊化交易系統

這是一個基於MQL4/MQL5的模塊化交易系統模板。它包含多個常用模塊,如交易系統控制中心,資金管理模塊,訂單管理模塊…等等。模塊化設計可以減少系統的耦合度,並且提高代碼的可重用性。避免將所有代碼放入一個文件中,可以使我們更專注於編寫主要業務邏輯。下面是本交易系統的幾大主要模塊:
project

  • TradeSystemController

    交易系統控制中心,這是整個交易系統的主要邏輯部分。它主要負責處理原始信號數據,並結合其他數據進行綜合分析,最後輸出可執行的交易信號。如果你想自定義交易策略,可以重寫這裏的邏輯。

  • MoneyManager

    資金管理模塊,主要負責與資金有關的所有操作,例如檢查餘額,計算開平倉手數等。

  • OrderManager

    訂單管理模塊,主要提供與訂單有關的幾種常規操作,例如開倉,平倉等。

  • SignalEngine

    信號引擎模塊,該模塊主要包含一個名爲ISignalEngine的接口,和一個它的實現類CSignalEngineImpl。該類獨立封裝了原始信號的計算邏輯。你可以在這裏定義你自己的信號計算邏輯。

  • EnvChecker

    環境檢查模塊,主要負責在交易之前檢查運行環境,防止在諸如圖表數據錯誤的情況下錯誤操作。只有當運行環境一切正常時才允許交易。

敬請期待

  • ExitManager

    未來還會添加新的功能模塊,比如可以設置或移動止損和止盈,暫且統稱爲退出管理模塊。

免責聲明

需要注意的是,本交易系統僅供學習或參考之用,不能保證在交易實戰中一定能穩定盈利。如果你一定要將其用於真倉交易,那麼出現任何後果,我們概不負責。謝謝!

項目源碼
如果覺得有用,請隨手一個star,不勝感激!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章