時間:2023-08-26|瀏覽:262
策略安全性 在發明者量化交易平臺上開發策略,策略僅發明者量化賬戶持有者可見。并且在發明者量化交易平臺上可以實現策略代碼完全本地化,例如把策略封裝成一個Python包,在策略代碼中加載,這樣就實現了策略本地化。
https://www.fmz.com/api#策略安全性
其實這種擔心大可不必,不過既然有這種解決方案,那么就提供一個完整的實現例子。
封裝一個策略 我們找一個簡單的Python策略做示范,使用經典的DualThrust策略,策略地址:https://www.fmz.com/strategy/21856
我們力求不改動任何策略部分代碼,將策略封裝成一個可由FMZ平臺上策略代碼調用的文件,并且執行結果和直接運行該策略完全一致。封裝最大的問題在于FMZ平臺上的策略代碼調用的全局對象,全局函數,常量值,在我們封裝的文件中無法訪問,這樣就必須想個辦法把這些對象、函數、變量、常量傳遞到封裝的文件。那接下來我們按部就班的處理。
復制python版DualThrustOKCoin期貨策略的代碼,粘貼進本地的Python文件,本地Python文件命名為testA。
粘貼進本地編輯器打開的文件testA。
增加一些代碼,對于復制粘貼進的策略代碼部分保持原封不動
以上代碼主要作用是,聲明當前文件內用到的全局函數、變量。然后預留導入這些函數的接口SetExchanges,SetParams,SetFunc。在FMZ平臺上的策略調用這些函數,把一些用到的函數、對象等傳遞過來。
FMZ平臺上的啟動策略 啟動策略就很簡單了,如下:
在FMZ平臺上寫的代碼就只有這幾行,需要注意的是這個啟動策略的參數是要和我們封裝的策略python版DualThrustOKCoin期貨一模一樣的,其實可以直接復制一下「python版DualThrustOKCoin期貨」策略,然后把策略代碼清空就可以了,粘貼上
這樣我們就把策略邏輯主體封裝在testA文件,放在托管者所在設備本地,FMZ平臺上只用保存一個啟動策略,創建這個啟動策略的機器人,就可以直接加載我們的本地文件在托管者本地運行了。
回測對比 本地加載testA文件回測
原版策略,在公共服務器上回測
另一種更加簡單的方式 直接將文件載入執行。這次我們準備一個testB文件,放置「python版DualThrustOKCoin期貨」策略的代碼。
策略太長,就省略了,策略代碼完全不用改動。
然后準備「python版DualThrustOKCoin期貨(啟動策略,直接執行testB文件)」,就是我們在FMZ平臺上的策略,創建機器人,直接加載testB文件,并且直接執行。需要注意的是啟動策略必須也有和「python版DualThrustOKCoin期貨」原版一摸一樣的策略參數設置(策略界面參數)。
執行回測:
回測結果和以上測試一致。顯然以上第二種方法更加簡單,推薦使用,如果有更好的方法,歡迎大神留言。