John Ehlers Adaptive RSI

Category: Indicators By: Horance Created: September 7, 2018, 7:24 AM
September 7, 2018, 7:24 AM
Indicators
0 Comments

This is an implementation of John Ehlers’ Adaptive RSI, as described in his book Rocket Science for Traders: Digital Signal Processing Applications (2001-07-20).

// Adaptive Relative Strength Index (RSI)
// Rocket Science for Traders: Digital Signal Processing Applications
// 2001-07-20 John F. Ehlers

Price = (high+low)/2
CycPart = .5

If BarIndex > 5 then
	Smooth = (4*Price + 3*Price[1] + 2*Price[2] + Price[3]) / 10
	Detrender = (.0962*Smooth + .5769*Smooth[2] - .5769*Smooth[4] - .0962*Smooth[6])*(.075*Period[1] + .54)

	// Compute InPhase and Quadrature components
	Q1 = (.0962*Detrender + .5769*Detrender[2] - .5769*Detrender[4] - .0962*Detrender[6])*(.075*Period[1] + .54)
	I1 = Detrender[3]

	// Advance the phase of I1 and Q1 by 90 degrees
	j1 = (.0962*I1 + .5769*I1[2] - .5769*I1[4] - .0962*I1[6])*(.075*Period[1] + .54)
	jQ = (.0962*Q1 + .5769*Q1[2] - .5769*Q1[4] - .0962*Q1[6])*(.075*Period[1] + .54)

	// Phasor addition for 3 bar averaging
	I2 = I1 - jQ
	Q2 = Q1 + j1

	// Smooth the I and Q components before applying the discriminator
	I2 = .2*I2 + .8*I2[1]
	Q2 = .2*Q2 + .8*Q2[1]

	// Homodyne Discriminator
	Re = I2*I2[1] + Q2*Q2[1]
	Im = I2*Q2[1] - Q2*I2[1]
	Re = .2*Re + .8*Re[1]
	Im = .2*Im + .8*Im[1]
	If Im <> 0 and Re <> 0 then
		Period = 360/ATAN(Im/Re)
	Endif
	If Period > 1.5*Period[1] then
		Period = 1.5*Period[1]
	Endif
	If Period < .67*Period[1] then
		Period = .67*Period[1]
	Endif
	If Period < 6 then
		Period = 6
	Endif
	If Period > 50 then
		Period = 50
	Endif
	Period = .2*Period + .8*Period[1]
	SmoothPeriod = .33*Period + .67*SmoothPeriod[1]

	CU = 0
	CD = 0
	For count = 0 to ROUND(CycPart*SmoothPeriod) - 1 do
		If Close[count] - Close[count + 1] > 0 then
			CU = CU + (Close[count] - Close[count + 1])
		Endif
		If Close[count] - Close[count + 1] < 0 then
			CD = CD + (Close[count + 1] - Close[count])
		Endif
	Next
	If CU + CD <> 0 then
		ARSI = 100*CU / (CU + CD)
	Endif
Endif

Return ARSI as "RSI"

The attached screenshot shows J. Welles Wilder’s RSI (black) and John Ehlers’ Adaptive RSI (red).

Download
Filename: John-Ehlers-Adaptive-RSI.itf
Downloads: 155
Horance Senior
This author is like an anonymous function, present but not directly identifiable. More details on this code architect as soon as they exit 'incognito' mode.
Author’s Profile

Comments

Logo Logo
Loading...