function QQELine( indiValue, deltaRSIValue, smoothPeriod ) {
local prevVal, prevIndi, qqeValue, indi_sum;
local indi_diff, higherCond, lowerCond, result;
prevVal = prevIndi = 0;
qqeValue = Null;
indi_sum = indiValue + deltaRSIValue;
indi_diff = indiValue - deltaRSIValue;
for ( i = 1; i < BarCount; i++ ) {
prevVal = qqeValue[i - 1];
prevIndi = indiValue[i - 1];
higherCond = prevIndi > prevVal AND indiValue[i] > prevVal;
lowerCond = prevIndi < prevVal AND indiValue[i] < prevVal;
qqeValue[i] = Iif( indiValue[i] == prevVal, prevVal,
Iif( lowerCond, Min( prevVal, indi_sum[i] ),
Iif( higherCond, Max( prevVal, indi_diff[i] ),
Iif( indiValue[i] > prevVal, indi_diff[i], indi_sum[i] ) ) ) );
}
result = EMA( qqeValue, smoothPeriod );// EL XAverage is EMA
return result;
}
// Modified Exponential Moving Average
function MEMA( Price, Period ) {
local smoothing, result;
smoothing = 1 / Max( 1, Period );
result = AMA( Price, smoothing );
return result;
}
Price = Close;
RSI_Period = 14;
RSI_Period2 = 7;
ATR_Period = 14;
Delta_Period = 14;
Val_Delta1 = 2.618;
Val_Delta2 = 4.236;
Smoothing = 2;
suplines = True;
OverSold = MxFromString("[ 30;0;10]");
OverBought = MxFromString("[ 70;0;100]");
rsiVal = RSIa(C, RSI_Period);
rc = ROC(rsiVal, 1);
thRSI = Iif(rc < 0, Ref(rsiVal, -1), rsiVal);
tlRSI = Iif(rc > 0, Ref(rsiVal, -1), rsiVal);
trRSI = thRSI - tlRSI;
atrRSI = Mema(trRSI, ATR_Period );
deltaATR_1 = Mema(atrRSI, Delta_Period) * Val_Delta1;
trRSIFast = QQELine(rsiVal, deltaATR_1, Smoothing);
deltaATR_2 = Mema(atrRSI, Delta_Period)* Val_Delta2;
trRSISlow = QQELine(rsiVal, deltaATR_2, Smoothing);
fillColor = IIf(trRSIFast > trRSISlow, colorTurquoise, colorViolet);
Plot(rsiVal, "RSI", colorWhite, styleLine);
Plot(trRSIFast, "Fast", fillColor, styleline);
Plot(trRSISlow, "Slow", fillColor, styleline);
style_cloud = styleCloud | styleClipMinMax | styleNoLabel;
PlotOHLC(trRSIF ast, trRSIFast, trRSISlow, trRSISlow, "Fast Slow", fillColor, style_cloud);
if ( suplines ) {
for ( i = 0; i < 3; i++ ) {
Plotgrid( overbought[i][0 ], colorViolet );
Plotgrid( oversold[i][0], colorTurquoise );
}
}
Comments
Post a Comment