Indicators/probuilder · probacktest · proorder · proscreener

DynamicZoneRsiDown

DynamicZoneRsiDown in ProBuilder returns the lower dynamic threshold of the Dynamic Zone RSI, a Bollinger Band applied to RSI values. Syntax and examples.

Syntax

probuilder
DynamicZoneRsiDown[RSIperiod, BBperiod](price)

Parameters

NameTypeDefaultDescription
RSIperiodinteger14Period of the underlying RSI calculation.
BBperiodinteger20Period of the Bollinger Band statistics (mean and standard deviation) applied to the RSI values.
priceprice sourceclosePrice series fed into the RSI, typically close.

Formula

code
DynamicZoneRsiDown = Average[BBperiod](RSI[RSIperiod](price))
                     - STD[BBperiod](RSI[RSIperiod](price)) * 0.8

A Bollinger-style lower band, computed on the RSI series instead of price, with a 0.8 standard deviation multiplier.

How it works

The classic RSI uses fixed thresholds, 30 for oversold and 70 for overbought, regardless of the instrument or regime. The Dynamic Zone approach replaces those constants with bands derived from the RSI's own recent distribution. DynamicZoneRsiDown computes the mean of the RSI over BBperiod bars and subtracts 0.8 times the RSI's standard deviation over the same window.

The result is an oversold line that moves. In quiet periods, when RSI readings cluster tightly, the band sits close to the RSI average and reacts to smaller deviations. In volatile periods the band widens, demanding a larger RSI drop before a reading qualifies as oversold. In persistent downtrends, where a fixed level of 30 would flag oversold almost continuously, the dynamic band drifts down with the RSI and keeps the threshold meaningful.

The function returns the band only. To generate signals, compute the RSI separately with the same RSIperiod and price, then compare the two series, typically watching for the RSI to cross back above the lower band. The companion function DynamicZoneRsiUp produces the matching upper band.

Examples

Example 1, Plotting the lower dynamic band (Indicator)

probuilder
// Lower Dynamic Zone RSI band, 14-period RSI, 20-period bands
a = dynamiczonersidown[14,20](close)
return a coloured(255,0,0) style(line,1)

Draws the lower dynamic threshold as a red line. Displayed together with the RSI it marks the adaptive oversold zone.

Example 2, Full dynamic zone with RSI overlay (Indicator)

probuilder
// RSI with both dynamic bands in one panel
myRSI = RSI[14](close)
lowerband = DynamicZoneRsiDown[14,20](close)
upperband = DynamicZoneRsiUp[14,20](close)
RETURN myRSI, lowerband COLOURED(255,0,0), upperband COLOURED(0,180,0)

Plots the RSI between its adaptive oversold and overbought boundaries. Signals are read at the touches and re-crossings of the bands rather than at fixed levels.

Example 3, Adaptive oversold entry (ProOrder)

probuilder
// Buy when RSI recovers above its dynamic oversold band in an uptrend
trend = Average[200](close)
myRSI = RSI[14](close)
lowerband = DynamicZoneRsiDown[14,20](close)

IF NOT LongOnMarket AND close > trend AND myRSI CROSSES OVER lowerband THEN
  BUY 1 CONTRACT AT MARKET
ENDIF

IF LongOnMarket AND myRSI > 60 THEN
  SELL AT MARKET
ENDIF

Enters long when the RSI crosses back above the adaptive lower band while price trades above the 200-period average, then exits once momentum normalizes.

Interpretation

ConditionReading
RSI below the lower bandMomentum is unusually weak relative to its own recent range, adaptive oversold.
RSI crosses back above the bandCandidate bullish signal, recovery from the oversold zone.
Band far below the RSI averageHigh RSI volatility, only strong washouts register as oversold.
Band hugging the RSI averageQuiet momentum regime, small dips already qualify.

Compared with the fixed 30 level, the dynamic band flags fewer false oversold readings in trending markets and more usable ones in low-volatility markets. As with any oversold measure, a reading below the band describes conditions, not a guaranteed reversal.

Common errors and gotchas

  • Mismatched RSI settings. Comparing RSI[14](close) against DynamicZoneRsiDown[7,20](close) produces incoherent signals. The RSIperiod and price of both series must match.
  • Using the band as the oscillator. The function returns the threshold line, not the RSI itself. Conditions like DynamicZoneRsiDown[14,20](close) < 30 test the band level, which is rarely what a strategy intends.
  • Bracket order. The two periods share one pair of square brackets and the price source sits in parentheses, DynamicZoneRsiDown[14,20](close). Splitting the periods into separate brackets raises a syntax error.
  • Fixed 0.8 multiplier. The standard deviation factor is built in and cannot be passed as a parameter. For a wider or narrower zone, rebuild the band manually from Average, STD, and RSI.
  • DynamicZoneRsiUp, the matching upper dynamic threshold of the Dynamic Zone RSI.
  • DynamicZoneStochasticDown, the same concept applied to the Stochastic oscillator.
  • DynamicZoneStochasticUp, upper dynamic band of the Dynamic Zone Stochastic.
  • RSI, the underlying Relative Strength Index.
  • BollingerDown, lower Bollinger band on price, the same band construction.
  • STD, standard deviation, one building block of the band.
  • Average, simple moving average, the other building block.
  • Stochastic, alternative bounded oscillator usable with dynamic zones.