Hi dear,
Thank’s for sharing !
I’m not using PRT but MT4 instead… I’m beginner with MQL4 langage but I’ve tried to code it, it gives me something but the line isn’t really smoothed lol.
So I don’t know if it’s normal or not…
I joined a screenshot of my result (it gives me the pink line).
And following my MQL4, maybe somebody knows this langage and could help me to analyze it :
double fastMultiplier = (2.0 / (MACD_fastAvg + 1.0) );
double slowMultiplier = (2.0 / (MACD_slowAvg + 1.0) );
double signalMultiplier = (2.0 / (MACD_sigAvg + 1.0) );
//Print(“Fast Multiplier [” + fastMultiplier + “]”);
//Print(“Slow Multiplier [” + slowMultiplier + “]”);
//Print(“Signal Multiplier [” + signalMultiplier + “]”);
double prevEMAShort = 0.0;
double prevEMALong = 0.0;
double prevEMASignal = 0.0;
double priceMACD = 0.0;
if(i==0)
{
prevEMAShort = SimpleMA(i,MACD_fastAvg,close);
prevEMALong = SimpleMA(i,MACD_slowAvg,close);
prevEMASignal = SimpleMA(i,MACD_sigAvg,close);
} else {
prevEMAShort = ExtZeroLagShortDevBuffer[i-1];
prevEMALong = ExtZeroLagLongDevBuffer[i-1];
prevEMASignal = ExtZeroLagSignalDevBuffer[i-1];
}
double EMAShort1 = (close[i] – prevEMAShort) * fastMultiplier + prevEMAShort;
double EMAShort2 = (EMAShort1 – prevEMAShort) * fastMultiplier + prevEMAShort;
double DifferenceShort = EMAShort1 – EMAShort2;
double ZeroLagShort = EMAShort1 + DifferenceShort;
ExtZeroLagShortDevBuffer[i] = ZeroLagShort;
double EMALong1 = (close[i] – prevEMALong) * slowMultiplier + prevEMALong;
double EMALong2 = (EMALong1 – prevEMALong) * slowMultiplier + prevEMALong;
double DifferenceLong = EMALong1 – EMALong2;
double ZeroLagLong = EMALong1 + DifferenceLong;
ExtZeroLagLongDevBuffer[i] = ZeroLagLong;
double ZeroLagMACD = ZeroLagShort – ZeroLagLong;
double Signal1 = (ZeroLagMACD – prevEMASignal) * signalMultiplier + prevEMASignal;
double Signal2 = (Signal1 – prevEMASignal) * signalMultiplier + prevEMASignal;
double DifferenceSignal = Signal1 – Signal2;
double SignalMACD = Signal1 + DifferenceSignal;
ExtZeroLagSignalDevBuffer[i] = SignalMACD;
double macdValue = SignalMACD;
priceMACD = (macdValue+((1-slowMultiplier)*prevEMALong)-((1-fastMultiplier)*prevEMAShort))/(fastMultiplier-slowMultiplier);
ExtReverseZeroLagMacdBuffer[i]=NormalizeDouble(priceMACD, InpDecimalAccurate);