Click or drag to resize

Money Flow Index

The Money Flow Index (Mfi) indicator is volume-weighted momentum indicator developed to measure the strength of money flowing in and out of a security over a specified time period and to determine if there is too much or too little volume associated with the security (overbought and oversold conditions).  It is similar to Relative Strength Index (Rsi) in interpretation but volume weighting makes this indicator more rigid.  The indicator calculates the rate (intensity) on a 0 - 100 scale at which money is invested into a security by comparing "positive money flow" (invested) to "negative money flow" (withdrawn).

Market Signals

A security is considered Overbought (indicates market top) if the Mfi indicator reaches 80 and more. Similarly, a security is Oversold (market bottom) if the Mfi is 20 or less.


Money Flow Index 001

Money Flow Index 002

Money Flow Index 003

Money Flow Index 004

Money Flow Index 005

Money Flow Index 006

where N is a period for calculating indicator.

Chart Example

Money Flow Index 007

Implementation and Usage

To initialize Mfi use one of the following constructors:

Mfi – sets default values: period = 14

Mfi(Int32) – sets period

Mfi(TimeSpan) – sets time period


MFI - property to get current value.

 1// Create new instance
 2Mfi mfi = new Mfi(28);
 4// Number of stored values
 5mfi.HistoryCapacity = 2;
 7// Add new data point
 8mfi.Add(Bars.Current.Open, Bars.Current.High, Bars.Current.Low, Bars.Current.Close, Bars.Current.Volume);
10// Get indicator value
11double IndicatorValue = mfi.MFI;
13// Get previous value
14if (mfi.HistoryCount == 2)
16    double IndicatorPrevValue = mfi[1];