MFI (Money Flow Index) is an oscillator-type indicator that measures the strength of buying and selling pressure the same way RSI does, with one key difference: MFI factors in volume, not just price. Because of that, it's often nicknamed the "Volume-Weighted RSI" — same 0-100 scale, same overbought/oversold logic, but weighted by how much trading activity backed each price move.
How MFI Is Calculated
MFI starts from the typical price of each candle — the average of High, Low, and Close — then multiplies that by the candle's volume to get its raw money flow. Each period's typical price is compared to the previous one: if it rose, that period's raw money flow counts as positive money flow; if it fell, it counts as negative money flow. Over the lookback period (14 candles by default), all the positive money flow is summed, all the negative money flow is summed, and the ratio between them — the money flow ratio — is converted into a 0-100 reading with the same formula shape RSI uses: 100 minus 100 divided by (1 plus the ratio).
The intuition: RSI only asks "were recent closes mostly up or down?" MFI asks "were recent closes mostly up or down, and how much volume was behind those moves?" A candle that closes higher on heavy volume contributes more positive money flow than one that closes higher on light volume, even if the price change looks identical on the chart.
Reading Overbought and Oversold: Why 80/20, Not 70/30
- MFI above 80 — the Overbought zone, buying pressure (weighted by volume) has been dominant and price may be due for a pullback.
- MFI below 20 — the Oversold zone, selling pressure has been dominant and price may be due for a bounce.
- MFI around 50 — buying and selling money flow are roughly balanced.
This is the single most common point of confusion for traders arriving from RSI: MFI's conventional zone levels are 80/20, not RSI's 70/30. Plugging RSI's 70/30 thresholds into MFI will fire far fewer signals than intended, because MFI's volume weighting tends to compress its extremes slightly compared to a pure price oscillator — the wider 80/20 band is the standard adjustment for that, not an arbitrary choice. If you're used to RSI's zones, treat MFI's numbers as looking similar but meaning something calibrated differently, and don't assume the two scales are interchangeable just because both run 0-100.
Entry Conditions
- BUY — MFI crosses back above 20 after having been in the Oversold zone.
- SELL — MFI crosses back below 80 after having been in the Overbought zone.
As with RSI, the exit from the extreme zone is the more reliable signal than the entry into it. MFI first touching 20 just means volume-weighted selling pressure has been heavy; it says nothing about whether that pressure is finished. Waiting for the cross back inside the 20-80 band filters out the (very common) case where MFI dips into oversold and simply stays there while price keeps grinding lower.
Parameters
- MFIPeriod (default 14) — the lookback window for summing positive and negative money flow. A shorter period reacts faster and produces more signals; a longer period smooths the reading and reaches the extreme zones less often. 14 is the shared default across RSI, MFI, and most classic oscillators on this site.
- Overbought (default 80.0) — the upper zone threshold.
- Oversold (default 20.0) — the lower zone threshold.
- EnableAlert (default true) — pop up a terminal alert the first time MFI enters or exits a zone.
- EnablePush (default false) — also send a push notification to your phone via MetaTrader's mobile app, useful if you're not watching the chart live.
MFI vs RSI: What Volume Actually Adds
RSI and MFI share the same 0-100 scale and nearly the same formula shape, but they're built from different raw material: RSI's ratio compares the average size of up-closes to down-closes using price alone, while MFI's ratio compares up-day money flow to down-day money flow using price times volume. Most of the time the two indicators track each other closely, because price and volume usually move together — a strong rally tends to draw in more trading activity, not less.
The interesting cases are where they disagree. If price grinds to a new high on progressively thinner volume, RSI can keep climbing (it only sees that closes were higher), while MFI can flatten out or even turn down (it sees that less money was actually behind each new high). That gap — sometimes called a money-flow divergence — is read the same way as a classic RSI divergence, but with an added layer: it suggests the move isn't just losing momentum, it's losing participation. In principle that makes MFI a somewhat more informative variant of RSI, since it's reacting to two inputs instead of one rather than just plotting the same price data through a differently shaped lens.
The Forex Volume Caveat: Tick Volume vs True Volume
This is the part of MFI that genuinely changes how much weight a forex trader should give its "volume" half, and it's worth understanding properly rather than skimming past. Stocks and futures trade through centralized exchanges that report actual traded volume — the real number of shares or contracts that changed hands. Forex is different: it's an over-the-counter market with no single exchange, so there is no universal, centralized volume figure for a currency pair. What MetaTrader plots and feeds into iMFI() instead is tick volume — a count of how many times the quoted price changed during a candle, not how many lots were actually traded. The MQL5 version of this indicator explicitly requests VOLUME_TICK from iMFI(), because true traded volume (VOLUME_REAL) generally isn't available for forex symbols at all.
Tick volume is a reasonable proxy for trading activity — more price updates in a candle usually does correlate with more genuine market participation and liquidity — but it's still an indirect measurement, not the real thing, and it comes with real limitations. Each broker only sees the tick stream from its own liquidity providers, so tick volume for the same pair and timeframe can differ meaningfully from one broker to the next; there's no guarantee your broker's tick count reflects total global trading activity in that pair. Practically, this means MFI on forex should be treated as a somewhat refined momentum/volatility oscillator that reacts to quoting intensity, rather than a literal volume indicator in the stock-market sense. It's still a useful additional input over price-only RSI, just don't lean on the "volume" story in MFI as hard as you would on a stock or futures chart with real traded volume behind it.
A Word of Caution
Like every bounded oscillator on this site, MFI can stay pinned in the Overbought or Oversold zone for an extended stretch during a strong trend, repeatedly flagging a reversal that doesn't arrive — the same trap RSI has in strong trends, compounded slightly by the tick-volume approximation described above. Check whether the market is trending or ranging first (see Trend vs Range) and treat MFI's reversal signals as most reliable in ranging conditions, or filter them with a trend tool so you only take oversold buy signals inside an established uptrend. And as with any indicator-based signal, size positions sensibly and always define your risk before entering — see Risk Management Basics for the position-sizing math.
Download the Indicator
This custom indicator calculates MFI and automatically alerts when it enters the Overbought or Oversold zone based on your settings. It's available for both MetaTrader 4 and MetaTrader 5 below.
How to Install — MetaTrader 4
- Download the
mfi-alert.mq4file below. - Open MetaTrader 4 → click
File→Open Data Folder. - Place the file in the
MQL4/Indicatorsfolder. - Restart MetaTrader 4, then drag the indicator from the Navigator window onto the chart.
How to Install — MetaTrader 5
- Download the
mfi-alert.mq5file below. - Open MetaTrader 5 → click
File→Open Data Folder. - Place the file in the
MQL5/Indicatorsfolder. - Restart MetaTrader 5, then drag the indicator from the Navigator window onto the chart.
Both files are source code — open and review the full code before using it, for your own safety.