Reversing MACD

The Reversing MACD (RMACD) was authored by Johnny Dough in the Stocks And Commodities Magazine, January 2012. The MACD itself, the difference of 2 Exponential Moving Averages (EMAs), is a momentum Oscillator authored by Gerald Appel. The RMACD is a reverse engineering of the popular MACD Oscillator. That is, it calculates the price that will cause the MACD to be at a certain value. Three paths, MACD=0, MACD=previous MACD and an signal line (EMA of plot 2) are given. The MACD Indicator is also plotted on a seperate graph. The user may change the input (close), method for Moving Average (EMA) and period lengths. This indicator’s definition is further expressed in the condensed code given in the calculation below.

Click here for more information on the MACD


How To Trade Using the Reversing MACD

The Reversing MACD may be used in conjuction with other indicators. No trading signals are calculated with this indicator.

How To Access in MotiveWave

Go to the top menu, choose Study>Custom>Reversing MACD

or go to the top menu, choose Add Study, start typing in this study name until you see it appear in the list, click on the study name, click OK.

Important Disclaimer: The information provided on this page is strictly for informational purposes and is not to be construed as advice or solicitation to buy or sell any security. Please see our Risk Disclosure and Performance Disclaimer Statement.


//input = price, user defined, default is close
//method = moving average, user defined, default is EMA
//period1 = user defined, default is 12
//period2 = user defined, default is 26
//signalPeriod = user defined, default is 9
//index = current bar number

alphaX = 2.0 / (1 + period1);
alphaY = 2.0 / (1 + period2);
ema1 = ma(method, index, period1, input);
ema2 = ma(method, index, period2, input);
Plot1:macd = ema1 - ema2;
Plot2:macdSignal=ma(method, index, sigPeriod, MACD);
Plot3:hist = macd - macdSignal;
prevEma1 = ema1[index-1];
prevEma2 = ema2[index-1];
prevMacd = macd[index-1];
//substitute 0 for macd
macdValue = 0;
PlotPriceGraph1: pMacdLevel = (macdValue + ((1-alphaY) * prevEma2) - ((1-alphaX) * prevEma1)) / (alphaX - alphaY);
//substitute previous macd for macd   
macdValue = prevMacd;
PlotPriceGraph2: pMacdEq = (macdValue + ((1-alphaY) * prevEma2) - ((1-alphaX) * prevEma1)) / (alphaX - alphaY);
PlotPriceGraph3: signal = ma(method, index, sigPeriod, PMACDEQ);