参考:https://zhuanlan.zhihu.com/p/64238996
首先看了一下backtrader文档,可以添加基准数据观察器的,试试。
1 | self.__cerebro.addobserver(bt.observers.Benchmark, data = self.__benchFeed, timeframe = bt.TimeFrame.NoTimeFrame) |
注意要先用adddata将数据添加,否则会报错。但添加基准数据以后貌似回测指标都没啥变化呀。
现在来实现布林带策略吧。
有上中下三条带,突破下带买入,突破上带卖出。
backtrader的Indicators里有BollingerBands指标的,可以直接用。
先写策略类。
1 | # coding:utf-8 |
表现很差,绝大部分时间在空仓,年化收益率0.5%,不如余额宝。
再试试调整参数,用不同的周期跑。cerebro有一个optstragtegy函数用来跑不同的参数,但是怎么加到自己的类里呢?
加了一个函数
1 | # 进行参数优化 |
因为我是用手机写的,多线程运行有问题,所以指定使用一个cpu。
再加一个优化回测函数
1 | # 执行参数优化的回测 |
在策略类里实现stop函数
1 | def stop(self): |
就可以用
1 | backtest.optRun(period = range(5, 50)) |
实现参数优化了。
周期14最好。
应该还可以改进,显示其它回测指标,以后再说吧。
代码地址还是: https://github.com/zwdnet/MyQuant/tree/master/47
主要修改了backtest.py文件,增加了一个策略类文件Bolling.py。
我发文章的三个地方,欢迎大家在朋友圈等地方分享,欢迎点“在看”。
我的个人博客地址:https://zwdnet.github.io
我的知乎文章地址: https://www.zhihu.com/people/zhao-you-min/posts
我的微信个人订阅号:赵瑜敏的口腔医学学习园地