Why the Force Index is almost unusable across instruments — and the fix is older than the problem

Why the Force Index is almost unusable across instruments — and the fix is older than the problem

5 August 2026, 11:58
Narayanan Mohanan Mohanan Krishnan
0
22

Elder's Force Index is one of the few classical indicators that combines price and volume in a single line. Each bar contributes (close − previous close) × volume. Positive when buyers carried the bar, negative when sellers did, and proportional to how much was traded doing it.

It deserves more use than it gets. The reason it does not get it is arithmetic.

The problem, measured

Here is the same indicator, the same 13-period setting, read from six charts:

Instrument Timeframe Force Index
ETHBTC H1 −0.01
BTCXAU Daily −2,656.30
XAUUSD Daily −22,755.90
ETHUSD Daily −884,996.81
BTCUSD Daily −12,808,636.28
US30 Weekly 508,887,146.09


Ten orders of magnitude between the smallest and the largest 
the US30 reading is roughly fifty billion times the ETHBTC one. Not because the markets differ in character, but because the Force Index carries the units of price multiplied by the units of volume — and neither is normalised. ETHBTC prices in fractions of a bitcoin; US30 prices in index points with index-scale volume behind it.

The consequence is practical. Any rule of the form "act when the Force Index exceeds X" is valid on exactly one symbol and one timeframe. Change either and X is meaningless. There is no default that travels, which is why most people who try the Force Index abandon it: the first thing they do is put it on a second instrument and find the scale unrecognisable.

BTCXAU, XAUUSD and BTCUSD on the daily, same settings. The Force Index reads −2,656, −22,756 and −12,808,636 respectively; the bands scale with each instrument automatically.

Why the obvious fixes do not work

Dividing by average volume gives you back something close to price change. Dividing by price gives you something close to volume. Both discard the interaction that made the indicator interesting in the first place.

Normalising to a fixed range — 0 to 100, say — requires choosing a lookback for the maximum, and the result then depends entirely on whether an outlier sits inside that window. A single extreme bar compresses everything after it.

ETHUSD daily. Early June: price touches its lower Bollinger Band while the Force Index collapses well through its own. The same event, two readings of how unusual it was.

The fix

Express the value in standard deviations of its own recent history.

Take a 20-period moving average of the Force Index. Compute the standard deviation of the Force Index over the same 20 periods. Place bands at two deviations either side. This is the Bollinger construction, applied to the Force Index instead of price.

The units cancel. A reading outside the band means the same thing on every chart: this value is unusual relative to how this instrument has been behaving recently. Whether the raw number is 0.04 or 400 million stops mattering.

What this does and does not give you

It gives you one parameter set that works everywhere. No per-symbol calibration, no threshold table, nothing to re-tune moving from crypto to metals to an index.

It gives you an adaptive definition of "unusual". When volatility expands the bands expand with it, so a quiet market and a violent one are each judged against themselves.

It does not give you a signal. A band excursion says a reading is statistically unusual for this instrument right now. Price frequently continues in the same direction afterwards, and frequently does not. The Force Index leaves its bands considerably more often than markets reverse — if you take band exits as entries you will be wrong most of the time, and the construction is not making any claim to the contrary.

What it is good for is context: knowing whether the effort behind a move is ordinary or extreme for this market, in a form that reads the same everywhere.

US30 weekly. February — the Force Index breaks below its lower band while price is still near its highs. July — it pushes above the upper band. Both are descriptions of effort, not forecasts.

Building it

The whole thing is about twenty lines. The Force Index is a running series of (close − previous close) × volume, then smoothed — Elder specified a 13-period EMA; I default to an SMA over the same 13 because it makes the band statistics easier to reason about, and the smoothing method is an input either way. Then a moving average of that smoothed series over 20 bars, a standard deviation over the same window, and the bands at basis ± 2 × deviation.

Two details that matter in MQL5. Compute the Force Index into its own buffer first and take the moving average of that buffer, not of price — it is easy to wire the deviation to the wrong series. And use the tick volume the terminal supplies unless the broker provides real volume; mixing the two across instruments reintroduces exactly the comparability problem you just solved.

I have published this as Fi Bands, free for MT5 and MT4, with all four series exposed as documented buffers so an Expert Advisor can read the values rather than infer them from colours. But the construction is the useful part and it is public — if you would rather build it yourself, everything needed is above.

Presets

There is not much to tune, which is the point. Three configurations worth knowing:

  • Default (13, 20, 2.0) — Elder's period, standard Bollinger window. Works unchanged on every instrument I have tried.
  • Responsive (13, 10, 2.0) — shorter band window. More excursions, faster adaptation after a regime change. Useful on higher timeframes where 20 bars is a long time.
  • Selective (13, 20, 2.5) — wider bands. Fewer excursions, each more extreme. Useful on instruments that spend a lot of time outside two deviations, which some crypto pairs do.

Changing the 13 changes what you are measuring rather than how it is judged, so I would leave it alone unless you have a reason.

Developed and maintained by Narayanan Mohanan, MT5/MQL5 Developer.