量化交易学习(十)backtrader基本概念4
今天这篇是backtrader文档的学习笔记。主要介绍了backtrader中对切片的支持以及线的概念。
官方文档链接:https://www.backtrader.com/docu/concepts
例子中的代码都需要导入以下库:
1 | # 导入backtrader |
切片
Backtrader为了实现线的0和-1的索引方式,不支持对线(lines)对象进行切片操作。对于常规的Python可索引对象,我们可以这样写:
1 | # 获取一个从头到尾的切片 |
但是对于backtrader,索引0代表着当前时间的数据值,也就是最新的值,它之后已经没有数据了。
同样的对于下面的写法也是不支持的:
1 | # 获取一个从头到尾的切片 |
同样,0代表当前值的索引,-1代表前一个值的索引,与Python中的索引含义不同,不能这样写。
获取切片
虽然不能通过Python的标准语法获取切片,我们可以通过线的方法来获取切片:
其中,ago为起始时刻,size为以ago为基准向前获取数据的数量。
1 | # 获取只有当前值的切片 |
上面的代码会返回一个只有一个值的切片,其值为当前时刻对应的数据值。
获取从当前时刻往前10个值(也就是获取最近10个时刻对应的数据):
1 | myslice = self.my_sma.get(size=10) # ago 的默认值为0 |
这样获取的数组的数据的索引和常规Python的数组索引是一样的,它不再是线对象。数组最左边的值是最旧的,最右边的值是当前的。
获取忽略当前时刻的最近10个数据可以这样写:
1 | myslice = self.my_sma.get(ago=-1, size=10) |