本期推荐的是一个基于C++Python的开源量化交易研究框架——hikyuu。
Hikyuu是一个基于C++/Python的高性能开源量化交易研究框架,用于策略分析及回测(目前用于国内证券市场)。其核心思想基于当前成熟的系统化交易方法,将整个系统化交易抽象为由市场环境判断策略、系统有效条件、信号指示器、止损/止盈策略、资金管理策略、盈利目标策略、移滑价差算法七大组件,你可以分别构建这些组件的策略资产库,在实际研究中对它们自由组合来观察系统的有效性、稳定性以及单一种类策略的效果。
Hikyuu的优势
1. 组合灵活,分类构建策略资产库:Hikyuu对系统化交易方法进行了良好的抽象,包含了九大策略组件:市场环境判断策略、系统有效条件、信号指示器、止损/止盈策略、资金管理策略、盈利目标策略、移滑价差算法、交易对象选择策略、资金分配策略。可以在此基础上构建自己的策略库,并进行灵活的组合和测试。在进行策略探索时,可以更加专注于某一方面的策略性能与影响。其主要功能模块如下:
2. 性能保障,打造自己的专属应用:目前项目包含了3个主要组成部分:基于C++的核心库、对C++进行包装的Python库(hikyuu)、基于Python的交互式工具。
- C++核心库,提供了整体的策略框架,在保证性能的同时,已经考虑了对多线程和多核处理的支持,在未来追求更高运算速度提供便利。C++核心库,可以单独剥离使用,自行构建自己的客户端工具。
- Python库(hikyuu),提供了对C++库的包装,同时集成了talib库(如TA_SMA,对应talib.SMA),可以与numpy、pandas数据结构进行互相转换,为使用其他成熟的python数据分析工具提供了便利。
- hikyuu.interactive 交互式探索工具,提供了K线、指标、系统信号等的基本绘图功能,用于对量化策略的探索和回测。
3. 多范式支持,探索更便捷、自由:同时支持面向对象和命令行编程范式。其中,命令行在进行策略探索时,更加简单、便捷、自由。
4. 数据存储方式可扩展:目前支持本地HDF5格式、MySQL存储。默认使用HDF5,数据文件体积小、速度更快、备份更便利。
示例
#创建模拟交易账户进行回测,初始资金30万
my_tm = crtTM(init_cash = 300000)
#创建信号指示器(以5日EMA为快线,5日EMA自身的10日EMA最为慢线,快线向上穿越慢线时买入,反之卖出)
my_sg = SG_Flex(OP(EMA(n=5)), slow_n=10)
#固定每次买入1000股
my_mm = MM_FixedCount(1000)
#创建交易系统并运行
sys = SYS_Simple(tm = my_tm, sg = my_sg, mm = my_mm)
sys.run(sm['sz000001'], Query(-150))
完整可参考:
https://nbviewer.org/github/fasiondog/hikyuu/blob/master/hikyuu/examples/notebook/000-Index.ipynb?flush_cache=True
安装
- 安装前准备
支持的操作系统:64位 Windows7及以上版本、Linux请使用源码自行编译安装。
Python环境:>= Python3.5
注意:推荐安装集成了常用数据科学软件包的Python发布版本: Anaconda( https://www.anaconda.com/ ) 。国内用户建议从 清华镜像网站 anaconda | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror 下载。
- pip安装
安装:
pip install hikyuu
版本升级:
pip install hikyuu -U
注意:
1. 由于依赖的 talib 包,无法在 Windows 下通过 pip 安装,请从
https://www.lfd.uci.edu/~gohlke/pythonlibs/#ta-lib/ 上下载相应的 wheel 包,手工安装。
2. Linux 需要安装依赖的库:libhdf5、libmysqlclient、libsqlite3
新手入门
- 开始请先下载数据
注意:数据下载工具需要使用到 unrar 命令,Linux 下请自行安装 unrar。
pip 安装 Hikyuu 后,可在命令行终端中执行 hikyuutdx 命令,启动数据下载工具,并按界面提示下载数据:
注意:如在命令行终端中无法执行 hikyuutdx 命令,请到 python 安装目录下的 Scripts 子目录中选择该执行文件(HikyuuTDX.exe)。
如不希望使用 GUI 图形界面下载,可在命令行终端中执行 importdata 命令,如下图所示:
注意:由于 importdata 命令使用的是 HikyuuTDX 生成的配置文件,所以在第一次执行 importdata 之前需要至少运行过一次 HikyuuTDX。
- 通过代码示例学习
您可以从下面的网址访问最新的代码示例,这些示例将帮助您逐步了解和掌握 Hikyuu 的使用以及系统交易的相关理念。在日常使用 Hikyuu 的过程中,您可以在本帮助内查询相应的内建指标、策略、函数的详细说明,获得更多的信息。
https://nbviewer.jupyter.org/github/fasiondog/hikyuu/blob/master/hikyuu/examples/notebook/000-Index.ipynb?flush_cache=True
上述示例代码均使用 Jupyter notebook 编辑和运行,您可以从每个示例网址的右上角下载示例代码,并在 Jupyter notebook 打开直接运行。
或者从安装目录下的 “examples/notebook” 找到全部示例。
如果不习惯使用 Jupyter notebook,也可以使用自己喜欢的 Python 客户端工具(如 shell、Spyder、PyCharm、idle等),按照示例代码进行学习运行。
- 从 Python Shell 中运行
您可以使用任意的 Python 客户端工具运行 Hikyuu。如下图所示,在 cmd 中 Python shell 环境下运行 hikyuu。从上述示例中拷贝代码时,应注意将开头带有“%”的代码去除,如 “%time”, 这些是 ipython 的魔力代码,只在 ipython 环境中生效,普通的 shell 中没有。
运行 Hikyuu 交互式工具,需要首先将其引入,代码如下:
#在交互式环境下使用hikyuu,首先需引入hikyuu交互工具
from hikyuu.interactive.interactive import *
注意:Hikyuu本身是普通的Python包,而
hikyuu.interactive.interactive 为 Hikyuu 包中包含的交互式工具。如希望基于 hikyuu 包开发自己的其他程序而不是作为交互式程序使用,可以参考
hikyuu/interactive/interactive.py 实现 hikyuu 的正常初始化。
- 使用 Jupyter notebook 编辑和运行
启动 Jupyter notebook,只需要在 cmd 中,进入自己希望的工作目录后,键入 Jupyter notebook 命令即可,如下图所示:
上述命令,将启动本地的web服务,此时,您可以打开浏览器(建议使用Chrome或Firefox浏览器),输入如下地址:
http://127.0.0.1:8888/tree 即可根据其界面中的菜单命令像普通的代码编辑器一样编辑和运行代码。
更多内容大家可自行前往阅读。