Download MetaTrader 5

Watch how to download trading robots for free

Interesting script?
So post a link to it -
let others appraise it

You liked the script? Try it in the MetaTrader 5 terminal

2010.02.03 14:01

Fractal Adaptive Moving Average (FrAMA) - indicator for MetaTrader 5

| English Русский 中文 Español Deutsch 日本語 Português

votes: 24
frama.mq5 (5.23 KB)view

Fractal Adaptive Moving Average technical Indicator (FRAMA) was developed by John Ehlers.

This indicator is constructed based on the algorithm of the Exponential Moving Average, in which the smoothing factor is calculated based on the current fractal dimension of the price series. The advantage of FRAMA is the possibility to follow strong trend movements and to sufficiently slow down at the moments of price consolidation.

All types of analysis used for Moving Averages can be applied to this indicator.

Fractal Adaptive Moving Average Indicator

Fractal Adaptive Moving Average Indicator


FRAMA(i) = A(i) * Price(i) + (1 - A(i)) * FRAMA(i-1)


  • FRAMA(i) - current value of FRAMA;
  • Price(i) - current price;
  • FRAMA(i-1) - previous value of FRAMA;
  • A(i) - current factor of exponential smoothing.

Exponential smoothing factor is calculated according to the below formula:

A(i) = EXP(-4.6 * (D(i) - 1))


  • D(i) - current fractal dimension;
  • EXP() - mathematical function of exponent.

Fractal dimension of a straight line is equal to one. It is seen from the formula that if D = 1, then A = EXP(-4.6 *(1-1)) = EXP(0) = 1. Thus if price changes in straight lines, exponential smoothing is not used, because in such a case the formula looks like this:

FRAMA(i) = 1 * Price(i) + (1 - i) * FRAMA(i-1) = Price(i)

I.e. the indicator exactly follows the price.

The fractal dimension of a plane is equal to two. From the formula we get that if D = 2, then the smoothing factor A = EXP(-4.6*(2-1)) = EXP(-4.6) = 0.01. Such a small value of the exponential smoothing factor is obtained at moments when price makes a strong saw-toothed movement. Such a strong slow-down corresponds to approximately 200-period simple moving average.

Formula of fractal dimension:

D = (LOG(N1 + N2) - LOG(N3))/LOG(2)

It is calculated based on the additional formula:

N(Length,i) = (HighestPrice(i) - LowestPrice(i))/Length


  • HighestPrice(i) - current maximal value for Length periods;
  • LowestPrice(i) - current minimal value for Length periods;

Values N1, N2 and N3 are respectively equal to:

N1(i) = N(Length,i)
N2(i) = N(Length,i + Length)
N3(i) = N(2 * Length,i)

TradePad_Sample TradePad_Sample

This is a simple example of user interface of information system with possibility to trade by pressing a button.

ObjChartSample ObjChartSample

The script illustrates control of chart properties using the classes from the Standard Library (CChart).

Double Exponential Moving Average (DEMA) Double Exponential Moving Average (DEMA)

It is used for smoothing price series and is applied directly on a price chart of a financial security.

Triple Exponential Moving Average (TEMA) Triple Exponential Moving Average (TEMA)

TEMA can be used instead of traditional moving averages. It can be used for smoothing price data, as well as for smoothing other indicators.