I had posted about getting some help creating a few functions in my qqe indicator
Heres the original code with all the details, apologies for not including originally! I'll be sure to do this moving forward
Need help with -
-Paint a cloud down to the zero line when the rsi_ma crosses 0
-Repaint the rsi_ma to red in an downtrend and green in an uptrend
# QQE Indicator
# Converted by Kory Gill for BenTen at useThinkScript.com
# Original https://www.tradingview.com/script/zwbe2plA-Ghosty-s-Zero-Line-QQE/
# Final Version of my QQE before my Leave for a few months 4/16/21 - Xiuying
# Whats been added-
# Points for crossings to let you know what to watch out for
# Labels for when it reaches O/S or O/B and colors change depending on level. Going from Less severity to most, It's Orange , Dark Orange, and Red. Red being the "Watch the **** out" Level.
# Oversold and Overbought levels were added and adjusted to my preferences.
# Added labels for instances where it crosses the 50
# Added Labels for 50 crosses and indicated to watch for Sup/Res
declare lower;
input RSI_Period = 20;
input Slow_Factor = 5;
input QQE = 4.236;
def Wilder_Period = RSI_Period * 2 - 1;
def vClose = close;
def rsi = RSI(price = vClose, length = RSI_Period).RSI;
def rsi_ma = MovingAverage(AverageType.EXPONENTIAL, rsi, Slow_Factor);
def atr_rsi = AbsValue(rsi_ma[1] - rsi_ma);
def atr_rsi_ma = MovingAverage(AverageType.EXPONENTIAL, atr_rsi, Wilder_Period);
def dar = MovingAverage(AverageType.EXPONENTIAL, atr_rsi_ma, Wilder_Period) * QQE;
def DeltaFastAtrRsi = dar;
def RSIndex = rsi_ma;
def newshortband = RSIndex + DeltaFastAtrRsi;
def newlongband = RSIndex - DeltaFastAtrRsi;
def longband = if RSIndex[1] > longband[1] and RSIndex > longband[1]
then Max(longband[1], newlongband)
else newlongband;
def shortband = if RSIndex[1] < shortband[1] and RSIndex < shortband[1]
then Min(shortband[1], newshortband)
else newshortband;
def trend = if Crosses(RSIndex, shortband[1])
then 1
else if Crosses(longband[1], RSIndex)
then -1
else if !IsNaN(trend[1])
then trend[1]
else 1;
def FastAtrRsiTL = if trend == 1
then longband
else shortband;
plot pFastAtrRsiTL = FastAtrRsiTL;
plot pRsiMa = rsi_ma;
plot line50 = 50;
plot OB = 67;
plot OS = 33;
plot care = if pRsiMa crosses 50 then pRsiMa else Double.NaN;
plot BReversal = if pRsiMa crosses below 30 then pRsiMa else Double.NaN;
plot SReversal = if pRsiMa crosses above 70 then pRsiMa else Double.NaN;
plot Cross = if pRsiMa crosses 50 then pRsiMa else Double.NaN;
BReversal.SetPaintingStrategy(paintingStrategy = PaintingStrategy.POINTS);
BReversal.SetLineWeight(3);
SReversal.SetPaintingStrategy(paintingStrategy = PaintingStrategy.POINTS);
SReversal.SetLineWeight(3);
Cross.SetPaintingStrategy(paintingStrategy = PaintingStrategy.POINTS);
Cross.SetLineWeight(2);
pRsiMa.SetDefaultColor(CreateColor(113, 225, 180));
OB.SetDefaultColor(color = Color.GRAY);
OS.SetDefaultColor(color = Color.GRAY);
#pFastAtrRsiTL.SetDefaultColor(CreateColor(225, 109, 47));
pFastAtrRsiTL.AssignValueColor(if pFastAtrRsiTL == pFastAtrRsiTL[1] then Color.RED else CreateColor(225, 109, 47));
AddLabel(yes, if rsi_ma > 50 then " QQE " else " QQE ", if rsi_ma > 50 then Color.GREEN else Color.RED);
Heres the original code with all the details, apologies for not including originally! I'll be sure to do this moving forward
Need help with -
-Paint a cloud down to the zero line when the rsi_ma crosses 0
-Repaint the rsi_ma to red in an downtrend and green in an uptrend
# QQE Indicator
# Converted by Kory Gill for BenTen at useThinkScript.com
# Original https://www.tradingview.com/script/zwbe2plA-Ghosty-s-Zero-Line-QQE/
# Final Version of my QQE before my Leave for a few months 4/16/21 - Xiuying
# Whats been added-
# Points for crossings to let you know what to watch out for
# Labels for when it reaches O/S or O/B and colors change depending on level. Going from Less severity to most, It's Orange , Dark Orange, and Red. Red being the "Watch the **** out" Level.
# Oversold and Overbought levels were added and adjusted to my preferences.
# Added labels for instances where it crosses the 50
# Added Labels for 50 crosses and indicated to watch for Sup/Res
declare lower;
input RSI_Period = 20;
input Slow_Factor = 5;
input QQE = 4.236;
def Wilder_Period = RSI_Period * 2 - 1;
def vClose = close;
def rsi = RSI(price = vClose, length = RSI_Period).RSI;
def rsi_ma = MovingAverage(AverageType.EXPONENTIAL, rsi, Slow_Factor);
def atr_rsi = AbsValue(rsi_ma[1] - rsi_ma);
def atr_rsi_ma = MovingAverage(AverageType.EXPONENTIAL, atr_rsi, Wilder_Period);
def dar = MovingAverage(AverageType.EXPONENTIAL, atr_rsi_ma, Wilder_Period) * QQE;
def DeltaFastAtrRsi = dar;
def RSIndex = rsi_ma;
def newshortband = RSIndex + DeltaFastAtrRsi;
def newlongband = RSIndex - DeltaFastAtrRsi;
def longband = if RSIndex[1] > longband[1] and RSIndex > longband[1]
then Max(longband[1], newlongband)
else newlongband;
def shortband = if RSIndex[1] < shortband[1] and RSIndex < shortband[1]
then Min(shortband[1], newshortband)
else newshortband;
def trend = if Crosses(RSIndex, shortband[1])
then 1
else if Crosses(longband[1], RSIndex)
then -1
else if !IsNaN(trend[1])
then trend[1]
else 1;
def FastAtrRsiTL = if trend == 1
then longband
else shortband;
plot pFastAtrRsiTL = FastAtrRsiTL;
plot pRsiMa = rsi_ma;
plot line50 = 50;
plot OB = 67;
plot OS = 33;
plot care = if pRsiMa crosses 50 then pRsiMa else Double.NaN;
plot BReversal = if pRsiMa crosses below 30 then pRsiMa else Double.NaN;
plot SReversal = if pRsiMa crosses above 70 then pRsiMa else Double.NaN;
plot Cross = if pRsiMa crosses 50 then pRsiMa else Double.NaN;
BReversal.SetPaintingStrategy(paintingStrategy = PaintingStrategy.POINTS);
BReversal.SetLineWeight(3);
SReversal.SetPaintingStrategy(paintingStrategy = PaintingStrategy.POINTS);
SReversal.SetLineWeight(3);
Cross.SetPaintingStrategy(paintingStrategy = PaintingStrategy.POINTS);
Cross.SetLineWeight(2);
pRsiMa.SetDefaultColor(CreateColor(113, 225, 180));
OB.SetDefaultColor(color = Color.GRAY);
OS.SetDefaultColor(color = Color.GRAY);
#pFastAtrRsiTL.SetDefaultColor(CreateColor(225, 109, 47));
pFastAtrRsiTL.AssignValueColor(if pFastAtrRsiTL == pFastAtrRsiTL[1] then Color.RED else CreateColor(225, 109, 47));
AddLabel(yes, if rsi_ma > 50 then " QQE " else " QQE ", if rsi_ma > 50 then Color.GREEN else Color.RED);