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这文件,一定要是截图如下方能起作用:
否则那个清华大学的地址是加不进来的
然后是 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,出了效果图:
虽然弄出来了,不过只是拿了现成的东西来使用,下一步是看如何将源码使用起来,通过修改源代码达到自己的意图。
rqalpha-自动量化交易系统(一)的更多相关文章
- 量化交易(Quantitative Trading)
什么是量化交易 量化交易是指借助现代统计学和数学的方法,利用计算机技术来进行交易的证券投资方式.量化交易从庞大的历史数据中海选能带来超额收益的多种“大概率”事件以制定策略,用数量模型验证及固化这些规律 ...
- 转自 BotVS 量化平台社区 --- 如何从绩效报告中分辨出“好模型 or 坏模型”
## NO:01 在投资行业一直有一个说法,靠交易盈利是所有赚钱方式中最难的一种,以至于有人戏谑称交易为投资领域的搬砖工作. 为了提升交易效率.挖掘潜在投资机会,量化交易伴随着信息技术的发展大行其道, ...
- 程序猿的量化交易之路(24)--Cointrader之RemoteEvent远程事件实体(11)
转载需注明出处:http://blog.csdn.net/minimicall,http://cloudtrader.top/ 在量化交易系统中.有些事件是远端传来的,比方股票的价格数据等.所以,在这 ...
- 量化交易中VWAP/TWAP算法的基本原理和简单源码实现(C++和python)(转)
量化交易中VWAP/TWAP算法的基本原理和简单源码实现(C++和python) 原文地址:http://blog.csdn.net/u012234115/article/details/728300 ...
- python之协程与IO操作
协程 协程,又称微线程,纤程.英文名Coroutine. 协程的概念很早就提出来了,但直到最近几年才在某些语言(如Lua)中得到广泛应用. 子程序,或者称为函数,在所有语言中都是层级调用,比如A调用B ...
- 【学习笔记】python3核心技术与实践--开篇词
python的应用和流行程度: Python 可以运用在数据处理.Web 开发.人工智能等多个领域,它的语言简洁.开发效率高.可移植性强,并且可以和其他编程语言(比如 C++)轻松无缝衔接.现如今,不 ...
- Python数据分析学习(二)
转摘:https://segmentfault.com/a/1190000015613967 本篇将继续上一篇数据分析之后进行数据挖掘建模预测,这两部分构成了一个简单的完整项目.结合两篇文章通过数据分 ...
- vnpy源码阅读学习(1):准备工作
vnpy源码阅读学习 目标 通过阅读vnpy,学习量化交易系统的一些设计思路和理念. 通过阅读vnpy学习python项目开发的一些技巧和范式 通过vnpy的设计,可以用python复现一个小型简单的 ...
- IT知识圈视频学习资源整理贴
原文地址 热门课程 1.2019 尚学堂大数据全套视频教程(视频.源码.课件) 2.IDEA破解补丁(支持最新2019.2) 3.2019年 MySQL DBA 6期视频教程 4.微信小程序实战开发特 ...
随机推荐
- 破解Linux系统root用户密码
linux系统的启动过程 在介绍破解Linux系统root密码之前先了解一下linux系统的启动过程 开机自检(POST),初始化部分硬件 搜素可用于引导的启动设备(如磁盘的MBR) 读取并将控制权 ...
- Python模块学习——tempfile
主要有以下几个函数: tempfile.TemporaryFile 如何你的应用程序需要一个临时文件来存储数据,但不需要同其他程序共享,那么用TemporaryFile函数创建临时文件是最好的选择.其 ...
- java8的新特性以及用法简介
1. 介绍 2 接口的默认方法 2 lambda表达式 2.1 函数式接口 2.2 方法与构造函数引用 2.3 访问局部变量 2.4 访问对象字段与静态变量 3. 内建函数式接口 3.1 Predic ...
- 【内核】几个重要的linux内核文件
Preface 当用户编译一个linux内核代码后,会产生几个文件:vmlinz.initrd.img, 以及System.map,如果配置过grub引导管理器程序,会在/boot目录下看到这几个文件 ...
- 关于electron的跨域问题,有本地的图片的地址,访问不了本地的图片
项目中有上传图片功能,自定义input type=file 改变透明度和超出部分隐藏,把按钮和 点击的图标放在上传文件的按钮上面,然后又碰到到获取input里面的图片的本地的路径, 在electron ...
- FFmpeg Basics学习笔记(2)
帧率 fps的概念 帧率,单位FPS(frame per second), 用于衡量视频每秒的处理帧数,对于编码器而言说明编码器在1s的编码的速度,通常可以使用一帧的编码时间倒数简单计算:对于解码器而 ...
- import-module的注意事项与NDK_MODULE_PATH的配置
转:http://blog.sina.com.cn/s/blog_4057ab62010197z8.html 具体的语句多参考其他正确的Android.mk import-module的功能 导入 ...
- zoj 月赛B题(快速判断一个大数是否为素数)
给出一个64位的大数,如何快速判断其是否为素数 #include<algorithm> #include<cstdio> #include<cstring> #in ...
- 插入中国所有省和市的SQL语句--以后用
需要做根据省市过滤查询的,不得已写入数据库,这个留着方便以后用. 首先创建两张表 drop database if exists BSM; create database BSM; use BSM; ...
- 正益无线首页jQuery焦点图
分享一款正益无线首页jQuery焦点图,带索引按钮,自动轮播切换特效焦点图代码. 在线预览 源码下载 实现的代码. html代码: <div id="slideBox" ...