Absolute Strengh Histogram

Stockcharts and Investopedia have literature on this indicator.

With the formula being:

  • StochRSI = (RSI - min(RSI, period)) / (max(RSI, period) - min(RSI, period))

In theory the period to calculate the RSI is the same that will later be applied to find out the minimum and maximum values of the RSI. That means that if the chosen period is 14 (de-facto standard) for the RSI, the total look-back period for the indicator will be 28


The actual look-back period will be a bit longer, because a 14-period RSI has a longer effective look-back period of 15, as the comparison of the closing prices of the 1st two periods is needed to kick-start the calculations

In any case, backtrader does calculate all the needed look-back and warm-up periods automatically.

Considering that the following are built-in indicators in backtrader:

  • RSI
  • Lowest (aka MaxN)
  • Highest (aka MinN)

developing the StochRSI according to the formula seen above is straightforward.

class StochRSI(bt.Indicator):
    lines = ('stochrsi',)
    params = dict(
        period=14,  # to apply to RSI
        pperiod=None,  # if passed apply to HighestN/LowestN, else "period"

    def __init__(self):
        rsi = bt.ind.RSI(self.data, period=self.p.period)

        pperiod = self.p.pperiod or self.p.period
        maxrsi = bt.ind.Highest(rsi, period=pperiod)
        minrsi = bt.ind.Lowest(rsi, period=pperiod)

        self.l.stochrsi = (rsi - minrsi) / (maxrsi - minrsi)

And here a view of how the indicator works