Indicators/probuilder · probacktest · proorder · proscreener

ForceIndex

ForceIndex(price) in ProBuilder returns Elder's Force Index, close-to-close change multiplied by volume, measuring the strength of buying and selling pressure.

Syntax

probuilder
ForceIndex(price)

Parameters

NameTypeDefaultDescription
priceprice sourcecloseSeries whose bar-to-bar change is multiplied by volume. The standard choice is close.

Formula

code
ForceIndex = (price - price[1]) * volume

With close as the price source this is the classic definition: today's close minus yesterday's close, times today's volume.

How it works

The Force Index, introduced by Dr. Alexander Elder, combines the three components of any move: direction (the sign of the price change), extent (the size of the change), and commitment (the volume behind it). A small price change on huge volume and a large change on modest volume can produce a similar reading, both represent real force applied by one side of the market.

The raw series is extremely noisy because it inherits the bar-to-bar jitter of both price and volume. In practice it is almost always smoothed. A short average, around 2 bars, is used for entry timing, while a longer average, around 13 bars, is read as the trend of buying or selling pressure. The source material notes Wilder smoothing as a common choice; exponential averages are equally common.

The output is unbounded and scales with the instrument's price and volume, so the zero line and divergences carry the information, not the absolute level.

Examples

Example 1, Raw and smoothed Force Index (Indicator)

probuilder
// Raw Force Index of the close
myForceIndex = ForceIndex(close)
// 13-period Wilder smoothing to expose the underlying pressure trend
smoothFI = WilderAverage[13](myForceIndex)
RETURN smoothFI AS "Force Index 13", 0 AS "Zero line"

Computes the raw Force Index and applies a 13-period Wilder average, the usual way to filter its noise before reading zero-line crossings.

Example 2, Screening for renewed buying pressure (ProScreener)

probuilder
fi = ExponentialAverage[13](ForceIndex(close))
// Smoothed Force Index turning positive
SCREENER[fi CROSSES OVER 0](fi AS "Force Index")

Returns instruments where the 13-period smoothed Force Index has just crossed above zero, indicating that buyers have taken over on a volume-weighted basis.

Example 3, Pullback entry in an uptrend (ProOrder)

probuilder
// Trend up, short-term Force Index dips negative, then buy the pullback
trend = ExponentialAverage[22](close)
fi2   = ExponentialAverage[2](ForceIndex(close))

IF NOT LongOnMarket THEN
  IF close > trend AND fi2 < 0 THEN
    BUY 1 CONTRACT AT MARKET
  ENDIF
ELSE
  IF fi2 > 0 AND close < trend THEN
    SELL AT MARKET
  ENDIF
ENDIF

Uses the 2-period smoothed Force Index as a pullback trigger inside an uptrend defined by a 22-period EMA, a structure taken from Elder's own usage.

Interpretation

ReadingMeaning
Above zeroBuying pressure dominates, bulls moved price up on volume.
Below zeroSelling pressure dominates.
New extreme with price trendVolume confirms the move, trend continuation is favored.
Divergence from pricePrice makes a new low or high that the Force Index does not confirm, momentum behind the move is fading.

Bullish divergence, price printing lower lows while the Force Index prints higher lows, is a frequently watched reversal pattern; bearish divergence is the mirror image. The indicator is best treated as confirmation for signals generated elsewhere rather than a standalone system.

Common errors and gotchas

  • Using the raw series directly. Unsmoothed Force Index flips sign almost every bar. Zero-line logic on the raw value produces constant whipsaws; apply a moving average first.
  • No period parameter. ForceIndex[13](close) is not the signature. The instruction takes only a price source in parentheses; any smoothing period belongs to the average wrapped around it.
  • Volume quality matters. On instruments with estimated or missing volume, such as many forex and CFD feeds, the multiplication is not meaningful. Check how the data provider reports volume.
  • Comparing levels across instruments. The output scales with price and volume, so a threshold like "above 100000" is arbitrary. Compare the sign, the direction, and divergences instead.
  • EaseOfMovement, relates price movement to the volume required to produce it.
  • OBV, cumulative volume signed by price direction.
  • MoneyFlowIndex, bounded volume-weighted oscillator.
  • MoneyFlow, ratio of positive to negative money flow.
  • AccumDistr, accumulation distribution line.
  • ChaikinOsc, oscillator on the accumulation distribution line.
  • WilderAverage, common smoothing applied to the Force Index.
  • Volume, the per-bar volume series used in the formula.