量化交易学习(二十六)backtrader平台运行概念3策略类
今天这篇是backtrader文档的学习笔记。主要介绍了数据源的概念。
官方文档链接:https://www.backtrader.com/docu/operating/#a-strategy-derived-class
策略(派生)类
使用backtrader对数据进行回溯测试是在策略(派生类)内完成的。
策略类至少有2个方法需要覆盖:
-
__init__
-
next
在初始化期间,创建数据指标和其他计算指标,为以后应用逻辑做好准备。
之后调用 next 方法来处理每个 bar 的数据。
注意:如果将不同时间范围(bar的数量不同)的数据源传递给 next 方法,则将为主数据源( 第一个传递给 cerebro 的数据源,见下文)调用 next 方法,该数据源必须是具有较小时间范围的数据。
注意:如果使用数据重放功能,则在next
重放bar的进度时,将针对同一bar多次调用该方法。
一个简单的策略派生类:
1 | class MyStrategy(bt.Strategy): |
策略有其他可以被覆盖的方法(或挂钩点):
1 | class MyStrategy(bt.Strategy): |
start
和stop
方法就是字面意思。当策略发送通知时,会调用 notify_order
方法。例如:
-
挂买入或卖出单时(如下所示)
买入/卖出将返回提交给经纪商的 order 。是否保留提交的订单由调用者决定。
例如,它可用于确保在订单仍处于待处理状态时不会提交新订单。
-
如果订单被接受/执行/取消/更改,经纪商将通过
notify_order
方法将更改后的状态通知策略
下面介绍几个常用的策略类方法:
-
buy
、sell
、close
使用底层
broker
和sizer
向经纪商发送买入/卖出订单可以通过手动创建订单并将其传递给经纪人来完成相同的操作。但该平台的目的是让使用它的人变得更容易。
close
将获取当前头寸并立即平仓。 -
getposition
(或属性“position”)返回当前头寸
-
setsizer
/getsizer
(或属性“sizer”)这些函数/属性允许设置/获取底层的仓位分配器 (Sizer)。 使用相同的逻辑可以检查针对相同情况提供不同仓位的分配器 (例如固定资金量、按比例分配资金、指数增长),从而选择合适的分配策略。
策略类由一个 Lines
对象和它所支持的参数组成的,这些参数是使用 Python 的kwargs 参数收集的:
1 | class MyStrategy(bt.Strategy): |
请注意,SimpleMovingAverage
不再使用固定值 20 进行实例化,而是使用为策略定义的参数“period”进行实例化。
这一篇就到这里啦。欢迎大家点赞、转发、私信。还没有关注我的朋友可以关注 江达小记