Monday – Friday : 9:00 AM – 6:30 PM

DeMarker and Range Expansion Index

Elevate your technical analysis with the DeMarker and Range Expansion Index AFL code for Amibroker. This comprehensive code, supported by the accurate Amibroker data feed, combines DeMarker analysis with range expansion insights. Download this AFL code to refine your understanding of market momentum and volatility, enabling more informed decisions based on the dynamic interplay of DeMarker signals and range expansion dynamics.


/* AFL Formula Library: DeMarker and Range Expansion Index

The DeMarker indicator is an attempt to overcome the shortcomings of classical 
overbought / oversold indicators. The DeMarker Indicator identifies potential 
price bottoms and tops. It accomplishes this by making price comparisons from 
one bar to the next and measuring the level of price demand. The formula for 
DeMarker is quite simple - in AFL it looks like this: */

** Tom Demark's DeMarker Indicator
** AFL Implementation by Tomasz Janeczko

highm = IIf( H > Ref( H, -1 ), H - Ref( H, - 1), 0 );
lowm = IIf( L < Ref( L, -1 ), Ref( L, - 1 ) - L, 0 );

DeMarker = 100 * Sum( highm, 13 )/( Sum( lowm, 13 ) + Sum( highm, 13 ) );

Graph0 = DeMarker;

/* DeMarker should be interpreted as other overbought / oversold indicators such 
as RSI with the levels of 30 and 70. Compared to RSI it is smoother but still able 
to detect tops and bottoms a little bit better.

Range Expansion Index

The DeMark Range Expansion Index is a market-timing oscillator described inDeMark on 
Day Trading Options, by T.R. DeMark and T.R. Demark, Jr., McGrawHill, 1999. The 
oscillator is arithmetically calculated and is designed toovercome problems with 
exponentially calculated oscillators, like MACD. The TD REI oscillator typically 
produces values of -100 to +100 with 45 or higher indicating overbought conditions 
and -45 or lower indicating oversold.Here is how Tom DeMark describes the calculation 
of Range Expansion Index:

"The first step in calculating the REI is to add together the respective differences 
between the current day's high and the high two days earlier and the current day's low 
and the low two days earlier. These values will be positive or negative depending on 
whether the current day's high and low are greater or less than the high and low two 
days earlier. To prevent buying or selling prematurely into a steep price decline or 
advance, two additionalconditions should be met to qualify a positive or negative value 
on a particular day: 1) either the high two days earlier must be greater than or equal 
to the close seven or eight days ago, or the current day's high must be greater than or 
equal to the low five or six days ago; 2) either the low two days earlier must be less 
than or equal to the close seven or eight days ago, or the current day's low must be less 
than or equal to the high five or six days ago. If either of these conditions are not 
satisfied, a zero value is assigned to that day. If they both are, the daily values 
(the differences between the highs and lows) are summed , and the specific value for 
that next day is determined. Next, all the positives and negative values are added 
together over a five-day period. This value is then divided by the absolute value 
price movement of each day over the five-day period. The numerator of the calculation 
can be either positive, negative or zero, because each day's value is summed for five 
days, but the denominator is always positive because it is only concerned with the 
differential price movement itself. This value is then multiplied by 100. Consequently, 
the REI can fluctuate between +100 and -100." */

// Following this description I wrote the AFL formula for REI:

** Tom DeMark's Range Expansion Index 
** AFL Implementation by Tomasz Janeczko 

HighMom = H - Ref( H, -2 );
LowMom = L - Ref( L, -2 );

Cond1 = ( H >= Ref( L,-5) OR H >= Ref( L, -6 ) ); 
Cond2 = ( Ref( H, -2 ) >= Ref( C, -7 ) OR Ref( H, -2 ) >= Ref( C, -8 ) ); 
Cond3 = ( L <= Ref( H, -5 ) OR L <= Ref( H, -6) ); 
Cond4 = ( Ref( L, -2 ) <= Ref( C, -7 ) OR Ref( L, -2 ) <= Ref( C, -8 ) );

Cond = ( Cond1 OR Cond2 ) AND ( Cond3 OR Cond4 );

Num = IIf( Cond, HighMom + LowMom, 0 );
Den = abs( HighMom ) + abs( LowMom );

TDREI = 100 * Sum( Num, 5 )/Sum( Den, 5 ) ;

Graph0 = TDREI;

/* DeMark advises against trading in extreme overbought OR oversold conditionsindicated by six 
OR more bars above OR below the 45 thresholds. for more information on calculation AND using 
both TD REI AND DeMarker indicator check this Tom DeMark's article. */


Open chat
Hi, how can I help you?