to close this question:
import backtrader as bt
import numpy as np
import datetime
class A(bt.Indicator):
lines = ('avg',)
def __init__(self):
self.addminperiod(3)
def next(self):
self.lines.avg[0] = np.mean(self.datas[0].close.get(size=3).tolist())
class B(bt.Indicator):
lines = ('avg',)
def __init__(self):
self.addminperiod(5)
def next(self):
self.lines.avg[0] = np.mean(self.datas[0].close.get(size=5).tolist())
class C(bt.Indicator):
lines =('xxx',)
def __init__(self):
pass
def next(self):
print([a-b for a,b in zip(self.datas[0].avg.get(size=3).tolist(), self.datas[1].avg.get(size=3).tolist())])
class TestStrategy(bt.Strategy):
def __init__(self):
self.avg3 = A(self.datas[0])
self.avg5 = B(self.datas[0])
self.delta = C(self.avg3, self.avg5)
def next(self):
pass
cerebro = bt.Cerebro()
cerebro.addstrategy(TestStrategy)
data = bt.feeds.YahooFinanceCSVData(
dataname='orcl-1995-2014.txt',
fromdate=datetime.datetime(2000, 1, 1),
todate=datetime.datetime(2000, 1, 31),
reverse=False)
cerebro.adddata(data)
cerebro.run()