python量化分析库 Backtrader入门之五
好的,到现在为止,我们有了现金(通过broker设置);有了数据,通过bt.feed,然后给大脑添加数据。下一步就到了最激动人心的时刻了:冒险的生意就在眼前。让我们在等式中加入一个策略,并打印出每天的“收盘价”(bar)。
让我们开始,backtrader中添加策略是通过添加一个backtrader.f类来实现的。
我们继承Strategy类,创建一个新的类。
# Create a Stratey
class TestStrategy(bt.Strategy):
def log(self, txt, dt=None):
''' Logging function for this strategy'''
dt = dt or self.datas[0].datetime.date(0)
print('%s, %s' % (dt.isoformat(), txt))
def __init__(self):
# Keep a reference to the "close" line in the data[0] dataseries
self.dataclose = self.datas[0].close
def next(self):
# Simply log the closing price of the series from the reference
self.log('Close, %.2f' % self.dataclose[0])
这个类比较简单,就是讲每天的收盘价进行打印。
创建好策略类后,我们再主程序中使用它,将策略类传递给大脑。
cerebro.addstrategy(TestStrategy)
输出结果如下:
注意:假如添加的数据是按照升序排列的,则降序排列的,则得不到预期的结果。
我们来介绍一些基本的规则:
1.在调用init时,策略已经有了一个平台中存在的数据列表。
2.这是一个标准的Python列表,可以按照插入的顺序访问数据。
3.列表中的第一个数据self.datas[0] 是交易操作的默认数据,保持所有策略元素同步(系统时钟)
4.self.dataclose= self.datas[0].close保留对close行的引用。稍后只需要一个级别的间接寻址来访问close值。
5.策略中的next方法将在系统时钟的bar上调用(self.datas[0])。这是真的,直到其他东西开始发挥作用,如指标,它需要一些bar开始产生一个输出。
今天就这样,我们可以添加策略,知道了策略的基本运行规则。下期我们继续,添加一个真实的策略~
“Someone said the stockmarket was risky business, but it doesn’t seem so.”认同这句话吗?当然,不认同,股市有风险是真理。君不见春风吹又生的韭菜一茬又一茬~