The Holt EMA indicator return the Holt method of smoothing an exponential average.
You’ll find in this post 2 different indicators: the first one is the Holt EMA displayed in only one color and compatible with prorealtime 10.2. The second one is the same moving average but displayd with different colors accordingly to its slope in degrees, I explain it below the first indicator code.
Coded by request on French forums.
//PRC_Holt EMA | indicator
//28.12.2016
//Nicolas @ www.prorealcode.com
//Sharing ProRealTime knowledge
//Converted from EasyLanguage version
// --- parameters
// gmma = 40
// alpha = 20
// ---
price = customclose
if alpha > 1 then
myalpha = 2.0/(alpha+1.0)
else
myalpha = alpha
endif
if gmma > 1 then
mygamma = 2.0/(gmma+1)
else
mygamma = gmma
endif
If barindex = 1 then
value1 = price
b = 0.0
else
value1 = (1-myalpha)*(value1[1] + b[1]) + myalpha*price
b = (1-mygamma)*b[1] + mygamma*(value1 - value1[1])
endif
HoltEMA = value1
return HoltEMA
The code uses the Holt EMA as a function, measures its slope in degrees and returns the moving average of different colors according to its degree of inclination. The ITF file of the indicator and an example of how it looks o chart is attached.
The formula of measuring the slope in degrees is rather nice I must admit. I can use it to make it rather a dynamic variation of the color in RGB type “rainbow”, because here we use only 5 different colors according to inclination of the slope and conditions tested on “angle1 ” and “angle2 “which are 2 parameterizable variables however. In short, a good exercise and a new addition to the library of codes for the happiness of all. I leave everyone to look at what it returns, I have not well understood if the Holt EMA has some interest on my side.
Attention this indicator with variation of color is compatible only version 10.3.
//PRC_Holt EMA Slope color | indicator
//28.12.2016
//Nicolas @ www.prorealcode.com
//Sharing ProRealTime knowledge
//Converted from EasyLanguage version
// --- parameters
//gmma = 40
//alpha = 20
//angle1 = 30
//angle2 = 60
// ---
price = customclose
if alpha > 1 then
myalpha = 2.0/(alpha+1.0)
else
myalpha = alpha
endif
if gmma > 1 then
mygamma = 2.0/(gmma+1)
else
mygamma = gmma
endif
If barindex = 1 then
value1 = price
K = 0.0
else
value1 = (1-myalpha)*(value1[1] + K[1]) + myalpha*price
K = (1-mygamma)*K[1] + mygamma*(value1 - value1[1])
endif
HoltEMA = value1
slope = atan((value1-(value1[1]+value1[2])/2)/1.5/ticksize)
condition2 = slope >= angle2
condition3 = slope >= angle1
condition4 = slope <= -1*angle2
condition5 = slope <= -1*angle1
//base color =
r=255
g=255
b=0
//conditionnal colors =
if condition2 then
r=0
g=102
b=0
elsif condition3 then
r=153
g=255
b=153
elsif condition4 then
r=153
g=0
b=0
elsif condition5 then
r=255
g=153
b=153
endif
return HoltEMA coloured(r,g,b) as "Holt EMA"