【零基礎】極星9.5量化基本入門教程


一、前言

  陸續寫了幾篇關於極星量化的文章,但似乎並沒有寫清楚如何入門。這里就寫一篇全備一點的入門教程,幫大家零基礎入門,順便就是記錄點心得。

  整個內容分為三個部分:

  1、下載安裝和簡介

  2、簡單的界面操作

  3、常用函數介紹

  注:極星量化是基於python的,好歹會點編程才玩的轉,不過現用現學也不是不可以。

二、 下載安裝和簡介

1、下載安裝

  官網下載鏈接:http://www.epolestar.info/download?ver=q

  需要注意的是要下載的是“極智量化”,而不是極星9.5。

  從結構上來說,目前的極智量化是極星9.5+極智量化,因為量化的運行還需要9.5客戶端的支持才行,所以安裝極智量化的同時就自動安裝了9.5客戶端。

 

  下載完成后啟動安裝包就自動安裝了,安裝路徑沒得選。

2、程序結構

  

 

  打開安裝目錄可以看到主要包含三個文件夾,其中

  epolestar:極星9.5的程序目錄

  equant:量化的目錄

  Miniconda:python的環境管理

  注1:因為使用了miniconda來管理極智量化的python運行環境,所以你不需要額外的去安裝python或管理運行環境,不過若你需要使用python的擴展包就要使用miniconda的pip來安裝,路徑在:

  “.\Miniconda\Scripts\pip.exe”

3、簡介

  1. 極星9.5量化是開源的,所有代碼都在equant目錄下的src目錄,有機會可以再寫個源碼解析。

  2. 極智量化目前是基於9.5的,但不清楚取行情和做交易是否是借用的9.5的通道,還是他自己就能獨立做了。反正以后肯定是要獨立運作的。

  3. 與市面上其他主流量化平台相比,極智量化有三個優點:

  1)結合極星9.5,這樣在使用量化時可以同步繪制K線圖,還可以自定義一些標記、指標線在K線上做分析

  2)基於python,這樣可擴展性其實很強,很多強大的量化包可以直接使用

  3)規定好了代碼結構,這個好處是不需要自己去寫回調和觸發,常用的功能函數(取行、畫K線、發委托等)都封裝好了,門檻一下又降低許多

  其實其他量化平台也都有上述三個特點,但最多只占一兩個,三個全齊的目前就只有極智量化。

三、簡單的界面操作

1、啟動

  安裝好后,雙擊“極智量化1.1.0”啟動,這時候啟動的其實是極星9.5,然后在上方的功能欄中點擊“量化>極星量化”啟動量化平台。

 

 

  啟動量化后,極星9.5的界面自動跳轉到“程序化1”頁面。

 

  這里的程序化1、程序化2、程序化3就是策略運行時的K線展示,默認就是顯示的“基准合約”,至於啥是基准合約后面再說。

  在極星9.5的程序化頁面中你可以右鍵鼠標選取當前運行的策略來做K線的切換,因為你可以同時運行多個策略嘛,那顯示哪一個策略的K線是可以選的。

 

2、極智量化窗口介紹

  整個窗口的布局還是比較常規的,右側的函數介紹和函數檢索功能很實用,里面的介紹也很詳細。策略文件中有一些示例教程,可以先按個看一遍熟悉下常用的函數。

  下方的策略管理可以右鍵運行的策略進行“啟動、停止、刪除”操作,另外還有“投資報告、圖表展示、屬性設置”,因為我沒咋用這三個功能就不詳細說了。

  需要額外說明的是“消息日志”和“報錯信息”。

  1. 運行日志>用戶日志

  這里顯示的就是LogInfo函數輸出的信息了,這個完全由用戶自己掌控。

  2. 運行日志>信號日志

  這里顯示的是python運行過程中輸出的信息,比如有一個list為空,但你做了個取值的操作list[1],這樣的error在python層面,他不會主動報錯到“錯誤信息”里提示你。所以有時候發現運行異常,但沒有主動報錯信息,可以到這里看看是不是運行過程中有些操作不合法。

  3. 運行日志>系統日志

  這里顯示的是量化平台自己的日志信息,比如現在啟動了量化它會有個日志記錄,取到了行情會有個記錄,取不到也會有記錄。比如你合約代碼寫錯了,就是在這個地方提示你“取不到合約”的數據或者“提交合約時發生異常”。所以如果代碼運行異常又沒有明顯的提示,可以到這里看看是不是哪些參數設置錯了。

  4. 錯誤信息

  這里就是代碼中有語法錯誤,運行不起來會在這里給出提示,而且代碼不會繼續執行。

  綜上,除了錯誤信息外,策略運行過程中還需要關注“信號日志”和“系統日志”,由於量化是一個運行框架(按既定節奏運行固定代碼),所以很多內部錯誤無法拋出來提示。

3、運行一個策略試試

  我們運行一個簡單的示例策略“AvrHighLow.py”,內容是輸出K線最大值和最小值的平均值。

  打開策略文件后,點擊右上角的“運行”按鈕。

 

  此時會先彈出一個“屬性”設置窗口,啥也不用管直接點“確定”即可。然后你就會發現界面自動切換到了9.5的“程序化1”頁面,但是是空白的啥也沒有,然后也沒有報錯信息。

 

 

 

 

   這時候就需要到運行日志里去看了,你會發現在系統日志中有error信息,原來是合約設置錯誤,"DCE|F|I|1909"這個合約早就過期了,現在系統里沒有這個合約編號,自然是取不到數據的。

 

   我們修改合約編號為“DCE|F|I|2001",再運行下就能看到K線了,並且用戶日志中會輸出平均值。

 

四、常用函數介紹

1、觸發函數

  量化一般包含四個過程:初始化、歷史數據處理、即時數據處理、策略結束處理。極智量化使用了四個預設的觸發函數來實現這四個過程,分別是:

  def initialize(context): 

  初始化函數,初始化數值、參數或者訂閱行情就在這里做

  def handle_data(context):

  數據處理函數,處理K線數據就是在這里做的,一般是來一個K線數據就觸發一次這個函數

  def hisover_callback(context):

  歷史數據結束時觸發的函數

  def exit_callback(context):

  策略結束時觸發的函數,手動關閉策略時會觸發

2、初始化initialize

  一般初始化中就只做行情訂閱並設置觸發方式,

  SetBarInterval  行情訂閱

  SetTriggerType  觸發方式,這里設置的是handle_data的觸發方式

  需要注意的是,點擊運行后彈出的“屬性設置”窗口,其實里面的內容與初始化差不多,如果你在初始化里做了設置,就不要在“屬性設置”中做重復的設置,系統會使兩個設置都生效,比如你在initialize設置了“K線觸發”,在“屬性設置”窗口又設置了“即時行情觸發”,系統會使兩個設置都生效,最后的結果是K線和即時行情都會觸發handle_data。同理行情訂閱也是一個道理。

3、數據處理handle_data

  極智量化的數據處理邏輯是這樣的,如果你訂閱了歷史行情,那就先觸發歷史的數據,接着觸發最新的數據。比如訂閱了2000根歷史K線,同時觸發方式為K線觸發。那么handle_data這里會先收到2000個歷史K線數據,而且這些數據是一個接一個來的,也就是handle_data會先被觸發2000次,你可以通過Open、Close等函數獲取歷史K線的數據。然后每當你訂閱的行情有新的K線生成,就會觸發一次handle_data,通過Open、Close獲取的數據就會包含了最新的K線數據。

4、回測結束處理hisover_callback

  如果你訂閱了歷史數據,那么歷史數據會先觸發handle_data,當歷史數據獲取完畢會觸發一次hisover_callback函數。所以我一般是這樣做,訂閱行情時訂閱2000個歷史K線,但觸發設置這里我改為“即時行情觸發”。那么歷史K線不會觸發handle_data,當歷史K線獲取完畢后在hisover_callback中處理歷史數據。

5、策略結束處理exit_callback

  手動停止策略時觸發,一般用於保存數據什么的。

6、其他常用函數

  Open,獲取K線上bar的開盤價,返回的是一個數組,最新價可以通過Open[-1]獲取

  Close,K線上bar的收盤價,與Open類似

  HisData,一次性獲取所有歷史數據,如果在hisover_callback中就是你訂閱的歷史數據,如果在handle_data中就是訂閱的歷史數據和已經收到的K線數據

  PlotNumeric,在K線上輸出一個數值,其實這個可以畫指標線,輸出的數值連起來就是一個指標線了

  PlotBar,繪制一個bar

  A_SendOrder,發送一個委托單

  DeleteAllOrders,批量撤單

  A_OrderStatus,查詢委托的狀態

7、如何得到合約的編碼

  比如“DCE|F|I|2001"

  DCE是交易所編碼

  F表明是期貨

  I是品種編碼

  2001是合約編碼

  可以自己拼,如果不知道怎么拼,可以在“屬性設置>合約設置>增加>商品代碼”中找到所有合約的編碼。

 

8、訂閱多個行情的問題

  前面的示例就只訂閱了一個行情,那如果訂閱了兩個會發生什么呢?

  1)首先9.5的“程序化1”頁面只會顯示基准合約,也就是你訂閱的第一個合約K線。

  2)其次像Open、Close這些函數如果不指明合約編號就默認使用“基准合約”。

  3)如果你訂閱了歷史行情,那么不是第一個合約先取完再取第二個,也不是輪流獲取,而是隨機獲取。即一會來幾個A合約的K線,一會來幾個B合約的K線,隨機的。所以對於多行情訂閱的情況最好在hisover_callback里處理歷史數據。

  4)對於實時階段,兩個合約的任何一個行情發生變化都會觸發handle_data函數。

  5)如果在代碼里設置行情就不要在屬性設置里再設置了。

五、總結

  本文總結了這段時間操作極星9.5量化的一點心得,量化平台里自帶的示例教程可以先看看,然后我寫了一個畫K線的教程和簡單止盈的策略,有注釋可以參考看下。

自定義套利的K線繪制

https://www.cnblogs.com/cation/p/12181835.html

滾動止盈策略

https://www.cnblogs.com/cation/p/12185279.html

 


免責聲明!

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



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