量化交易学习(二十八)backtrader文档cerebro(1)

今天这篇是backtrader文档的学习笔记。主要介绍了cerebro的概念。

官方文档链接:https://www.backtrader.com/docu/cerebro/

Cerebro

此类是 backtrader 的基石,因为它是以下功能的中心点:

1、收集所有输入(Data Feeds)、演员(Strategies)、观众(Observers)、评论家(Analyzers)和记录者(Writers),确保演出随时继续进行。

2、执行回测/或实时数据馈送/交易

3、返回结果

4、允许访问绘图设施

收集输入

1、首先创建一个大脑:

1
cerebro = bt.Cerebro(**kwargs)

支持一些控制执行的**kwargs,请参阅参考资料(在后面可以将相同的参数应用于 run 方法)

2、添加数据源

最常见的模式是 cerebro.adddata(data),其中 data 是已经实例化的数据源。 例如:

1
2
data = bt.BacktraderCSVData(dataname='mypath.days', timeframe=bt.TimeFrame.Days)
cerebro.adddata(data)

重新采样和重播数据是可能的,并且遵循相同的模式:

1
2
data = bt.BacktraderCSVData(dataname='mypath.min', timeframe=bt.TimeFrame.Minutes)
cerebro.resampledata(data, timeframe=bt.TimeFrame.Days)

或者:

1
2
data = bt.BacktraderCSVData(dataname='mypath.min', timeframe=bt.TimeFrame.Minutes)
cerebro.replaydatadata(data, timeframe=bt.TimeFrame.Days)

该系统可以接受任意数量的数据源,包括将常规数据与重新采样和/或重放的数据混合。 当然,其中一些组合肯定是没有意义的,并且为了能够组合数据而有限制:时间对齐。 请参阅文档『数据 - 多个时间范围』、『数据重采样 - 重采样』和『数据 - 重播』部分。

3、添加策略

与已经是类实例的数据源不同,cerebro 直接采用 Strategy 类和传递给它的参数。 背后的基本原理:在优化场景中,该类将被实例化多次并传递不同的参数

即使没有运行优化,该模式仍然适用:

1
cerebro.addstrategy(MyStrategy, myparam1=value1, myparam2=value2)

优化时,必须将参数添加为可迭代对象。 有关详细说明,请参阅文档的『优化』部分。 基本模式:

1
cerebro.optstrategy(MyStrategy, myparam1=range(10, 20))

这将运行 MyStrategy 10 次,myparam1 的值从 10 到 19(记住 Python 中的范围是半开的,不会达到 20)

4、其他元素

还可以添加一些其他元素来增强回测体验。 请参阅相应的部分。 方法有:

  • addwriter

  • addanalyzer

  • addobserver (or addobservermulti)

  • 更换经纪人

Cerebro 将使用 backtrader 中的默认经纪人,但这可以被覆盖:

1
2
broker = MyBroker()
cerebro.broker = broker # property using getbroker/setbroker methods

6、接收通知

如果数据源和/或代理发送通知(或创建通知的store提供商),它们将通过 Cerebro.notify_store 方法接收。 可通过三种方式处理这些通知

  • 通过 addnotifycallback(callback) 调用向 cerebro 实例添加回调。 回调必须支持此函数签名:
1
callback(msg, *args, **kwargs)

收到的实际 msg*args**kwargs 是由具体实现定义的(完全取决于data/broker/store),但一般来说,人们应该期望它们是可打印的,以允许接收和实验。

  • 重写添加到 cerebro 实例的 Strategy 子类中的 notify_store 方法。
    函数签名:notify_store(self, msg, *args, **kwargs)

  • 创建 Cerebro 子类并覆盖 notify_store 方法(与策略中的签名相同)

这应该是最不推荐的方法。


这一篇就到这里啦。欢迎大家点赞、转发、私信。还没有关注我的朋友可以关注 江达小记

江达小记