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

一、前言

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

原文地址:https://www.cnblogs.com/cation/p/12383299.html

时间: 2024-10-30 10:20:42

【零基础】极星量化入门四:实现条件单功能的相关文章

教你零基础如何快速入门大数据技巧

现在是大数据时代,很多人都想要学习大数据,因为不管是就业前景还是薪资都非常的不错,不少人纷纷从其他行业转型到大数据行业,那么零基础的人也想要学习大数据怎么办呢?下面一起探讨下零基础如何快速入门大数据技巧吧. 很多人都需要学习大数据是需要有一定的基础的,编程语言就是必备的条件之一,编程语言目前热门的有:Java.Python.PHP.C/C++等等,无论是学习哪一门编程语言,总之要精细掌握一门语言是非常必须的,我们先拿应用广泛的Java说起哦. .在入门学习大数据的过程当中有遇见学习,行业,缺乏系

MVC+Ext.net零基础学习记录(四)

在上一篇文章[MVC+Ext.net零基础学习记录(三)]中提到了利用MVC的Area可以做到项目分离,但是实际操作起来还是有很多问题的.比如,对于物理资源的访问,会报:没有相关资源 开始的时候,我在博客园也搜索到了很多解决方案,其中http://www.cnblogs.com/dingji/archive/2012/06/10/2544255.html这篇文章的解决方法是我感觉最有效的解决方法 但是我思考了很久,还是决定不采用MvcContrib进行分离,因为这样的话,一个问题是,DLL文件到

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

一.前言 前一篇已经讲了boll的回测,那这里为啥又要说实盘呢?因为实盘运行与回测还是有些区别的.这里说的实盘是包括实盘模拟和实盘交易的,二者都是利用最新的行情做交易,这篇就讲一下最近关于实盘的心得. 二.代码修改 整体上实盘的代码与回测是差不多的,但是有几个要点注意和修改. 1.成交价格 在回测时我们使用的是K线收盘价+滑点,滑点只是模拟而已,回测的成交价还是我们制定的.但是在实盘时价格能否成交我们是不确定的,事实上我也遇到过对盘价+2个滑点结果没成交,一晚上过去这个持仓亏损2000多.所以实

任务十六:零基础JavaScript编码(四)

面向人群: 零基础或初学者 难度: 中等 重要说明 百度前端技术学院的课程任务是由百度前端工程师专为对前端不同掌握程度的同学设计.我们尽力保证课程内容的质量以及学习难度的合理性,但即使如此,真正决定课程效果的,还是你的每一次思考和实践. 课程多数题目的解决方案都不是唯一的,这和我们在实际工作中的情况也是一致的.因此,我们的要求不仅仅是实现设计稿的效果,更是要多去思考不同的解决方案,评估不同方案的优劣,然后使用在该场景下最优雅的方式去实现.那些最终没有被我们采纳的方案,同样也可以帮助我们学到很多知

开始系列教程:Java零基础七天入门

本教程雄心勃勃,保证七天之内从零基础开始,学会java,达到什么程度呢? 很简单:达到之后可以自学android和J2EE开发的程度. 不一样的思路,敬请期待...

大数据零基础学习hadoop入门教程

1.Hadoop生态概况 Hadoop是一个由Apache基金会所开发的分布式系统集成架构,用户可以在不了解分布式底层细节情况下,开发分布式程序,充分利用集群的威力来进行高速运算与存储,具有可靠.高效.可伸缩的特点 Hadoop的核心是YARN,HDFS,Mapreduce,常用模块架构如下 ? 2.HDFS 源自谷歌的GFS论文,发表于2013年10月,HDFS是GFS的克隆版,HDFS是Hadoop体系中数据存储管理的基础,它是一个高度容错的系统,能检测和应对硬件故障 HDFS简化了文件一致

【零基础】快速入门mini爬虫框架HtmlUnit

迅速的HtmlUnit htmlunit是一款开源的web页面分析工具,理论上来说htmlunit应用于网页的自动化测试,但是相对来说更多人使用它来进行小型爬虫的快速开发.使用htmlunit进行爬虫开发不仅是其运行速度快,更重要的是此框架上手更为容易(相对于POST.selenium). 基本环境 1.java,首先你得安装好javaSDK(版本随意).编译器(eclipse) 2.HtmlUnit,项目以jar文件的形式发布,可以上官网下载最新版本(htmlunit-2.35.0-bin.z

php编程零基础如何快速入门。门头沟编程

昨天遇到一个人,说知道thinktphp,不过几年前的事了. 我先跟他讲了下,xyhcms后台功能,各个版块,以及数据库都介绍了一下. 跟他说了一个功能现场实现,说了实现方法. 然后上机操作,发现他表单提交.方法传值.页面传值.传值获取没有做,也不知道问. 甚至input标签都不知道. 这样的基础肯定面试很难通过. 如果想快速入门要么看视频.要么报个培训班.要么找个人带.视频网站建议:php.cn 原文地址:https://www.cnblogs.com/phpfangzhan/p/944097

辛巴学院-Unity-剑英陪你零基础学c#系列(四)函数和封装

这还是草稿 ? 辛巴学院:正大光明的不务正业. 国庆长假结束了,我的心情是这样的: 你总是起不早,起不早独自一个人沉睡到天亮你无怨无悔的梦着那副本我知道你根本就不想上班你总是起不早,起不早放假总是短暂,上班太难请个病假,再睡上一天 今天我们聊c#的函数和封装 这个话题其实你有无数的资料,每个写过代码,没写过代码的人,都知道这些玩意.我也没有太多新奇的角度,先记住这一点 这不是数学,这不是数学,这不是数学. 我接触最早的语言是basic,那个时候函数还没有那么深入人心,不是visual basic