【零基础】极星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

 

posted @ 2020-01-14 12:33  布兰姥爷  阅读(7502)  评论(0编辑  收藏  举报