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

Posted cation

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了零基础极星量化入门四:实现条件单功能相关的知识,希望对你有一定的参考价值。

一、前言

  最近有个童鞋反应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中执行价格查询,这就有一点怪怪的感觉。一般的习惯是继承一个类,然后直接在新类中实现功能,但现在还说不上那个方法更好,需要更进一步的体验。

  完整代码可以关注公众号“零基础爱学习”,回复“LH4”获取。

技术图片

 

以上是关于零基础极星量化入门四:实现条件单功能的主要内容,如果未能解决你的问题,请参考以下文章

零基础极星9.5量化入门零:简单的开始

零基础极星9.5量化基本入门教程

零基础极星9.5量化入门二:滚动止盈策略

零基础极星量化入门八:简单的boll实盘

零基础极星量化小技巧:启动时自动轮换合约

零基础极星9.3下单详解