入门量化回测最强神器backtrader(三)

1 引言

2 Python实现代码

01 策略模块编写

再次回顾一下交易策略模块(Strategy)的组成部分。交易策略类代码通常包含参数或函数名如下:

(1)params-全局参数,可选:更改交易策略中变量/参数的值,可用于参数调优。

(2)log:日志,可选:记录策略的执行日志,可以打印出该函数提供的日期时间和txt变量。

(3) init:用于初始化交易策略的类实例的代码。

(4)notify_order,可选:跟踪交易指令(order)的状态。order具有提交,接受,买入/卖出执行和价格,已取消/拒绝等状态。

(5)notify_trade,可选:跟踪交易的状态,任何已平仓的交易都将 告毛利和净利润。

(6)next,必选:制定交易策略的函数,策略模块最核心的部分。

(7)其他,包括start()、nextsstart()、stop()、prenext()、notify_fund()、notify_store()和notify_cashvalue。

下面以技术分析指标RSI(不了解的请自行百度)的择时策略为例,当RSI<30时买入,RSI>70时卖出。为了简便起见,策略模块中只包含最核心的交易信 。


02 回测设置

回测系统设置与之前一样,主要是数据加载、交易本金、手续费、交易数量的设置,此处以tushare的旧接口获取股票002537的交易数据进行量化回测。


03 运行回测

这里重点是Analyzers模块的调用与结果输出,调用模块是cerebro.addanalyzer(),再从模块中获取分析指标,如夏普比率是bt.analyzers.SharpeRatio,然后是给该指标重命名方便之后调用,即 _name=’SharpeRatio’。要获取分析指标,需要先执行回测系统,cerebro.run(),并将回测结果赋值给变量results,分析指标存储在results[0]里 (strat变量代替),通过
strat.analyzers.SharpeRatio.get_analysis()即可获取相应数据,其他指标操作方法类似。


输出结果:
初始资金: 100000.00
最终资金: 110215.33
夏普比率: OrderedDict([(‘sharperatio’, 0.094)])
回撤指标: AutoOrderedDict([(‘len’, 280), (‘drawdown’, 1.01), (‘moneydown’, 1126.60), (‘max’, AutoOrderedDict([(‘len’, 280), (‘drawdown’, 3.61), (‘moneydown’, 4016.60)]))])

04 回测结果可视化

下面输出回测图表,一张大图上包含了三张图:

(1)资金变动图:可以看到在实施交易策略的数据期内,资金的盈利/损失。
(2)交易收益/亏损。蓝色(红色)点表示获利(亏损)交易以及获利(亏损)多少。
(3)价格图表。绿色和红色箭头分别表示交易策略的进入点和退出点。黑线是交易标的随时间变化的价格, 条形图表示每个条形图期间资金的交易量。


05 Analyzers模块指标可视化

3结语

参考资料:backtrader官方文档和安装包原生代码

https://www.backtrader.com/docu/

关于Python金融量化

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年3月16日
下一篇 2020年3月16日

相关推荐