MFI (the Money Flow Index) is a line that moves between 0 and 100 and, by default, is calculated from the latest 14 candles. A rising line means buying pressure is building; a falling line means selling pressure is building. Traditionally, readings above 80 count as overbought and readings below 20 as oversold.

It multiplies each candle's price by its volume, then weighs the candles that went up against the ones that went down, so high-volume candles carry more weight in the reading. The formula multiplies by volume, not by quote volume (the traded value), and picking the wrong column changes the result: on the same set of demo candles, multiplying by volume gives 75.05, while multiplying by quote volume by mistake gives 75.45.

1. What does MFI above 80 or below 20 mean?

The TradingView Help Center defines MFI as a tool for measuring buying and selling pressure, derived by analyzing price and volume together. It lists three kinds of signals: overbought and oversold, divergences, and failure swings. On where the two lines sit, the help page puts the traditional overbought zone above 80 and the oversold zone below 20, then adds straight away that these values are subjective and a technical analyst can set any thresholds they choose.

You can work out what 80 and 20 mean inside the formula by running it backwards. MFI = 100 − 100 ÷ (1 + money flow ratio), where the ratio is positive money flow divided by negative money flow:

Money flow ratioPlugged into the formulaMFI
4100 − 100 ÷ 580
1100 − 100 ÷ 250
0.25100 − 100 ÷ 1.2520

An MFI of 80 means that, across those 14 candles, the money flow of the candles whose typical price rose adds up to 4 times that of the candles whose typical price fell. At 20 it's the other way round, with the falling side 4 times the rising side. At 50 the two sides are even.

2. What are the four steps in the MFI formula?

  1. Typical price: (high + low + close) ÷ 3
  2. Raw money flow: typical price × volume
  3. Money flow ratio: 14-period positive money flow ÷ 14-period negative money flow. When a candle's typical price is higher than the previous candle's, its raw money flow goes into positive money flow; when it's lower, into negative money flow.
  4. MFI: 100 − 100 ÷ (1 + money flow ratio)

Every candle is compared with the one before it, so a 14-period MFI needs at least 15 candles. With the period cut to 3, four made-up candles show the whole calculation:

CandleHighLowCloseTypical priceVolumeRaw money flowCounted as
110298100100.001,000100,000Comparison base for candle 2 only
210599102102.001,500153,000Positive (102 > 100)
31049799100.001,200120,000Negative (100 < 102)
4107102103104.002,000208,000Positive (104 > 100)

Illustrative data, period of 3.

Positive money flow = 153,000 + 208,000 = 361,000, negative money flow = 120,000, ratio = 361,000 ÷ 120,000 ≈ 3.008, MFI = 100 − 100 ÷ 4.008 ≈ 75.05.

The positive/negative split is decided by typical price. A candle can close below the previous one and still have a higher typical price if its high climbed far enough: the previous typical price is 100, this candle has a high of 106, a low of 99 and a close of 99.5, so its typical price is (106 + 99 + 99.5) ÷ 3 = 101.5, and its money flow goes on the positive side.

3. Does the MFI formula multiply by volume or by quote volume?

By volume. TradingView's formula reads Typical Price x Volume, and the second term is Volume. If you recalculate MFI from exchange data yourself, take the right column: Binance's spot kline endpoint GET /api/v3/klines returns 12 fields per candle, indexed [0] to [11] in the docs, and more than one of them measures volume in some form. The indexes below are written exactly as the docs give them, counting from 0:

Index in the docsField name in the docsWhat it is
[2]HighHigh price
[3]LowLow price
[4]CloseClose price
[5]VolumeVolume in the base asset; for BNBUSDT, the number of BNB
[7]Quote asset volumeTraded value in the quote asset; for BNBUSDT, the amount of USDT

A request needs symbol and interval; limit defaults to 500 with a maximum of 1000. Without startTime and endTime you get the most recent candles, and if the last candle's close time ([6], Close time) hasn't arrived yet, drop it before calculating. The same docs spell out the base/quote split in the field notes for the 24-hour ticker endpoint: volume is Total trade volume (in base asset), and quoteVolume is Total trade volume (in quote asset).

To see how far a [7] mix-up throws the result, reuse the 4 candles from section 2: treat their volumes as [5] and give each candle a quote volume to stand in for [7], again with demo numbers:

CandleTypical priceVolumeQuote volumeTypical price × volumeTypical price × quote volumeCounted as
21021,500152,400153,00015,544,800Positive
31001,200120,600120,00012,060,000Negative
41042,000207,000208,00021,528,000Positive

Multiplying by volume, section 2 already gave 75.05. Multiplying by quote volume by mistake: positive money flow = 15,544,800 + 21,528,000 = 37,072,800, negative money flow = 12,060,000, ratio ≈ 3.074, MFI = 100 − 100 ÷ 4.074 ≈ 75.45.

The two readings are 0.40 apart. The gap is small because all four candles trade around 100, so quote volume and volume scale by almost the same multiple. Quote volume already has price built in: in its rolling window ticker endpoint, Binance's docs describe quoteVolume as Sum of (price * volume) for all trades. Multiply that by typical price again and higher-priced candles get extra weight. When prices across the 14 candles cover a wide range, a wrong-column reading can land further off.

If your own MFI doesn't match your charting software or someone else's screenshot, and you've already checked the trading pair, the candle timeframe and the length, the next thing to check is whether you took [5]. Multiply by the quote volume in [7] as if it were Volume and the readings won't line up.

4. How do you spot MFI divergences and failure swings?

A divergence is when price and MFI point in different directions. TradingView separates two kinds:

  • Bullish divergence: price makes a new low, but MFI's low is higher than its previous low;
  • Bearish divergence: price makes a new high, but MFI's high is lower than its previous high.

A failure swing looks at MFI alone; the help page says it is completely independent of price. It runs in four steps:

StepBullish failure swingBearish failure swing
1MFI drops below 20MFI rises above 80
2Bounces back above 20Falls back below 80
3Pulls back but stays above 20Rises slightly but stays below 80
4Breaks above its previous highDrops below its previous low

Run a string of demo readings through the bullish column: 18, 27, 23, 31. 18 is below 20; 27 is back above 20; 23 is the pullback and still above 20; 31 tops the earlier 27, so all four steps are complete. If the third number were 19, back under 20, the sequence wouldn't count.

The help page hedges its wording on both. A divergence can be read as a hint that a reversal may be coming, and a failure swing is described as a setup that could lead to a price reversal.

5. When do MFI and RSI readings disagree?

TradingView describes MFI as essentially RSI with volume added, which is why it can be used in much the same way. MFI was created by Gene Quong and Avrum Soudack.

Where the extra volume makes a difference shows up once you go back to the 4 candles in section 2. Set the volume of the last three to 1,000 and leave everything else alone: positive money flow = 102,000 + 104,000 = 206,000, negative money flow = 100,000, MFI = 100 − 100 ÷ (1 + 2.06) ≈ 67.32. In the original table the two rising candles had heavier volume, and the reading was 75.05, 7.73 higher.

Now the reverse. Go back to the original table and raise the volume of the falling third candle to 4,000: negative money flow = 100 × 4,000 = 400,000, positive money flow stays at 361,000, ratio = 0.9025, MFI ≈ 47.44. Two of the three candles rose and one fell, yet MFI lands below 50.

An indicator that only looks at price can't tell these two cases apart; MFI can. The trade-off is that its reading is tied to the volume data, so a different data source or a different column gives a different reading. OBV also builds volume in, but it adds or subtracts a candle's full volume depending on whether the close beat the previous close, and an OBV line that fails to confirm a new price high is read as a breakout without volume behind it. The ×100 version of Stoch RSI draws lines at 80 and 20 as well, but it measures where RSI sits within its own recent range and has nothing to do with volume.

6. Questions on MFI settings and overbought readings

Does price always fall once MFI goes above 80?

No. A reading above 80 doesn't decide where price goes next. TradingView's summary states that MFI shouldn't be used on its own as the only source of trade signals and can be combined with other indicators or chart patterns. moomoo's course page also notes that MFI can produce false signals and that divergences don't always lead to a price reversal.

Can the MFI length of 14 be changed?

Yes. The length input on TradingView's built-in MFI is the time period used to calculate MFI, and 14 is only the default. A shorter length puts fewer candles into the comparison, so a single high-volume candle moves the reading more; a longer length does the opposite. Once you've changed it, make sure anyone you compare readings with is using the same number.

Why is the same coin's MFI different on the 1-hour and daily charts?

Because 14 counts candles. A 14-period MFI on the 1-hour chart uses the price and volume of the latest 14 one-hour candles; on the daily chart it uses the latest 14 daily candles. The two are fed different data, so there's no reason for the readings to match. Before comparing readings, make sure both sides are on the same candle timeframe.