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
ForceIndex(price)Parameters
| Name | Type | Default | Description |
|---|---|---|---|
price | price source | close | Series whose bar-to-bar change is multiplied by volume. The standard choice is close. |
Formula
ForceIndex = (price - price[1]) * volumeWith 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)
// 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)
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)
// 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
ENDIFUses 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
| Reading | Meaning |
|---|---|
| Above zero | Buying pressure dominates, bulls moved price up on volume. |
| Below zero | Selling pressure dominates. |
| New extreme with price trend | Volume confirms the move, trend continuation is favored. |
| Divergence from price | Price 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.
Related instructions
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.
