import backtrader as bt
class DynamicFn(bt.Indicator):
lines = ('dyn_highest',)
params = dict(fn=None)
def __init__(self):
self._tradeopen = False
# Safeguard for not set function
self._fn = self.p.fn or lambda x, y: x
def tradeopen(self, yesno):
self._tradeopen = yesno
def next(self):
if self._tradeopen:
self.lines.dyn_highest[0] = self._fn(self.data[0], self.dyn_highest[-1])
class MyStrategy(bt.Strategy)
def __init__(self):
self.dyn_highest = DynamicHighest(self.data.high, fn=max)
def notify_trade(self, trade):
self.dyn_highest.tradeopen(trade.isopen)
def next(self):
if self.dyn_highest > X:
print('ABOUT TO DO SOMETHING')
justakj;lakjfd
Preview:
downloadDownload PNG
downloadDownload JPEG
downloadDownload SVG
Tip: You can change the style, width & colours of the snippet with the inspect tool before clicking Download!
Click to optimize width for Twitter