【零基礎】極星量化入門四:實現條件單功能


一、前言

  最近有個童鞋反應A_SendOrder()自帶的條件單功能不是很好用,主要是觸發后的報單價格不靈活,於是我就想仿照9.3實現一個條件單的功能。主要的功能如下:

  1、設置一個觸發條件和委托價格

  2、達到觸發條件后按委托價格提交委托,返回訂單編碼

  整個邏輯是很簡單的,主要解決的問題是觸發后的委托價問題。

二、代碼解析

1、簡述

  為了便於使用,我定義了一個類,除了初始化,一共只有兩個函數。

  class ConditionOrder(object):

    #初始化

    def __init__(self,contractID='',userNo='',orderType=0,qty=1,triggerPriceStr='',orderPriceStr=''):

    #發送訂單,返回訂單編碼

    def sendOrder(self):

    #行情觸發時執行此函數

    def handle(self):

 

  使用方式很簡單:

  參數釋義:

  contractID 合約編號
  orderType 買賣類型,0 買、1 賣、2 平空、3 平多
  qty 買賣的數量,默認1
  triggerPriceStr 觸發條件
    last >= 100 最新價大於等於100(將>處理為>=)
    bid <= 100 買一價小於等於100 (將<處理為<=)
    ask = 100 賣一價等於100
  orderPriceStr 委托價格
    limit=100 限價100
    market 市價(漲跌停價)以漲跌停價報單
    opposite+1 對盤價+1*最小變動價
    working-2 掛單價-2*最小變動價
    last+3 最新價+3*最小變動價

2、__init__初始化函數

  初始化僅將設置的參數記錄下來,不做其他工作

3、handle函數

  handle函數根據觸發條件對價格做比較,若達到觸發價就執行sendOrder函數。

  由於極星量化的特性,每次行情觸發會執行handle_data接口,所以將條件單的handle函數放到handle_data中,每次有行情變化就執行一次價格比較。

 

4、sendOrder函數

   在handle函數中,若發現價格達到觸發條件就會調用sendOrder函數,sendOrder對委托價的設置進行解析,並使用A_SendOrder函數發送委托。最后將委托的訂單號返回。

三、回顧

  整個思路還是挺簡單的,但由於極星量化的接口特性,只能在handle_data中執行價格查詢,這就有一點怪怪的感覺。一般的習慣是繼承一個類,然后直接在新類中實現功能,但現在還說不上那個方法更好,需要更進一步的體驗。

  完整代碼:

https://share.weiyun.com/5I6sily

 


免責聲明!

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



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