backtrader是一个比较完整的本地版Python量化回测框架。既然业界好评如潮,作为量化交易员的我们应该集所有好用的工具于一身,让我们来体验一下这个框架。backtrader的使用在官方文档中有详细的介绍。大致分为两步:创建一个策略,创建一个策略类,这个类要继承backtrader.Strategy,然后可以自定义里面的方法。策略类中有一个类属性params,用于定义策略中一些可调的参数值。backtrader.indicators内置了很多指标的计算方法,如移动平均线、MACD、RSI等,使用时只需要实例化策略将要用到的技术指标,在里面编写交易策略即可接下来的功能,也就是进场和出场的逻辑创建一个策略决策引擎(原文是Cerebro,这里我用的是decision这个词),将定义好的策略注入到决策引擎中,将行情数据注入到决策引擎,并以可视化方式反馈回测结果。以上是框架的核心部分。当然,还有很多其他可扩展的功能。backtrader的数据加载非常灵活。这里我们使用DataFrame格式数据,如下:"""HighLowOpenCloseVolumeOpenInteresttrade_date2017-01-038.128.078.078.12179801.0102017-01-048.168.098.138.142137501-058.238.123179.1028.158.238.123179.102-01-068.198.128.188.13128549.9602017-01-098.158.088.138.1302017-01-068.198.128.188.13128549.9602017-01-098.158.088.13.method.Suchas__init__,log,notify_order,notify_trade,next等,关于策略中的指标,backtrader内置了很多类型,可以直接调用,比如移动平均线:self.sma=bt.indicators.SimpleMovingAverage(self.datas[0],period=self.params.mapperiod)由于内置的??talib模块也可以这样调用:next方法,我们实现一个简单的双均线策略作为交易的逻辑,比如买入条件为MA5穿越MA10;卖出条件为离子是MA10穿过MA5。关于策略回测,除了给Cerebro添加数据和策略外,还有一些参数需要设置。例如,经纪人设置,例如初始资金和交易佣金。您还可以使用加法器来设置每笔交易中购买的股票数量。回测结束后,返还执行交易策略时积累的资金总额。这里回测新希望2017年1月1日至2020年1月1日的策略执行效果,最终资金从10000变为15941.95。由于backtrader内置了Matplotlib,我们也可以将回测的效果可视化,如下图:一般来说,对于刚进阶的朋友来说已经够用了,如果不能满足进阶玩家的需求怎么办?您可以继承框架并自行扩展。关于以上内容的更多讨论,欢迎大家关注【元宵大师带你用Python量化交易】!!
