This technical indicator is the classical MACD (Moving Average Convergence Divergence) made with ALMA (Arnaud Legoux Moving Average) which formula can be found here in the Library: http://www.prorealcode.com/prorealtime-indicators/alma-arnaud-legoux-moving-average/ , instead of the normal MA.
Since this type of moving average considerably reduce lags, I thought it could be useful to rewrite the MACD with it.
Results are great on chart, the indicator react quickly than the classic MACD. While it can be accurate to detect new turning point of the trend, the false signals are reduced because of its quick adaptation to the price movement.
//PRC_ALMA MACD | indicator
//17.09.2016
//Nicolas @ www.prorealcode.com
//Sharing ProRealTime knowledge
//parameters
// Sigma = 4
// Offset = 0.85
// Fast = 12
// Slow = 26
// Signal = 9
Price = customclose
//---Fast MA
m = (Offset * (Fast - 1))
s = Fast/Sigma
WtdSum = 0
CumWt = 0
for k = 0 to Fast - 1 do
Wtd = Exp(-((k-m)*(k-m))/(2*s*s))
WtdSum = WtdSum + Wtd * Price[Fast - 1 - k]
CumWt = CumWt + Wtd
next
FastMA = WtdSum / CumWt
//---Slow MA
n = (Offset * (Slow - 1))
t = Slow/Sigma
SWtdSum = 0
SCumWt = 0
for k = 0 to Slow - 1 do
SWtd = Exp(-((k-n)*(k-n))/(2*t*t))
SWtdSum = SWtdSum + SWtd * Price[Slow - 1 - k]
SCumWt = SCumWt + SWtd
next
SlowMA = SWtdSum / SCumWt
//---MACD
ALMAMACD = FastMA-SlowMA
//---Signal MA
n = (Offset * (Signal - 1))
t = Signal/Sigma
SWtdSum = 0
SCumWt = 0
for k = 0 to Signal - 1 do
SWtd = Exp(-((k-n)*(k-n))/(2*t*t))
SWtdSum = SWtdSum + SWtd * ALMAMACD[Signal - 1 - k]
SCumWt = SCumWt + SWtd
next
SignalMACD = SWtdSum / SCumWt
RETURN ALMAMACD as "ALMA MACD", SignalMACD as "Signal line"