一、前言
雖然極星9.5量化自帶了一個boll回測的策略,但缺少一些說明,這里我就把回測說的詳細點供大家回測時參考

二、代碼修改
原生的代碼自然不符合我們期望,所以做一些修改。
1、合約訂閱和觸發方式全部在代碼里實現
只是習慣問題,而且要避免重復設置導致的不可預測問題。

所以在啟動時的屬性設置頁面啥都不要選,默認選擇的能取消的就取消掉。

合約設置里不要選合約。

資金設置這里需要按實際情況設置,滑點損耗可以設置個1-3個點,看合約是否活躍的,還有就是你的網速如何。不過我在代碼里自己做了滑點損耗,所以這里也可以不設置。

其他不用管了,代碼寫好直接啟動即可。
2、關於“觸發方式”的額外說明
在回測時設置為“K線觸發”即可,K線觸發就是來一個K線就觸發一次handle_data函數。
實盤時你設置“K線觸發”或“即時行情觸發”都是一樣的,為啥呢?因為實盤的K線觸發不是等一個bar生成完畢才觸發,而是K線有了變化就觸發。以下面兩個圖片為例,K線的周期為5分鍾,這個bar要5分鍾才生成完全,這個過程中bar柱會時大時小,每一次變化都會觸發handle_data,那其實跟即時行情觸發有啥區別呢?區別不大(區別肯定還是有的...)。


然而在回測階段,bar柱是一次性生成的,所以不存在一個bar柱導致多次的handle_data觸發。
3、關於發單時機的額外說明
“實時發單”和“K線穩定后發單”有啥區別?在回測階段是沒有區別的,還是跟實盤中bar柱生成的問題有關。實盤一個bar柱生成過程中,很可能行情從100漲到120,觸發了買入策略,接着又跌到80觸發賣出策略,那豈不是一個bar柱就導致了原地爆虧?而且還有可能它一會120觸發買入,一會80又觸發賣出(這個情況是出現過的),你可能就來回虧損。所以在實盤中選擇K線穩定后發單是非常有必要的,然而回測時bar柱都是直接生成的,所以選那個沒有影響。
4、策略代碼

主要修改的是將買賣價格修改為Close而不是Open,同時增加了兩個滑點
5、買賣價格的額外說明
需要注意現在是做歷史回測,這個階段是沒有行情的,也就是買一、賣一這些數據是沒有的,我們只知道一個bar柱的開盤價、收盤價,所以在回測時一般認為成交價是bar柱的收盤價,同時加上兩個滑點確保即使在實盤也能以這個價格成交。
還需要注意的是歷史回測階段建倉操作是100%成功的,即時你價格設置為1也會當你以1元成交了。所以回測就是個模擬,不要把回測和模擬交易搞混了(模擬交易時價格不合要求是不會成交的)。
三、運行

運行后K線上的小箭頭就表明了買入賣出的時機
1、運行狀態解讀
運行階段會從“歷史”變為“實時”,因為我們在代碼里做了限制,所以實時階段是不做測試的。如果不在代碼做特殊處理,回測完歷史行情后,會繼續使用實時行情做模擬。
運行模式這里是虛擬,因為我們沒有開啟實盤運行。運行模式不設置為“實盤運行”則不能在即時行情階段發單(同時還得登陸賬戶,如果是實盤賬戶就真的交易了,如果是模擬賬戶則是模擬交易,不登錄賬戶則是用實時行情做回測)。
策略剛運行時會發現可用資金一下少很多,而回撤可能並不多,這是因為買賣要交保證金的嘛。
勝率只是統計了平倉的盈虧次數,勝率大但總體虧錢是常見的。
2、投資報告解讀
右鍵策略可以選擇投資報告,投資報告是你每次選擇時生成的,也就是點幾次就生成幾個,太多的話可以考慮刪除些。回測里比較重要的就是看下資金變化,下單的詳情

3、運行模式的特別說明
有一個特別的情況需要注意,就是你的運行模式選擇了“實盤運行”,然而你又訂閱了歷史行情,同時在歷史行情階段建倉了,那你現在就處於“回測”和“實盤”中間這么個狀態。當歷史行情走完后,按理來說你應該是在“實盤運行”了,但並沒有,即時行情導致的建倉依然認為屬於“回測”,也就是即時行情導致的建倉並不會產生一個真實的委托。但此時的持倉可以在“組合監控”中看到,而且你可以將持倉的信息“同步”到真實的賬戶中(自動產生委托)。
這種同步建議是不要使用的,因為用不好問題多多。比如有個童鞋選擇了自動同步,結果由於價格並沒有優勢(默認是當時的對盤價+1跳)導致一直無法成交,所以系統就一直幫他下委托單,一會就下了十幾個。
四、回顧
本篇我把近期關於回測的經驗都總結在這里了,希望對大家會有幫助,接着我會再寫一篇關於實盤的總結,大家可以關注公眾號“零基礎愛學習”。
示例代碼:
https://share.weiyun.com/5TQQciH
