3 Star 5 Fork 7

QiongQi/BackTrader初尝试

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

基本介绍

一直都知道Python可以用于量化投资分析,很想学习一下这方面的知识,趁着最近参加的一个项目意外搁浅,花点时间入门下。

查了下现在市场上的基于Python的量化回测框架,开源的有zipline、vnpy、Pyalgotrade和backtrader等,量化平台有Quantopian、聚宽、万矿、优矿、米筐等。

既然是程序猿,还是弄个开源框架自己跑跑试试,比较了下觉得BackTrader(德国人写的)好像入门容易点,搭一个先试试看。

安装步骤

  1. BackTrader的安装很简单,支持从pypi安装pip install backtrader, 也支持从源代码安装https://github.com/mementum/backtrader, 加压后执行python3 setup.py install。

    我执行了下源码安装,主要看看以后有没有时间学习别人怎么写的python工程。

  2. 还需要安装一些backtrader需要的依赖需要安装 python3 -m pip install --upgrade tushare python3 -m pip install --upgrade pandas python3 -m pip install --upgrade datetime python3 -m pip install --upgrade matplotlib sudo apt install python3-tk tk-dev -y

  3. 注册新版的tushare pro账户,个人主页获取token,这个是为了程序能通过tushare提供的接口获取行情数据。

    用户注册 也有其它些网站和交易商提供了行情数据接口,但是tushare用起来挺方便的,重点不在这里,不研究其它的了。

  4. 新建一个目录,把程序firstsample.py, SimpleStrategy.py下载到目录下,直接执行python3 firstsample.py就能看到执行结果。

    交易结果

  5. 简单解释一下程序

    1) 准备连接tushare,从网上找一些股票代码(特意加上了太极,以后如果有好的策略,分析一下太极)。 TOKEN = '******************' pro = ts.pro_api(token=TOKEN)

    data = { 'code':['600819.SH','000612.SZ','000998.SZ','002009.SZ','300159.SZ','300048.SZ','600150.SH','002041.SZ','601669.SH','002368.SZ'], 'name':['耀皮玻璃','焦作万方','隆平高科','天奇股份','新研股份','合康新能','中国船舶','登海种业','中国电建','太极股份'] } frame = pd.DataFrame(data) stock=frame['code']

    1. 下述代码就是从tushare网站拉取数据,执行的结果就是生成了股票的每日行情文件,如图所示。 def fetch_daily_data(stock,start,end): data = pro.daily(ts_code=stock,start_date=start,end_date=end) data['trade_date'] = pd.to_datetime(data['trade_date']) data=data.sort_values(by = 'trade_date') data.index = data['trade_date'] data = data[ ['ts_code', 'open', 'high', 'low', 'close', 'pre_close', 'change', 'pct_chg', 'vol', 'amount']] return data

    for i in range(len(stock)): data=fetch_daily_data(stock.iloc[i],'20200813', '20210813')#字段分别为股票代码、开始日期、结束日期 data.to_csv(stock.iloc[i]+'.csv')

    数据文件

    1. 收集输入,执行策略,回测。 //Cerebro类是backtrader的引擎,有以下几方面功能 //创建cerebro cerebro = bt.Cerebro() //循环获取10支股票历史数据 for i in range(len(stock)): //添加交易数据 data = bt.feeds.GenericCSVData( dataname=stock.iloc[i]+'.csv', fromdate=dt.datetime(2020, 8, 13), todate=dt.datetime(2021, 8, 13), dtformat='%Y-%m-%d', datetime=0,#定义trade_date在第0列 open=2, high=3, low=4, close=5, volume=9, nullvalue=0.0,#设置空值 ) cerebro.adddata(data) //回测设置 startcash=100000.0 cerebro.broker.setcash(startcash) //设置佣金为万分之二 cerebro.broker.setcommission(commission=0.0002) //添加策略 cerebro.addstrategy(SimpleStrategy,printlog=True) cerebro.run() //获取回测结束后的总资金 portvalue = cerebro.broker.getvalue() pnl = portvalue - startcash //打印结果 print(f'总资金: {round(portvalue,2)}') print(f'净收益: {round(pnl,2)}')
  6. 还有一个文件SimpleStrategy.py就是动量+趋势跟踪的策略,策略思路为:计算24只股票过去30日的收益率并进行排序,选择前10只股票加入选股池(动量),逐日滚动计算和判断:如果选股池中某只个股满足股价位于20均线以上且没有持仓时买入(以20日均线为生命线跟踪趋势);如果某只个股已持仓但判断不在选股池中或股价位于20均线以下则卖出。每次交易根据十只个股平均持仓。 这个是从网上找的一个现成策略,我随便找了10只股票,并不完全满足策略要求,主要为了测试backtrader是否为我所用了,具体的策略问题等以后慢慢研究。

到这一步,一个backtrader的环境就搭建好了,backtrader还支持绘图, 以后的学习中再仔细研究一下。

空文件

简介

BackTrader是一个基于Python的自动化回溯测试框架, 作者是德国人。最近原本参与的一个项目搁浅,有点时间学习一下关于量化的知识,比较了一下,发现BackTrader是一个易懂、易上手的量化框架。今天我们就来试试用Backtrader进行简单的量化策略回溯。 展开 收起
取消

发行版

暂无发行版

贡献者

全部

语言

近期动态

不能加载更多了
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Python
1
https://gitee.com/zsmszsms/backtrader-initial-attempt.git
git@gitee.com:zsmszsms/backtrader-initial-attempt.git
zsmszsms
backtrader-initial-attempt
BackTrader初尝试
master

搜索帮助