最近将RQAlpha本地化使用,按照 RQAlpha 文档 中的介绍一步步安装,遇到了一些坑,回测过程及回测详细结果的获取也费了一些时间,所以把安装过程进行了一个总结,包括安装过程中遇到的问题、文件存储的位置、及bcolz文件格式数据的导出。

1 构建conda 虚拟环境

step1   安装Anaconda2 (根据需要2或3都可以)

step2   创建 conda 虚拟环境( :code:`env_name` 是您希望创建的虚拟环境名)

$ conda create --name env_name python=2.7

step3   使用 conda 虚拟环境   $ source activate env_name

# 退出 conda 虚拟环境

$ source deactivate env_name

# 删除 conda 虚拟环境

$ conda-env remove --name env_name

2 安装 TA-Lib

执行$ pip install TA-Lib (直接执行一般会有报错,错误信息有点忘了)

如果报错需要先执行 $ brew install ta-lib

如果显示brew is not command的话需要先安装homebrew,homebrew用于安装依赖

安装homebrew执行下面的语句

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

3 安装前

1、更新pip 和 setuptools

$ pip install -U pip setuptools cython -i https://pypi.tuna.tsinghua.edu.cn/simple

2、安装 bcolz(二进制数据库文件,对数据进行了压缩,本地化RQAlpha工程的数据源,最后有介绍如何将bcolz文件导出

$ pip install bcolz -i https://pypi.tuna.tsinghua.edu.cn/simple

3、第二步出问题可能是没有安装X-code(轻量级的C/C++ clang编译器)

$ xcode-select --install

4 安装

虚拟环境下执行,所有有关安装都在虚拟环境下执行

$ pip install -i https://pypi.tuna.tsinghua.edu.cn/simple rqalpha

$ rqalpha version     #查看是否安装成功

5 获取回测数据

$ rqalpha update_bundle

bundle 默认存放在 ~/.rqalpha 下,pwd命令显示当前路径为/Users/bytedance

bundle存放路径 /Users/bytedance/.rqalpha/bundle      Shift+Command+. 显示隐藏文件

保存为bcolz格式文件   直接批量获取从2005年到更新前一天的股票、期货、指数、财务等数据

6 Matplotlib 相关问题

运行回测时,matplotlib 报错 :  RuntimeError: Python is not installed as a framework

解决方案:创建文件 ~/.matplotlib/matplotlibrc,并加入代码 backend: TkAgg

pip install matplotlib

touch ~/.matplotlib/matplotlibrc (创建文件)

vi ~/.matplotlib/matplotlibrc (添加配置)    i 插入    esc后:wq保存后退出

7 运行回测

1、生成样例策略

$ rqalpha examples -d ./

会在指定目录生成一个examples文件夹,其中包含几个样例策略

2、运行回测 回测结果保存为result.pkl

$ cd examples     
$ rqalpha run -f rsi.py -s 2014-01-01 -e 2016-01-01 -o result.pkl --plot --progress --account stock 100000 --benchmark 000300.XSHG

8 回测结果分析

回测结果 --plot --progress进行画图

MacOS下RQAlpha本地安装总结

提取回测数据

python环境下运行:

import pandas as pd

result_dict = pd.read_pickle('result.pkl') #读取回测结果

result_dict.keys()

或者

import pickle

result_dict = pickle.load(open("result.pkl", "rb"))

result_dict.keys()

##['trades', 'stock_positions', 'summary', 'benchmark_portfolio', 'portfolio', 'stock_account']

result_dict['trades']    ##交易明细

9 从bcolz文件导出数据

from __future__ import print_function   

import numpy as np  

import bcolz  

data = bcolz.open(rootdir="bundle/stocks.bcolz", mode="a" )        #在.rqalpha文件夹下运行

save = data.todataframe()

save.to_csv('stock.csv')

对导出的数据进行查看:

save.shape    #(6969945, 9)

save.columns    #共9列  具体信息如下

output: Index([u'date', u'open', u'close', u'high', u'low', u'volume', u'total_turnover', u'limit_up', u'limit_down'], dtype='object')

a = set(save["date"].values)   #查看有哪些日期的数据

a.min()   20050104

a.max()   20180410

len(a) 3223 天

save.shape[0]/len(a)    2162 支股票

du -h -d=1   #可以计算文件夹内文件的内存大小 总共是229M   bcolz 的压缩力度很高


相关文章:

  • 2022-12-23
  • 2021-11-18
  • 2022-01-23
  • 2021-11-29
  • 2022-03-06
  • 2022-12-23
  • 2022-12-23
  • 2022-01-05
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-06-06
  • 2021-12-04
  • 2021-08-03
  • 2021-12-28
  • 2021-09-03
相关资源
相似解决方案