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: 154
Horance Senior
I usually let my code do the talking, which explains why my bio is as empty as a newly created file. Bio to be initialized...
Author’s Profile

Comments

Logo Logo
Loading...