RepulseMM
RepulseMM in ProBuilder computes a moving average version of the Repulse oscillator from short term, long term and smoothing parameters. Syntax, examples.
Syntax
RepulseMM[shortTerm, longTerm, smoothing](priceSeries)Parameters
| Name | Type | Default | Description |
|---|---|---|---|
shortTerm | integer | none | Period of the short-term pressure calculation. A common choice is 5. |
longTerm | integer | none | Period of the long-term pressure calculation. A common choice is 40. |
smoothing | integer | none | Smoothing factor applied to the final line. Higher values produce a slower, cleaner curve. |
priceSeries | price source | close | The price series analysed, usually close, also open, high, or low. |
Formula
RepulseMM compares the magnitude of recent gains against recent losses over the two windows to estimate excess buying or selling pressure, then applies the smoothing factor to the result. ProRealTime™ does not publish the exact combination of the short-term and long-term components, so the line should be treated as a platform built-in rather than reproduced by hand. Conceptually:
RepulseMM = smoothed( pressure(shortTerm) relative to pressure(longTerm) )The output oscillates around zero without fixed bounds.
How it works
The base Repulse indicator measures the pressure buyers or sellers exert on candlesticks over a single window. RepulseMM extends this by weighing a short-term pressure reading against a long-term one, which makes the line respond to shifts in momentum relative to the prevailing background pressure rather than to each candle in isolation. The third parameter then smooths the combined result, filtering one-bar spikes.
In practice the line is read like other zero-centred momentum curves. Its sign gives the active bias, its slope shows whether pressure is building or fading, and zero crossings mark handovers between buyers and sellers. Because the long-term window anchors the calculation, RepulseMM turns more slowly than a plain Repulse with the same short period, which suits trend confirmation and exit management more than fast entry timing.
Comparing RepulseMM readings across several timeframes is a common technique. A slowing longer view combined with a directional change on the shorter view, near a support or resistance level, is the pattern users of this indicator typically look for.
Examples
Example 1, Standard configuration with zero line (Indicator)
// 5-period short term, 40-period long term, smoothing factor 3
pressure = RepulseMM[5,40,3](close)
zeroLine = 0
RETURN pressure AS "RepulseMM", zeroLine AS "Zero"Plots the classic 5, 40, 3 configuration against a zero reference line. The sign of the curve gives the current pressure bias at a glance.
Example 2, Exit management on fading pressure (ProOrder)
DEFPARAM CumulateOrders = false
mom = RepulseMM[5,40,3](close)
trend = Average[50](close)
// Enter long when pressure turns positive in an uptrend
IF NOT LongOnMarket AND close > trend AND mom CROSSES OVER 0 THEN
BUY 1 CONTRACT AT MARKET
ENDIF
// Exit as soon as smoothed pressure rolls over below zero
IF LongOnMarket AND mom CROSSES UNDER 0 THEN
SELL AT MARKET
ENDIFRepulseMM works as both the entry trigger and the exit signal. The smoothing keeps the system in the trade through single-bar pressure dips that would shake out a raw Repulse version.
Example 3, Screening for a fresh bullish turn (ProScreener)
mom = RepulseMM[5,40,3](close)
turnedUp = mom > 0 AND mom[1] <= 0
SCREENER[turnedUp](mom AS "RepulseMM")Returns instruments whose RepulseMM line crossed from non-positive to positive on the current bar, isolating fresh shifts toward buying pressure.
Interpretation
| Reading | Meaning |
|---|---|
| RepulseMM > 0 | Buying pressure dominates relative to the long-term window. |
| RepulseMM < 0 | Selling pressure dominates. |
| Rising slope | Pressure building in the direction of the sign. |
| Flattening slope | Pressure fading, the move is losing sponsorship. |
| Divergence vs price | Price extends to a new extreme without the oscillator confirming, early warning of exhaustion. |
The indicator is unbounded, so levels are instrument-specific. Sign, slope and divergence carry the information, and signals are considered stronger near visible support or resistance.
Common errors and gotchas
- Three bracket arguments are mandatory.
RepulseMM[5](close)orRepulseMM(close)raises a syntax error. The instruction always takes short term, long term and smoothing inside square brackets. - Parameter order matters. The short period comes first, the long period second. Writing
RepulseMM[40,5,3](close)compiles but computes a different, inverted-logic line. - Heavy smoothing means late signals. The long-term window plus the smoothing factor make zero crossings arrive well after the price turn. Using RepulseMM for fast scalping timing defeats its design.
- No fixed overbought or oversold levels. The output is unbounded and scales with volatility. Fixed numeric thresholds copied from one instrument rarely transfer to another.
Related instructions
Repulse, the single-window base version of this oscillator.SmoothedRepulse, alternative pre-smoothed variant.RSI, bounded momentum oscillator for comparison.Momentum, raw N-bar price difference.ROC, percentage rate of change.Average, simple moving average, usable as an external trend filter.ExponentialAverage, exponential smoothing used across the Repulse family.Stochastic, bounded range-position oscillator with similar divergence use.
