+1 888 340 6572

# Oscillators > Money Flow Indicator (Chaikin)

Article/Author: Omega Research Inc., 1999

File Includes:

Indicator - Money Flow
Function - ExpertMoneyFlow

Category: Indicator > Oscillators

Description:

Developed by Marc Chaikin, the Chaikin Money Flow indicator (CMF) is calculated by summing Accumulation Distribution over the given period and then dividing by the sum of volume over the given period, as can be seen in the formula section above.

Usage:

The most important signal generated by the Chaikin Oscillator occurs when prices reach a new high or new low for a swing, particularly at an overbought or oversold level, and the oscillator fails to exceed its previous extreme reading and then reverses direction.

1. Signals in the direction of the intermediate-term trend are more reliable than those against the trend.
2. A confirmed high or low does not imply any further price action in that direction. I view that as a non-event.

A second way to use the Chaikin Oscillator is to view a change of direction in the oscillator as a buy or sell signal, but only in the direction of the trend. For example, if we say that a stock that is above its 90-day moving average of price is in an uptrend, then an upturn of the oscillator while in negative territory would constitute a buy signal only if the stock were above its 90-day moving average - not below it. A downturn of the oscillator while in positive territory (above zero) would be a sell signal if the stock were below its 90-day moving average of closing prices.

Inputs:

Length - the parameter tells how many bars to calculate
OverSold - oversold level
OverBght - overbought level

EasyLanguage Code:
```INPUTS: LENGTH(14), OVERSOLD(20), OVERBGHT(80);
VARIABLES : MFHIGH(0), MFLOW(0), ASSETHIGH(0), ASSETLOW(0), MFAVG(0), AVG(0), STRING1("");

PLOT1(MONEYFLOW(LENGTH), "MONEYFLOW");

VALUE1 = AVERAGE(CLOSE, 9);
CONDITION1 = HIGH = HIGHEST(HIGH, 9) AND PLOT1 < HIGHEST(PLOT1, 9);
CONDITION2 = COUNTIF(PLOT1 > PLOT1[1], 2) = 2 AND COUNTIF(VALUE1 < VALUE1[1], 2) = 2;
CONDITION3 = LOW = LOWEST(LOW, 9) AND PLOT1 > LOWEST(PLOT1, 9);
CONDITION4 = COUNTIF(PLOT1 < PLOT1[1], 2) = 2 AND COUNTIF(VALUE1 > VALUE1[1], 2) = 2;
IF CONDITION1 OR CONDITION2 THEN