@run-out, thanks for the help, but that did not work...
Has anyone implemented something like this?
I have some new code trying to make a MACD (MACD2) parameters dynamic:
class Test(bt.Strategy):
params = (('macdfast', 50), ('macdslow', 200),('macdsignal', 500), \
('bbtimeperiod', 50), ('nbdevup', 1),('nbdevdn', 1))
def __init__(self):
# MACD1
self.talib_macd = bt.talib.MACD(self.data, fastperiod=int(self.p.macdfast), slowperiod=int(self.p.macdslow), signalperiod=int(self.p.macdsignal))
# BBANDS
self.bb = bt.talib.BBANDS(self.data, timeperiod=self.p.bbtimeperiod, nbdevup=float(self.p.nbdevup), nbdevdn=float(self.p.nbdevdn), plot=True)
def next(self):
# MACD2 (Dynamic)
macd2fast = self.p.macdfast * self.bb.upperband-self.bb.lowerband
macd2slow = self.p.macdslow + self.p.macdslow * self.bb.upperband-self.bb.lowerband
macd2signal = self.p.macdsignal + self.p.macdsignal * self.bb.upperband-self.bb.lowerband
talib_macd2 = bt.talib.MACD(self.data, fastperiod=int(macd2fast), slowperiod=int(macd2slow), signalperiod=int(macd2signal), plot=False)
# Getting MACD2 plotlines
macd_line = talib_macd2.macd[0]
signal_line = talib_macd2.macdsignal[0]
# Buy/Sell
if macd_line > signal_line:
self.sell()
elif macd_line < signal_line:
self.buy()
The error I am getting is this:
File "dynamic3.py", line 41, in next
macd_line = talib_macd2.macd[0]
File "/home/user1/.local/lib/python3.8/site-packages/backtrader/linebuffer.py", line 163, in __getitem__
return self.array[self.idx + ago]
IndexError: array index out of range