最近将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进行画图
提取回测数据
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 的压缩力度很高