def test_trange(): candles = np.array(mama_candles) single = ta.trange(candles) seq = ta.trange(candles, sequential=True) assert round(single, 2) == 94.35 assert len(seq) == len(candles) assert seq[-1] == single
def zlkc(candles: np.ndarray, period: int = 20, mult: float = 1, source_type="hlc3", sequential=False) -> ZeroLagKeltnerChannel: """ Zero Lag Keltner Channels Based on TradingView: https://www.tradingview.com/script/CTzNAuUH-Zero-Lag-Keltner-Channels/ :param candles: np.ndarray :param period: int - default: 20 :param mult: float - default: 1 :param source_type: str - default: "hlc3" :param sequential: bool - default=False :return: ZeroLagKeltnerChannel(upperband, middleband, lowerband) """ if not sequential and len(candles) > 240: candles = candles[-240:] source = get_candle_source(candles, source_type=source_type) ma = cta.zlema(source, period=period, sequential=True) tr = ta.trange(candles=candles, sequential=True) rangema = cta.zlema(tr, period=period, sequential=True) upper = ma + rangema * mult lower = ma - rangema * mult if sequential: return ZeroLagKeltnerChannel(upper, ma, lower) else: return ZeroLagKeltnerChannel(upper[-1], ma[-1], lower[-1])
def greed(self): tr = ta.trange(candles=self.candles, sequential=True) core = tr[np.logical_not(np.isnan(tr))] vwma_tr = ti.vwma(np.ascontiguousarray(core), np.ascontiguousarray(self.candles[:, 5]), period=200) mult = 2 return (same_length(self.candles[:, 5], vwma_tr) / self.candles[:, 2] * 100 * mult)[-1]