Exemple #1
0
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
Exemple #2
0
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]