rqalpha-自动量化交易系统 rqalpha-自动量化交易系统(一)

转载

来源:永远的麦田

https://www.cnblogs.com/luhouxiang/p/6539725.html

rqalpha-自动量化交易系统(一)

 

因为最近做的东西牵涉到自动计算这一块,在网上搜了一下,基本上python做自动量化交易成了一个趋势,于是花了两天学习一下。

目标很简单,学习,使用。

rqalpha看起来是比较成熟的,这儿看重的是自带日线数据(省大事了),并且文档齐全,代码一直更新到最近几天,说明在可预期的一年内应该会越发成熟。另外,开源,走的是apache license2.0协议,不禁止第三方修改,使用,商用。

先说代码:https://github.com/ricequant/rqalpha, RQAlpha是一个中国市场领先的股票和期货的回测引擎,具备日级别的历史数据回测,并且具有很强的可拓展性。由Ricequant米筐科技开源,虽然涉嫌给他们做广告,不过确实不错。

文档很齐全,虽然安装的过程中还是挺累的。

安装主要靠两样:

安装指南: http://rqalpha.readthedocs.io/zh_CN/stable/intro/install.html,

详细环境搭建: http://rqalpha.readthedocs.io/zh_CN/stable/intro/detail_install.html

光靠安装指南是肯定搭不了的,还要再参考详细环境搭建。

最后,再说一下我遇到的坑。

一开始看上面似乎对linux支持力度挺大,貌似用命令全搞定,特别是很多的东西一看就是在linux中的地址,于是就用centos7一路搭起来了,

先安装gcc,g++什么的必备开发工具不待说。

首先一坑:.condarc这文件,一定要是截图如下方能起作用:

image

否则那个清华大学的地址是加不进来的

然后是 ImportError: No module named 'requests'

需要:pip install requests

一切好了,按照要求运行

rqalpha run

这下报的错误更多,最后不得不放弃linux,到windows上来试验

windows上错误前面是一样的,不过在装TA-Lib时遇到了新问题,由于需要编译源码,得下visual c++ 14.0这样的命令行编译器,周六下了一夜后宣告失败,第二天直接下vs2015专业版安装,然后在

http://www.cnblogs.com/Hanuman/p/5943608.html这个地方终于搞定了编译问题

最后数据也下好了,rqalpha version也得到了版本号

结果再次运行rqalpha run还是报一堆错误。再去米筐科技官网学习,突然灵光一开,从里面抄了一个简单策略,

# -*- coding: utf-8 -*-
# 在这个方法中编写任何的初始化逻辑。context对象将会在你的算法策略的任何方法之间做传递。
def init(context):
    logger.info("init")
    context.s1 = "000001.XSHE"
    update_universe(context.s1)
    # 是否已发送了order
    context.fired = False
    context.cnt = 1
 
  
 
  
def before_trading(context, bar_dict):
    logger.info("Before Trading", context.cnt)
    context.cnt += 1
 
  
 
  
# 你选择的证券的数据更新将会触发此段逻辑,例如日或分钟历史数据切片或者是实时数据切片更新
def handle_bar(context, bar_dict):
    context.cnt += 1
    logger.info("handle_bar", context.cnt)
    # 开始编写你的主要的算法逻辑
 
  
    # bar_dict[order_book_id] 可以拿到某个证券的bar信息
    # context.portfolio 可以拿到现在的投资组合状态信息
 
  
    # 使用order_shares(id_or_ins, amount)方法进行落单
 
  
    # TODO: 开始编写你的算法吧!
    if not context.fired:
        # order_percent并且传入1代表买入该股票并且使其占有投资组合的100%
        order_percent(context.s1, 1)
        context.fired = True

命名为:buy_and_hold.py放置于目录C:\Users\Administrator\.rqalpha\examples下,注意的是文件应存成utf-8格式

然后再用命令:

(python35) C:\Users\Administrator>rqalpha run -f C:/Users/Administrator/.rqalpha/examples/buy_and_hold.py -d C:/Users/Administrator/.rqalpha/bundle/ -s 2016-06-01 -e 2016-12-01 --stock-starting-cash 100000 --benchmark 000300.XSHG

前面(python35)表示我在conda环境下的python35下(python35是我起的环境名,代表python为3.5.2)

到这一步,终于搞定,没报错了,出了一堆的结果,
然后再加上一个参数—plot,出了效果图:

image

虽然弄出来了,不过只是拿了现成的东西来使用,下一步是看如何将源码使用起来,通过修改源代码达到自己的意图。

因为最近做的东西牵涉到自动计算这一块,在网上搜了一下,基本上python做自动量化交易成了一个趋势,于是花了两天学习一下。

目标很简单,学习,使用。

rqalpha看起来是比较成熟的,这儿看重的是自带日线数据(省大事了),并且文档齐全,代码一直更新到最近几天,说明在可预期的一年内应该会越发成熟。另外,开源,走的是apache license2.0协议,不禁止第三方修改,使用,商用。

先说代码:https://github.com/ricequant/rqalpha, RQAlpha是一个中国市场领先的股票和期货的回测引擎,具备日级别的历史数据回测,并且具有很强的可拓展性。由Ricequant米筐科技开源,虽然涉嫌给他们做广告,不过确实不错。

文档很齐全,虽然安装的过程中还是挺累的。

安装主要靠两样:

安装指南: http://rqalpha.readthedocs.io/zh_CN/stable/intro/install.html,

详细环境搭建: http://rqalpha.readthedocs.io/zh_CN/stable/intro/detail_install.html

光靠安装指南是肯定搭不了的,还要再参考详细环境搭建。

最后,再说一下我遇到的坑。

一开始看上面似乎对linux支持力度挺大,貌似用命令全搞定,特别是很多的东西一看就是在linux中的地址,于是就用centos7一路搭起来了,

先安装gcc,g++什么的必备开发工具不待说。

首先一坑:.condarc这文件,一定要是截图如下方能起作用:

image

否则那个清华大学的地址是加不进来的

然后是 ImportError: No module named 'requests'

需要:pip install requests

一切好了,按照要求运行

rqalpha run

这下报的错误更多,最后不得不放弃linux,到windows上来试验

windows上错误前面是一样的,不过在装TA-Lib时遇到了新问题,由于需要编译源码,得下visual c++ 14.0这样的命令行编译器,周六下了一夜后宣告失败,第二天直接下vs2015专业版安装,然后在

http://www.cnblogs.com/Hanuman/p/5943608.html这个地方终于搞定了编译问题

最后数据也下好了,rqalpha version也得到了版本号

结果再次运行rqalpha run还是报一堆错误。再去米筐科技官网学习,突然灵光一开,从里面抄了一个简单策略,

# -*- coding: utf-8 -*-
# 在这个方法中编写任何的初始化逻辑。context对象将会在你的算法策略的任何方法之间做传递。
def init(context):
    logger.info("init")
    context.s1 = "000001.XSHE"
    update_universe(context.s1)
    # 是否已发送了order
    context.fired = False
    context.cnt = 1
 
 
def before_trading(context, bar_dict):
    logger.info("Before Trading", context.cnt)
    context.cnt += 1
 
 
# 你选择的证券的数据更新将会触发此段逻辑,例如日或分钟历史数据切片或者是实时数据切片更新
def handle_bar(context, bar_dict):
    context.cnt += 1
    logger.info("handle_bar", context.cnt)
    # 开始编写你的主要的算法逻辑
 
    # bar_dict[order_book_id] 可以拿到某个证券的bar信息
    # context.portfolio 可以拿到现在的投资组合状态信息
 
    # 使用order_shares(id_or_ins, amount)方法进行落单
 
    # TODO: 开始编写你的算法吧!
    if not context.fired:
        # order_percent并且传入1代表买入该股票并且使其占有投资组合的100%
        order_percent(context.s1, 1)
        context.fired = True

命名为:buy_and_hold.py放置于目录C:\Users\Administrator\.rqalpha\examples下,注意的是文件应存成utf-8格式

然后再用命令:

(python35) C:\Users\Administrator>rqalpha run -f C:/Users/Administrator/.rqalpha/examples/buy_and_hold.py -d C:/Users/Administrator/.rqalpha/bundle/ -s 2016-06-01 -e 2016-12-01 --stock-starting-cash 100000 --benchmark 000300.XSHG

前面(python35)表示我在conda环境下的python35下(python35是我起的环境名,代表python为3.5.2)

到这一步,终于搞定,没报错了,出了一堆的结果,
然后再加上一个参数—plot,出了效果图:

image

虽然弄出来了,不过只是拿了现成的东西来使用,下一步是看如何将源码使用起来,通过修改源代码达到自己的意图。

猜你喜欢

转载自www.cnblogs.com/bluepoet/p/12098762.html
今日推荐