期貨程序化交易之突破策略篇

程序化交易近年來越發越來越多的人投身其中開發各種的程序策略。並且這已成趨勢。就不在多說,我們開始將策略開發過程及策略的核心代碼寫出來。

突破策略一直是古董級的方法。我們現採用一家商業平臺來寫這個策略。

一, 突破的原理:如果close向上突破openD(0)+atr/2 則做多;

如果close向下突破openD(0)-atr/2 則做空;

openD(0)是指當天期貨品種的開盤價,atr算法如下:

tr[i]=maxlist(value1,value2,value3);// tr[i]為二維數組。

if i=atrlen-1 then begin

for i=0 to (atrlen-1) begin

trx=trx+tr[j];

end;

atr=trx/atrlen;//atrlen是個數值型參數,一般筆者也就是在1到200之間。

end;

如果你照抄上面幾句運行,會發現有問題,i,有的軟件比如TB ,MC, python ,matlab等對有些關鍵詞已定義,如果發現有問題可以將i改寫成j或其它你喜歡的字符。所以我是全改成了j,如下:


期貨程序化交易之突破策略篇

圖1


二,過濾,上面幾句簡單的寫完,你會發現跟沒打理的菜地一個樣,無效成交很多,一回測績效虧得很大,心情很鬱悶,很失望,這很正常,我們還要將過濾添加上去,你可以理解成菜地的日常打理除草。韭菜邊上長棵小麥,將小麥炒了吃,味道應當不會太好。過濾常見的有那麼幾種ADX,布林線等。讀者可以去做個歸納。當然,我們這裡呢還對K線進行了數據處理。

核心語句就下面幾句:

期貨程序化交易之突破策略篇

圖2


buy:做多

sellshort:做空

上述各condition語句是各種過濾條件等。

以上寫完編繹代碼看有無語法上的問題bug什麼的。編繹成功後說明語法是沒問題了。

下面我進入下一步,對樣本內數值進行優化參數:

我們選個品種,最近油很是火熱,商品期貨我們用燃油(5分鐘週期)。先看2018年4月到2019年4月經過優化後的測試結果:


期貨程序化交易之突破策略篇

圖3


期貨程序化交易之突破策略篇

圖4


期貨程序化交易之突破策略篇

圖5


樣本內數據看起來很普通,年化64%,回撤17%,勝率43.9%,盈虧比1.8:1;

沒關係,我們看下樣本外數據(2019年4月到2020年4月)如何:


期貨程序化交易之突破策略篇

圖6


期貨程序化交易之突破策略篇

圖7


期貨程序化交易之突破策略篇

圖8


我們看下主要指標,年化150%,平倉交易最大虧損17%,平均每月盈利12.7%,全年成交71次,平均每週成交1次半,勝率46.48%,盈虧比2.97:1,這些數據都相當不錯。注意,是樣本外數據。而且我們代碼中沒有任何的未來函數(程序中交易要麼是限價,要麼就是next bar )

限價的意思,如上菜場買菜(筆者經常去買),商家規定排骨50一斤,擺出愛買不買樣子,小編我也無奈,按這價買吧。

next bar :就是下個K線要成交。接上句,如果50塊一斤不買,就去下個商家,結果這家沒排骨了,只有小白菜,無奈,買點回去炒了再說。必須在這裡成交,不管是什麼價什麼東西。沒有下一個商家。

這個突破策略還是相當可以的,至少滿足了目前的熱點。成交語句也少,而且相關語句我是有在實盤的,只是稍做修改。實盤問題不大,當然,我們還是要走個仿真測試的流程,萬一出了bug呢。

2020年4月24日 深圳



分享到:


相關文章: