For code/output blocks: Use ``` (aka backtick or grave accent) in a single line before and after the block. See: http://commonmark.org/help/
Returning a bool based on line value calculations
-
I am trying to calculate a trend based on this logic but keep getting an error, I want to reference the latest value from these plots
self.upTrend = 1 if self.smi_h.SMI > self.smi_h.AvgSMI and self.smi_m.SMI > self.smi_m.AvgSMI and self.smi_l.SMI > self.smi_l.AvgSMI else 0
TypeError: __bool__ should return bool, returned LineOwnOperation
SMI Class code
class StochasticMomentumIndex(bt.Indicator): alias = ('SMI',) lines = ('SMI', 'AvgSMI',) params = ( ('k_period',5), ('d_period', 3), ('over_bought', 40), ('over_sold', -40), ) def _plotlabel(self): plabels = [self.p.over_bought, self.p.over_sold, self.p.d_period, self.p.k_period] return plabels def _plotinit(self): self.plotinfo.plotyhlines = [self.p.over_bought, self.p.over_sold] def __init__(self): min_low = bt.ind.Lowest(self.data.low, period=self.p.k_period) max_high = bt.ind.Highest(self.data.high, period=self.p.k_period) rel_diff = self.data.close - ((max_high + min_low)/2) diff = max_high - min_low avgrel = bt.ind.EMA(bt.ind.EMA(rel_diff, period=self.p.d_period), period=self.p.d_period) avgdiff = bt.ind.EMA(bt.ind.EMA(diff, period=self.p.d_period), period=self.p.d_period) self.lines.SMI = avgrel / (avgdiff / 2) * 100 if avgdiff is not 0 else 0 self.lines.AvgSMI = bt.ind.EMA(self.lines.SMI, period=self.p.d_period)