• 【零基础】极星量化入门四:实现条件单功能


    一、前言

      最近有个童鞋反应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

  • 相关阅读:
    wed
    郁闷的星期三
    Mon
    烟斗信息
    10.3
    德国装甲兵之歌
    危急!开发进入瓶颈阶段
    血糯米粥
    上海:烟斗
    如果你的博客被转载?
  • 原文地址:https://www.cnblogs.com/cation/p/12383299.html
Copyright © 2020-2023  润新知