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

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

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

一, 突破的原理:如果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日 深圳