【零基礎】極星9.5量化入門一:自定義套利的K線繪制


一、前言:

  本人對期貨其實不太懂,只是會寫一點python,有一些錯漏之處還請各位指正。

  極星客戶端默認自帶了很多套利合約,比如JD2001-JD2005,還提供了K線圖。對於自定義的套利,比如JD2001-JD2002,就只有閃電圖。但是有時候我們又想分析下自定義套利的K線走勢,做一些指標分析。利用極星9.5的量化功能可以很方便做到這一點。

二、思路

  整個思路簡單直接

  1、訂閱行情:需要哪些合約的行情用SetBarInterval函數先訂閱好(量化窗口默認會顯示訂閱的第一個品種K線)

  2、讀取各合約的開盤價、最新價、最高價、最低價

  3、A合約各種價減去B合約各種價就是套利合約AB的價格

    AB套利的開盤價=A開盤價-B開盤價

    AB最新價=A最新價-B最新價

    AB最高價=A最高價-B最高價

    AB最低價=A最低價-B最低價

    (注意:這里的最高價和最低價肯定是不對的,這里簡化一下而已,因為各項指標是以最新價來算的,所以就先這樣吧)

  4)繪制K線圖,使用PlotBar繪制K線柱,使用PlotStickLine繪制K線上的線段,需要注意開盤價高於最新價表明價格下跌,要用綠色。開盤價低於最新價表明價格上漲,要用紅色。不漲不跌我們用藍色表示(因為沒有白色可選)

  實際過程中遇到的主要問題是:

  1、如果同時訂閱了合約A和合約B,bar來的時機是隨機的,也就是一會來個A的bar,一會來一個B的bar,所以在handle_data中是無法按一個個bar順序處理歷史K線的

  2、所以考慮在hisover_callback中通過HisData函數一次讀取所有歷史K線數據,這時候又有個問題,那就是觸發hisover_callback時歷史K線已經接收完畢,直接繪制K先會發現起始位置在基准合約K線的末尾,還好PlotBar函數可以指定起始位置的偏移。

  3、一切就緒后發現個更大的問題,那就是AB合約即使各種設置都一致,最后得到的K線數據是不一樣的,因為臨近交割期有些合約會缺少數據,這時還好發現HisData可以返回歷史K線中bar的時間信息,這樣通過時間信息就可以把兩個合約的數據對齊了。對齊后,只處理兩個合約都有數據的情況,某一個沒有數據則直接跳過不處理。

三、實操

  極星9.5量化版的下載和基本使用就不說了,這里直接開始解析代碼,文末附完整代碼的下載方式。

  1、設置全局參數

  通過全局參數的方法我們就可以在代碼運行前方便的修改需要處理的合約和一些參數。

  

 

  2、訂閱行情

  在初始化函數里通過SetBarInterval()函數訂閱行情,其中的M表示K線周期是以“分鍾”為單位,具體的還支持“T分筆”、“D日線”。

  使用SetTriggerType()函數設置觸發方式,這里設置的是K線觸發,即每當更新一個K線數據就觸發一次handle_data()函數。可選的還有1 即時行情觸發;2 交易數據觸發;3 間隔固定時間觸發;4 指定時刻觸發。實際上這個案例里觸不觸發的不重要,因為我們只處理歷史數據。

  3)獲取並處理數據

  這里使用HisData一次獲取所有的K線數據,我們將open、close、high、low、time數據分別放到list中

 

   然后對比兩個合約K先的time數據,如果time一致就處理,不一致就跳過。這里的方法是遍歷A合約的timeList,然后找B合約中是否有對應的時間,有的話找到其索引值i2,通過i2來找到該時間對應的K線數據。

 

 

   最后根據計算出來的open、close、haigh、low繪制自定義套利合約的K線。需要注意這里需要先計算一個偏移值,與基准合約的K線對齊。其次需要注意除了bar柱還得繪制線段。

 

   最后,我還利用talib包計算了MA5、MA10、BOLL指標並繪制了相應的指標線。最終效果如下:

 

   上方是基准合約的K線,下方就是自定義套利的K線。

完整代碼:https://share.weiyun.com/5Dctvp3

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM