/cn_zipline

python tdx zipline bundles, 支持A股的zipline

Primary LanguagePython

cn_zipline


PyPI version Py version Build Status Build status

基于tdx的zipline bundle.

zipline是美国Quantopian 公司开源的量化交易回测引擎,它使用Python语言开发, 部分代码使用cython融合了部分c语言代码。Quantopian 在它的网站上的回测系统就是基于zipline的, 经过生产环境的长期使用,已经比完善,并且在持续的改进中。

zipline的基本使用方法在https://www.quantopian.com/tutorials/getting-started ,对于zipline的深度解析,可以看大神rainx写的文档,本项目中的大部分依赖项目也都是rainx开发的项目 `

数据源

cn_zipline的历史k线以及除息除权数据来自通达信,数据接口来自项目github 项目tdx https://github.com/JaysonAlbert/tdx

环境

python2.7或者python3.5,尽量使用较新版本的Anaconda。旧版本的在安装依赖时容易报错。推荐使用python3.5,数据获取的接口依赖于python3.5的 一些库,用于提升性能。

注意:Anaconda官网提供的链接,3.x版本默认下载python3.6。

如何用anaconda安装其它版本的python:

新建环境:

conda create --name=py35 python=3.5

激活环境:

activate py35

取消环境:

deactivate py35

分支

master:

包含了基本的回测功能,下单撮合使用下一bar的close价(ricequant可选当前bar的close和下一bar的open)

open_order:

下单撮合使用下一bar的open价

zipline-live:

支持实盘功能,正在开发中,详情见实盘issue

安装

pip install cn_zipline

注意:在windows上,如果zipline安装失败,先用conda install -c Quantopian zipline安装zipline,然后再安装cn_zipline

cn_zipline/extension.py拷贝至zipline的数据目录,默认为~/.zipline

使用

cn_zipline与zipline大同小异,具体使用方法请参考zipline官方文档。不同之处在于,ingest数据时请使用 cn_zipline命令,管理以及清理bundls数据时使用zipline。运行策略的形式也不同,为便于调试代码,采用直接运行策略脚本, 而不是通过zipline run命令来运行。下面是使用示例:

一、ingest数据:

cn_zipline ingest -b tdx -a assets.csv --minute False

-a assets.csv指定需要ingest的代码列表,缺省ingest 4000+只所有股票,耗时长达3、4小时,通过-a tests/ETF.csv 只ingest ETF基金数据,一方面可以节省时间达到快速测试的目的。 另一方面可以通过这种方法ingest非股票数据,例如etf基金。

--minute False 是否ingest分钟数据

二、编写策略cn_zipline/examples/buyapply.py

from zipline.api import order, record, symbol


def initialize(context):
    pass


def handle_data(context, data):
    order(symbol('000001'), 10)
    record(AAPL=data.current(symbol('000001'), 'price'))


if __name__ == '__main__':
    from cn_zipline.utils.run_algo import run_algorithm
    from zipline.utils.cli import Date
    from cn_stock_holidays.zipline.default_calendar import shsz_calendar

    start = Date(tz='utc', as_timestamp=True).parser('2017-01-01')

    end = Date(tz='utc', as_timestamp=True).parser('2017-10-20')
    run_algorithm(start, end, initialize, 10e6, handle_data=handle_data, bundle='tdx',trading_calendar=shsz_calendar,output='out.pickle')

     

三、运行策略文件 cn_zipline/examples/buyapply.py

四、运行分析脚本cn_zipline/examples/analyse.py

问题

如有任何问题,欢迎大家提交issue ,反馈bug,以及提出改进建议。

其它

对量化感兴趣的朋友,同时便于更方便的交流请加QQ群434588628