Indicators/probuilder · probacktest · proorder · proscreener

SmoothedRepulse

SmoothedRepulse in ProBuilder measures buying versus selling pressure over N bars, a smoother variant of the Repulse oscillator. Syntax, usage, examples.

Syntax

probuilder
SmoothedRepulse[period](price)

Parameters

NameTypeDefaultDescription
periodinteger5Number of bars over which the buying and selling forces are evaluated and smoothed.
priceprice sourcecloseThe price series used in the calculation. Accepts close, open, high, low, or a custom series.

Formula

The standard Repulse oscillator compares an estimate of bullish force with an estimate of bearish force for the current bar, each derived from the position of the close and open within the bar's range. SmoothedRepulse applies the same buying-minus-selling comparison, but aggregates it over the entire period window:

code
SmoothedRepulse = BuyingPressure[period] - SellingPressure[period]

The exact weighting is internal to ProRealTime™. What matters for usage is the sign convention: the output oscillates around zero, positive when buyers dominate the window, negative when sellers do.

How it works

The single-bar Repulse indicator reacts to every candle, which makes it responsive but noisy. SmoothedRepulse extends the measurement across period bars, so one wide-range candle no longer flips the reading on its own. The result is a slower oscillator that describes the prevailing pressure regime rather than bar-by-bar sentiment.

On each bar, ProBuilder evaluates the net difference between accumulated buying force and accumulated selling force inside the window and returns it as a single value. The line rises while buyers strengthen their grip, falls while sellers take over, and crosses zero when control changes hands.

Because it is a pressure gauge rather than a bounded oscillator, there are no fixed overbought or oversold levels. Typical usage is sign-based (above or below zero) or slope-based (rising or falling), often as a confirmation filter for entries generated by other logic.

Examples

Example 1, Plotting the pressure balance (Indicator)

probuilder
// Net buying versus selling pressure over the last 10 bars
pressure = SmoothedRepulse[10](close)
RETURN pressure AS "Smoothed Repulse 10"

Computes the 10-period Smoothed Repulse of closing prices and plots it as an oscillator around zero.

Example 2, Zero-cross confirmation filter (ProOrder)

probuilder
// Enter long only when both trend and pressure agree
trend    = ExponentialAverage[50](close)
pressure = SmoothedRepulse[10](close)

IF NOT OnMarket THEN
  IF close > trend AND pressure CROSSES OVER 0 THEN
    BUY 1 CONTRACT AT MARKET
  ENDIF
ELSIF LongOnMarket AND pressure CROSSES UNDER 0 THEN
  SELL AT MARKET
ENDIF

Uses the sign of SmoothedRepulse as a regime switch: positions open when pressure turns positive above a rising average and close when pressure turns negative.

Example 3, Screening for building buying pressure (ProScreener)

probuilder
pressure = SmoothedRepulse[10](close)
// Positive and rising for three consecutive bars
rising = pressure > pressure[1] AND pressure[1] > pressure[2]
SCREENER[pressure > 0 AND rising](pressure AS "Pressure")

Returns instruments where buying pressure is both positive and increasing over the last three bars.

Interpretation

  • Positive readings. Buying force has dominated the window. Sustained positive values accompany advancing phases.
  • Negative readings. Selling force dominates. Sustained negative values accompany declining phases.
  • Zero crossings. Mark a handover of control between buyers and sellers. Later than the single-bar Repulse cross, but with fewer false flips.
  • Divergence. Price making new highs while SmoothedRepulse flattens or declines suggests the advance is running on less pressure than before.

The indicator does not predict turns on its own. It describes the current pressure regime and is best combined with a trend or volatility filter.

Common errors and gotchas

  • Treating it as bounded. SmoothedRepulse has no fixed scale, so thresholds like 70/30 borrowed from RSI do not transfer. Levels must be read relative to the instrument's own history.
  • Period too short. With the default of 5 bars the line still flips sign frequently on volatile instruments. Longer windows such as 10 to 15 give a steadier regime signal.
  • Confusing the variants. Repulse measures the current bar, SmoothedRepulse measures the whole window, and RepulseMM applies a moving-average treatment. They produce different lines and are not interchangeable in existing code.
  • Sign flips around zero. When pressure is balanced, the line hovers near zero and can cross repeatedly. Requiring a minimum magnitude, or several consecutive bars on one side, avoids trading the noise.
  • Repulse, the single-bar buying and selling pressure oscillator.
  • RepulseMM, moving-average variant of Repulse.
  • RSI, bounded momentum oscillator for comparison-style filters.
  • CCI, deviation-based oscillator centred on zero.
  • Momentum, raw price change over N bars.
  • ChaikinOsc, volume-based accumulation pressure oscillator.
  • MoneyFlow, volume-weighted buying and selling balance.
  • ForceIndex, price change multiplied by volume, another force measure.