Exemplo n.º 1
0
    def __init__(self, period, mul, cache_size=None):
        self._p = period
        self._m = mul
        self._sma = SMA(period, cache_size)
        self._stddev = StdDeviation([period])

        super().__init__({
            'args': [period, mul, cache_size],
            'id': 'bbands',
            'name': 'BBANDS(%f, %f)' % (period, mul),
            'seed_period': period
        })
    def __init__(self, period, cache_size=None):
        self._stddev = StdDeviation(period, cache_size)
        self._uEMA = EMA(period, cache_size)
        self._dEMA = EMA(period, cache_size)
        self._prevInputValue = None

        super().__init__({
            'args': [period, cache_size],
            'id': 'rvi',
            'name': 'RVI(%f)' % period,
            'seed_period': period,
            'cache_size': cache_size
        })
Exemplo n.º 3
0
    def __init__(self, args=[]):
        [period, mul] = args

        self._p = period
        self._m = mul
        self._sma = SMA([period])
        self._stddev = StdDeviation([period])

        super().__init__({
            'args': args,
            'id': 'bbands',
            'name': 'BBANDS(%f, %f)' % (period, mul),
            'seed_period': period
        })
    def __init__(self, args=[]):
        [period] = args

        self._stddev = StdDeviation([period])
        self._uEMA = EMA([period])
        self._dEMA = EMA([period])
        self._prevInputValue = None

        super().__init__({
            'args': args,
            'id': 'rvi',
            'name': 'RVI(%f)' % period,
            'seed_period': period
        })
Exemplo n.º 5
0
class BollingerBands(Indicator):
    def __init__(self, args=[]):
        [period, mul] = args

        self._p = period
        self._m = mul
        self._sma = SMA([period])
        self._stddev = StdDeviation([period])

        super().__init__({
            'args': args,
            'id': 'bbands',
            'name': 'BBANDS(%f, %f)' % (period, mul),
            'seed_period': period
        })

    def reset(self):
        super().reset()
        self._sma.reset()
        self._stddev.reset()

    def update(self, v):
        self._sma.update(v)
        self._stddev.update(v)

        middle = self._sma.v()
        stddev = self._stddev.v()

        super().update({
            'top': middle + (self._m * stddev),
            'middle': middle,
            'bottom': middle - (self._m * stddev)
        })

        return self.v()

    def add(self, v):
        self._sma.add(v)
        self._stddev.add(v)

        middle = self._sma.v()
        stddev = self._stddev.v()

        if middle is not None and stddev is not None:
            super().add({
                'top': middle + (self._m * stddev),
                'middle': middle,
                'bottom': middle - (self._m * stddev)
            })

        return self.v()
class RVI(Indicator):
    def __init__(self, period, cache_size=None):
        self._stddev = StdDeviation(period, cache_size)
        self._uEMA = EMA(period, cache_size)
        self._dEMA = EMA(period, cache_size)
        self._prevInputValue = None

        super().__init__({
            'args': [period, cache_size],
            'id': 'rvi',
            'name': 'RVI(%f)' % period,
            'seed_period': period,
            'cache_size': cache_size
        })

    def reset(self):
        super().reset()
        self._prevInputValue = None
        self._stddev.reset()
        self._uEMA.reset()
        self._dEMA.reset()

    def ud(candlePrice, prevCandlePrice, stddev):
        if prevCandlePrice is None:
            return [0, 0]
        elif candlePrice > prevCandlePrice:
            return [stddev, 0]
        elif candlePrice < prevCandlePrice:
            return [0, stddev]
        else:
            return [0, 0]

    def update(self, v):
        if self._prevInputValue is None:
            return self.v()

        self._stddev.update(v)
        stddev = self._stddev.v()

        if not isfinite(stddev):
            return self.v()

        [u, d] = RVI.ud(v, self._prevInputValue, stddev)

        self._uEMA.update(u)
        self._dEMA.update(d)

        uSum = self._uEMA.v()
        dSum = self._dEMA.v()

        if uSum == dSum:
            return super().update(0)
        else:
            return super().update(100 * (uSum / (uSum + dSum)))

    def add(self, v):
        if self._prevInputValue is None:
            self._prevInputValue = v
            return self.v()

        self._stddev.add(v)
        stddev = self._stddev.v()

        if not isfinite(stddev):
            return self.v()

        [u, d] = RVI.ud(v, self._prevInputValue, stddev)

        self._uEMA.add(u)
        self._dEMA.add(d)

        uSum = self._uEMA.v()
        dSum = self._dEMA.v()

        if uSum == dSum:
            super().add(0)
        else:
            super().add(100 * (uSum / (uSum + dSum)))

        self._prevInputValue = v

        return self.v()