Support/Resistance that ends once touched

Department

New member
Hello,
I was wondering if someone knew how to code a price level that starts and ends on a condition? I have certain bars I'd like to trigger a price level. This level would then stop at the point were price touched it again.
My current code is below with the level indicated but I don't know how to make the line appear and only extend to the next time that price is touched.
Code:
input history = 10;
input multiplier = 1.5;

def highLow = high - low;
def body = bodyHeight();
def greenCandle = open < close;
def redCandle = close < open;
def volatility = atr(history);
def significantBar = volatility * multiplier;
def imBody = (body > highLow* 0.5) and (highLow >= significantBar);

assignPriceColor(if imBody and greenCandle then Color.dark_green else Color.Current);
assignPriceColor(if imBody and redCandle then Color.dark_red else Color.Current);

#These would be the price levels drawn on the chart.
#They start at the previous candle's high/low and end once price returns to that price.
#Green Candles
plot supportLevel = if imBody and greenCandle then high[1] else double.NaN;
supportLevel.setPaintingStrategy(PaintingStrategy.VALUES_ABOVE);

#Red Candles
plot resistenceLevel = if imBody and redCandle then low[1] else double.NaN;
resistenceLevel.setPaintingStrategy(PaintingStrategy.VALUES_ABOVE);

This would ideally result in a graph as shown below:
cRJfU42.png
 
Solution
Updated the code for this indicator to make better use of the plots.
I made it way to complicated the first time around, I blame lack of sleep.

Also added a basic strategy to buy and sell on bar open after signal bar,
and added more plots. (My kingdom for an array.....😩..lol).

@Stock Tradin, I would appreciate some more feed back from you as I'm not a chart/data analyst by any means.
I'm a coder, that's what I know, so that's what I do....
and it doesn't look like we will be hearing from @Department any time soon.
Also working on a script to buy 1 and sell 1 after every opposite bar and set multiple stops (sell 1 or buy 1) at the corresponding price levels.
Code:
#Support and Reisitance Lines That End When Price Returns to...
This isn't the most elegant solution, but without the ability to create arrays and my insomnia wearing off, this is about it.
sp1.png


The plots have to be reused and may stop before they are "touched". It depends on how many lines are being plotted at once.
If you want the older plots to continue until they are touched, then you will have to copy and paste the bottom sections of my edits and index the variables accordingly.
Code:
input history = 10;
input multiplier = 1.5;

def highLow = high - low;
def body = BodyHeight();
def greenCandle = open < close;
def redCandle = close < open;
def volatility = ATR(history);
def significantBar = volatility * multiplier;
def imBody = (body > highLow * 0.5) and (highLow >= significantBar);

AssignPriceColor(if imBody and greenCandle then Color.DARK_GREEN else Color.CURRENT);
AssignPriceColor(if imBody and redCandle then Color.DARK_RED else Color.CURRENT);

#These would be the price levels drawn on the chart.
#They start at the previous candle's high/low and end once price returns to that price.
#Green Candles
plot supportLevel = if imBody and greenCandle then high[1] else Double.NaN;
supportLevel.SetPaintingStrategy(PaintingStrategy.VALUES_ABOVE);

#######################################################################################
#Code edit by Svanoy
#Continuation of Support Level Line.
def SLine = If !IsNaN(supportLevel) then supportLevel else SLine[1];
#Check for touch.
def STouched = fold s = 0 to 1 with ssum = 0 do if low<=Sline then ssum + 1 else ssum;
#Define end of Support Line.
def SLineEnd = If Sline!=high[1] and STouched then Double.NaN else If SLine==high[1] and !IsNaN(SupportLevel) then SLine else SlineEnd[1];
#Plot Support Line.
plot SLineP = SLineEnd;
SLineP.SetPaintingStrategy(PaintingStrategy.HORIZONTAL );
SLineP.SetDefaultColor(Color.GREEN);
SLineP.SetLineWeight(1);
#----------------------------------------------------------------------------------
#Continuation of Support Level Line 1.
def SLine2 = If SLine!=SLine[1] then SLine[1] else SLine2[1];
#Check for touch.
def STouched2 = fold s2 = 0 to 1 with ssum2 = 0 do if low<=Sline2 then ssum2 + 1 else ssum2;
#Define end of Support Line.
def SLineEnd2 = If STouched2 then Double.NaN else If SLine!=SLine[1] and !IsNaN(SLineP[1]) then SLineP[1] else SlineEnd2[1];
#Plot Support Line.
plot SLineP2 = SLineEnd2;
SLineP2.SetPaintingStrategy(PaintingStrategy.HORIZONTAL );
SLineP2.SetDefaultColor(Color.GREEN);
SLineP2.SetLineWeight(1);
#----------------------------------------------------------------------------------
#Continuation of Support Level Line 2.
#Copy and Paste this section to add more Support lines.
def SLine3 = If SLine2!=SLine2[1] then SLine2[1] else SLine3[1];
#Check for touch.
def STouched3 = fold s3 = 0 to 1 with ssum3 = 0 do if low<=Sline3 then ssum3 + 1 else ssum3;
#Define end of Support Line.
def SLineEnd3 = If STouched3 then Double.NaN else If SLine2!=SLine2[1] and !IsNaN(SLineP2[1]) then SLineP2[1] else SlineEnd3[1];
#Plot Support Line.
plot SLineP3 = SLineEnd3;
SLineP3.SetPaintingStrategy(PaintingStrategy.HORIZONTAL );
SLineP3.SetDefaultColor(Color.GREEN);
SLineP3.SetLineWeight(1);
#######################################################################################


#Red Candles
plot resistenceLevel = if imBody and redCandle then low[1] else Double.NaN;
resistenceLevel.SetPaintingStrategy(PaintingStrategy.VALUES_ABOVE);

#######################################################################################
#Code edit by Svanoy
#Continuation of Resistence Level Line.
def RLine = If !IsNaN(resistenceLevel) then resistenceLevel else RLine[1];
#Check for touch.
def RTouched = fold r = 0 to 1 with rsum = 0 do if high>=Rline then rsum + 1 else rsum;
#Define end of Resistence Line.
def RLineEnd = If Rline!=low[1] and RTouched then Double.NaN else If RLine==low[1] and !IsNaN(ResistenceLevel) then RLine else RlineEnd[1];
#Plot Resistence Line.
plot RLineP = RLineEnd;
RLineP.SetPaintingStrategy(PaintingStrategy.HORIZONTAL );
RLineP.SetDefaultColor(Color.RED);
RLineP.SetLineWeight(1);
#----------------------------------------------------------------------------------
#Continuation of Resistence Level Line 1.
def RLine2 = If RLine!=RLine[1] then RLine[1] else RLine2[1];
#Check for touch.
def RTouched2 = fold r2 = 0 to 1 with rsum2 = 0 do if high>=Rline2 then rsum2 + 1 else rsum2;
#Define end of Resistence Line.
def RLineEnd2 = If RTouched2 then Double.NaN else If RLine!=RLine[1] and !IsNaN(RLineP[1]) then RLineP[1] else RlineEnd2[1];
#Plot Resistence Line.
plot RLineP2 = RLineEnd2;
RLineP2.SetPaintingStrategy(PaintingStrategy.HORIZONTAL );
RLineP2.SetDefaultColor(Color.RED);
RLineP2.SetLineWeight(1);
#----------------------------------------------------------------------------------
#Continuation of Resistence Level Line 2.
#Copy and Paste this section to add more Resistence lines.
def RLine3 = If RLine2!=RLine2[1] then RLine2[1] else RLine3[1];
#Check for touch.
def RTouched3 = fold r3 = 0 to 1 with rsum3 = 0 do if high>=Rline3 then rsum3 + 1 else rsum3;
#Define end of Resistence Line.
def RLineEnd3 = If RTouched3 then Double.NaN else If RLine2!=RLine2[1] and !IsNaN(RLineP2[1]) then RLineP2[1] else RlineEnd3[1];
#Plot Resistence Line.
plot RLineP3 = RLineEnd3;
RLineP3.SetPaintingStrategy(PaintingStrategy.HORIZONTAL );
RLineP3.SetDefaultColor(Color.RED);
RLineP3.SetLineWeight(1);
#######################################################################################
 
Last edited:
Svanoy, is there a way to have this place the line at the close of a red bar and the open of a green bar? And also can tell me what is it using to create the line....is it volume, is it just high and lows? And can be adjusted to be created based on volume....such as Price Volume Bar?
 
People don't know about this strategy, but this is the best of the best right here!!! This is a 100% strategy that works! Not 95 or even 99%....100%!!! The only question about it is "WHEN"....that's it....when......run it, do back testing and you'll see what I'm talking about!
 
@naquan24
I didn't write the original script, so I never really looked at criteria used, I just created the plots requested.
@Department would probably be able to tell you.
I will look at it again when I get time and see if the plots can be adjusted.
 
Hello,
I was wondering if someone knew how to code a price level that starts and ends on a condition? I have certain bars I'd like to trigger a price level. This level would then stop at the point were price touched it again.
My current code is below with the level indicated but I don't know how to make the line appear and only extend to the next time that price is touched.
Code:
input history = 10;
input multiplier = 1.5;

def highLow = high - low;
def body = bodyHeight();
def greenCandle = open < close;
def redCandle = close < open;
def volatility = atr(history);
def significantBar = volatility * multiplier;
def imBody = (body > highLow* 0.5) and (highLow >= significantBar);

assignPriceColor(if imBody and greenCandle then Color.dark_green else Color.Current);
assignPriceColor(if imBody and redCandle then Color.dark_red else Color.Current);

#These would be the price levels drawn on the chart.
#They start at the previous candle's high/low and end once price returns to that price.
#Green Candles
plot supportLevel = if imBody and greenCandle then high[1] else double.NaN;
supportLevel.setPaintingStrategy(PaintingStrategy.VALUES_ABOVE);

#Red Candles
plot resistenceLevel = if imBody and redCandle then low[1] else double.NaN;
resistenceLevel.setPaintingStrategy(PaintingStrategy.VALUES_ABOVE);

This would ideally result in a graph as shown below:
cRJfU42.png
Department, this is a great support and resistance level strategy....I wanted to know how you based the levels on ...is it volume or it price differation?
 
@Stock Tradin
People don't know about this strategy, but this is the best of the best right here!!! This is a 100% strategy that works! Not 95 or even 99%....100%!!! The only question about it is "WHEN"....that's it....when......run it, do back testing and you'll see what I'm talking about!
Could you please elaborate. Apparently I am not seeing the same results you are.
What do you conisder as buy/sell/exit signals?
 
thanks for getting back to Svanoy.....I was asking when you was creating the plot points...can you tell me what what was used to determine those points? Was the volume or was it when a bar had a huge price increase or decrease? And also can it the script be edited to create the plots based on volume.
 
@Stock Tradin

Could you please elaborate. Apparently I am not seeing the same results you are.
What do you conisder as buy/sell/exit signals?
Sooooo you don't see that the line is always filled no matter if it takes a minute, an hour....a day, a week or a month??? There's more to this then just an indicator....when this triggers, it actually shows you the target, it's your job to figure out where you want to enter....all I will say is that it has to do with volume to make the decision to enter....picture is of my trade on KSCP on Friday.....

 
Last edited by a moderator:
@Stock Tradin
I wouldn't say always.
I'm seeing price retracing of a previous range.
There are plenty of lines on that same stock that never filled, they just stop being plotted due to the script limitations.
That same stock has a line at $7.09 not filled and last close in afterhours was $22.00.
Think it will come back down to $7.09?
 
@Stock Tradin
I wouldn't say always.
I'm seeing price retracing of a previous range.
There are plenty of lines on that same stock that never filled, they just stop being plotted due to the script limitations.
That same stock has a line at $7.09 not filled and last close in afterhours was $22.00.
Think it will come back down to $7.09?
Yup.... Set an alert and wait.... While back testing.... Extended those lines and see it for yourself.....
 
Updated the code for this indicator to make better use of the plots.
I made it way to complicated the first time around, I blame lack of sleep.

Also added a basic strategy to buy and sell on bar open after signal bar,
and added more plots. (My kingdom for an array.....😩..lol).

@Stock Tradin, I would appreciate some more feed back from you as I'm not a chart/data analyst by any means.
I'm a coder, that's what I know, so that's what I do....
and it doesn't look like we will be hearing from @Department any time soon.
Also working on a script to buy 1 and sell 1 after every opposite bar and set multiple stops (sell 1 or buy 1) at the corresponding price levels.
Code:
#Support and Reisitance Lines That End When Price Returns to Line.
#Original idea by Department
#Coded by Svanoy
#https://usethinkscript.com/threads/support-resistance-that-ends-once-touched.9491/#post-89067

######################################################################################
#Hints.###############################################################################
######################################################################################
#The Start_Date input should be changed to the 2nd day displayed on your chart.#######
#The Start_Amt input is for margin requirements (if any) or you can just set to zero.
#Trade size is 1.#####################################################################
######################################################################################

######################################################################################
#Definition of Signal.################################################################
######################################################################################

input history = 10;
input multiplier = 1.5;
def Bar_Open = open;
def highLow = high - low;
def greenCandle = open < close;
def redCandle = close < open;
def body = BodyHeight();
def volatility = ATR(history, AverageType.WILDERS);
def significantBar = volatility * multiplier;
def imBody = (body > highLow * 0.5) and (highLow >= significantBar);

AssignPriceColor(if imBody and greenCandle then Color.LIME else Color.CURRENT);
AssignPriceColor(if imBody and redCandle then Color.DARK_RED else Color.CURRENT);

#######################################################################################
#Define Level Plot Triggers..##########################################################
#######################################################################################
def RedBar = imBody and redCandle and low[1]>close;
def GreenBar = imBody and greenCandle and high[1]<close;

######################################################################################
#Defintions of Support Levels.########################################################
######################################################################################
plot SupportLevel = if GreenBar then high[1] else Double.NaN;
SupportLevel.SetPaintingStrategy(PaintingStrategy.VALUES_ABOVE);

def SLine0;
def SLine1;
def SLine2;
def SLine3;
def SLine4;
def SLine5;
def SLine6;
def SLine7;
def SLine8;
def SLine9;
def SLine10;
def SLine11;
def SLine12;
def SLine13;
def SLine14;
def SLine15;
def SLine16;
def SLine17;
def SLine18;
def SLine19;
def SLine20;

def SLineCount;
if IsNaN(SupportLevel) and (!IsNaN(SLine0[1]) and low<=SLine0[1]) { SLineCount=SLineCount[1]-1;
}else if IsNaN(SupportLevel) and (!IsNaN(SLine1[1]) and low<=SLine1[1]) { SLineCount=SLineCount[1]-1;
}else if IsNaN(SupportLevel) and (!IsNaN(SLine2[1]) and low<=SLine2[1]) { SLineCount=SLineCount[1]-1;
}else if IsNaN(SupportLevel) and (!IsNaN(SLine3[1]) and low<=SLine3[1]) { SLineCount=SLineCount[1]-1;
}else if IsNaN(SupportLevel) and (!IsNaN(SLine4[1]) and low<=SLine4[1]) { SLineCount=SLineCount[1]-1;
}else if IsNaN(SupportLevel) and (!IsNaN(SLine5[1]) and low<=SLine5[1]) { SLineCount=SLineCount[1]-1;
}else if IsNaN(SupportLevel) and (!IsNaN(SLine6[1]) and low<=SLine6[1]) { SLineCount=SLineCount[1]-1;
}else if IsNaN(SupportLevel) and (!IsNaN(SLine7[1]) and low<=SLine7[1]) { SLineCount=SLineCount[1]-1;
}else if IsNaN(SupportLevel) and (!IsNaN(SLine8[1]) and low<=SLine8[1]) { SLineCount=SLineCount[1]-1;
}else if IsNaN(SupportLevel) and (!IsNaN(SLine9[1]) and low<=SLine9[1]) { SLineCount=SLineCount[1]-1;
}else if IsNaN(SupportLevel) and (!IsNaN(SLine10[1]) and low<=SLine10[1]) { SLineCount=SLineCount[1]-1;
}else if IsNaN(SupportLevel) and (!IsNaN(SLine11[1]) and low<=SLine11[1]) { SLineCount=SLineCount[1]-1;
}else if IsNaN(SupportLevel) and (!IsNaN(SLine12[1]) and low<=SLine12[1]) { SLineCount=SLineCount[1]-1;
}else if IsNaN(SupportLevel) and (!IsNaN(SLine13[1]) and low<=SLine13[1]) { SLineCount=SLineCount[1]-1;
}else if IsNaN(SupportLevel) and (!IsNaN(SLine14[1]) and low<=SLine14[1]) { SLineCount=SLineCount[1]-1;
}else if IsNaN(SupportLevel) and (!IsNaN(SLine15[1]) and low<=SLine15[1]) { SLineCount=SLineCount[1]-1;
}else if IsNaN(SupportLevel) and (!IsNaN(SLine16[1]) and low<=SLine16[1]) { SLineCount=SLineCount[1]-1;
}else if IsNaN(SupportLevel) and (!IsNaN(SLine17[1]) and low<=SLine17[1]) { SLineCount=SLineCount[1]-1;
}else if IsNaN(SupportLevel) and (!IsNaN(SLine18[1]) and low<=SLine18[1]) { SLineCount=SLineCount[1]-1;
}else if IsNaN(SupportLevel) and (!IsNaN(SLine19[1]) and low<=SLine19[1]) { SLineCount=SLineCount[1]-1;
}else if IsNaN(SupportLevel) and (!IsNaN(SLine20[1]) and low<=SLine20[1]) { SLineCount=SLineCount[1]-1;
} else if GreenBar and SLineCount[1] == 20 {
    SLineCount = 0;
} else if GreenBar {
    SLineCount = SLineCount[1] + 1;
} else {
    SLineCount = SLineCount[1];
}

#green candles
######################################################################################
#Plots of Support Levels.#############################################################
######################################################################################
SLine0 = if !IsNaN(SupportLevel) and SLineCount == 0 then SupportLevel else if !IsNaN(SLine0[1]) and low <= SLine0[1] then Double.NaN else SLine0[1];
plot SLineP0 = if SLine0 > 0 then SLine0 else Double.NaN;
SLineP0.SetStyle(Curve.POINTS);
SLineP0.SetDefaultColor(Color.LIGHT_GREEN);
SLineP0.SetLineWeight(1);
SLineP0.HideBubble();
#----------------------------------------------------------------------------------
SLine1 = if !IsNaN(SupportLevel) and SLineCount == 1 then SupportLevel else if !IsNaN(SLine1[1]) and low <= SLine1[1] then Double.NaN else SLine1[1];
plot SLineP1 = if SLine1 > 0 then SLine1 else Double.NaN;
SLineP1.SetStyle(Curve.POINTS);
SLineP1.SetDefaultColor(Color.LIGHT_GREEN);
SLineP1.SetLineWeight(1);
SLineP1.HideBubble();
#----------------------------------------------------------------------------------
SLine2 = if !IsNaN(SupportLevel) and SLineCount == 2 then SupportLevel else if !IsNaN(SLine2[1]) and low <= SLine2[1] then Double.NaN else SLine2[1];
plot SLineP2 = if SLine2 > 0 then SLine2 else Double.NaN;
SLineP2.SetStyle(Curve.POINTS);
SLineP2.SetDefaultColor(Color.LIGHT_GREEN);
SLineP2.SetLineWeight(1);
SLineP2.SetLineWeight(1);
SLineP2.HideBubble();
#----------------------------------------------------------------------------------
SLine3 = if !IsNaN(SupportLevel) and SLineCount == 3 then SupportLevel else if !IsNaN(SLine3[1]) and low <= SLine3[1] then Double.NaN else SLine3[1];
plot SLineP3 = if SLine3 > 0 then SLine3 else Double.NaN;
SLineP3.SetStyle(Curve.POINTS);
SLineP3.SetDefaultColor(Color.LIGHT_GREEN);
SLineP3.SetLineWeight(1);
SLineP3.SetLineWeight(1);
SLineP3.HideBubble();
#----------------------------------------------------------------------------------
SLine4 = if !IsNaN(SupportLevel) and SLineCount == 4 then SupportLevel else if !IsNaN(SLine4[1]) and low <= SLine4[1] then Double.NaN else SLine4[1];
plot SLineP4 = if SLine4 > 0 then SLine4 else Double.NaN;
SLineP4.SetStyle(Curve.POINTS);
SLineP4.SetDefaultColor(Color.LIGHT_GREEN);
SLineP4.SetLineWeight(1);
SLineP4.SetLineWeight(1);
SLineP4.HideBubble();
#----------------------------------------------------------------------------------
SLine5 = if !IsNaN(SupportLevel) and SLineCount == 5 then SupportLevel else if !IsNaN(SLine5[1]) and low <= SLine5[1] then Double.NaN else SLine5[1];
plot SLineP5 = if SLine5 > 0 then SLine5 else Double.NaN;
SLineP5.SetStyle(Curve.POINTS);
SLineP5.SetDefaultColor(Color.LIGHT_GREEN);
SLineP5.SetLineWeight(1);
SLineP5.SetLineWeight(1);
SLineP5.HideBubble();
#----------------------------------------------------------------------------------
SLine6 = if !IsNaN(SupportLevel) and SLineCount == 6 then SupportLevel else if !IsNaN(SLine6[1]) and low <= SLine6[1] then Double.NaN else SLine6[1];
plot SLineP6 = if SLine6 > 0 then SLine6 else Double.NaN;
SLineP6.SetStyle(Curve.POINTS);
SLineP6.SetDefaultColor(Color.LIGHT_GREEN);
SLineP6.SetLineWeight(1);
SLineP6.SetLineWeight(1);
SLineP6.HideBubble();
#----------------------------------------------------------------------------------
SLine7 = if !IsNaN(SupportLevel) and SLineCount == 7 then SupportLevel else if !IsNaN(SLine7[1]) and low <= SLine7[1] then Double.NaN else SLine7[1];
plot SLineP7 = if SLine7 > 0 then SLine7 else Double.NaN;
SLineP7.SetStyle(Curve.POINTS);
SLineP7.SetDefaultColor(Color.LIGHT_GREEN);
SLineP7.SetLineWeight(1);
SLineP7.SetLineWeight(1);
#----------------------------------------------------------------------------------
SLine8 = if !IsNaN(SupportLevel) and SLineCount == 8 then SupportLevel else if !IsNaN(SLine8[1]) and low <= SLine8[1] then Double.NaN else SLine8[1];
plot SLineP8 = if SLine8 > 0 then SLine8 else Double.NaN;
SLineP8.SetStyle(Curve.POINTS);
SLineP8.SetDefaultColor(Color.LIGHT_GREEN);
SLineP8.SetLineWeight(1);
SLineP8.SetLineWeight(1);
SLineP8.HideBubble();
#----------------------------------------------------------------------------------
SLine9 = if !IsNaN(SupportLevel) and SLineCount == 9 then SupportLevel else if !IsNaN(SLine9[1]) and low <= SLine9[1] then Double.NaN else SLine9[1];
plot SLineP9 = if SLine9 > 0 then SLine9 else Double.NaN;
SLineP9.SetStyle(Curve.POINTS);
SLineP9.SetDefaultColor(Color.LIGHT_GREEN);
SLineP9.SetLineWeight(1);
SLineP9.SetLineWeight(1);
SLineP9.HideBubble();
#----------------------------------------------------------------------------------
SLine10 = if !IsNaN(SupportLevel) and SLineCount == 10 then SupportLevel else if !IsNaN(SLine10[1]) and low <= SLine10[1] then Double.NaN else SLine10[1];
plot SLineP10 = if SLine10 > 0 then SLine10 else Double.NaN;
SLineP10.SetStyle(Curve.POINTS);
SLineP10.SetDefaultColor(Color.LIGHT_GREEN);
SLineP10.SetLineWeight(1);
SLineP10.SetLineWeight(1);
SLineP10.HideBubble();
#----------------------------------------------------------------------------------
SLine11 = if !IsNaN(SupportLevel) and SLineCount == 11 then SupportLevel else if !IsNaN(SLine11[1]) and low <= SLine11[1] then Double.NaN else SLine11[1];
plot SLineP11 = if SLine11 > 0 then SLine11 else Double.NaN;
SLineP11.SetStyle(Curve.POINTS);
SLineP11.SetDefaultColor(Color.LIGHT_GREEN);
SLineP11.SetLineWeight(1);
SLineP11.SetLineWeight(1);
SLineP11.HideBubble();
#----------------------------------------------------------------------------------
SLine12 = if !IsNaN(SupportLevel) and SLineCount == 12 then SupportLevel else if !IsNaN(SLine12[1]) and low <= SLine12[1] then Double.NaN else SLine12[1];
plot SLineP12 = if SLine12 > 0 then SLine12 else Double.NaN;
SLineP12.SetStyle(Curve.POINTS);
SLineP12.SetDefaultColor(Color.LIGHT_GREEN);
SLineP12.SetLineWeight(1);
SLineP12.SetLineWeight(1);
SLineP12.HideBubble();
#----------------------------------------------------------------------------------
SLine13 = if !IsNaN(SupportLevel) and SLineCount == 13 then SupportLevel else if !IsNaN(SLine13[1]) and low <= SLine13[1] then Double.NaN else SLine13[1];
plot SLineP13 = if SLine13 > 0 then SLine13 else Double.NaN;
SLineP13.SetStyle(Curve.POINTS);
SLineP13.SetDefaultColor(Color.LIGHT_GREEN);
SLineP13.SetLineWeight(1);
SLineP13.SetLineWeight(1);
SLineP13.HideBubble();
#----------------------------------------------------------------------------------
SLine14 = if !IsNaN(SupportLevel) and SLineCount == 14 then SupportLevel else if !IsNaN(SLine14[1]) and low <= SLine14[1] then Double.NaN else SLine14[1];
plot SLineP14 = if SLine14 > 0 then SLine14 else Double.NaN;
SLineP14.SetStyle(Curve.POINTS);
SLineP14.SetDefaultColor(Color.LIGHT_GREEN);
SLineP14.SetLineWeight(1);
SLineP14.SetLineWeight(1);
SLineP14.HideBubble();
#----------------------------------------------------------------------------------
SLine15 = if !IsNaN(SupportLevel) and SLineCount == 15 then SupportLevel else if !IsNaN(SLine15[1]) and low <= SLine15[1] then Double.NaN else SLine15[1];
plot SLineP15 = if SLine15 > 0 then SLine15 else Double.NaN;
SLineP15.SetStyle(Curve.POINTS);
SLineP15.SetDefaultColor(Color.LIGHT_GREEN);
SLineP15.SetLineWeight(1);
SLineP15.SetLineWeight(1);
SLineP15.HideBubble();
#----------------------------------------------------------------------------------
SLine16 = if !IsNaN(SupportLevel) and SLineCount == 16 then SupportLevel else if !IsNaN(SLine16[1]) and low <= SLine16[1] then Double.NaN else SLine16[1];
plot SLineP16 = if SLine16 > 0 then SLine16 else Double.NaN;
SLineP16.SetStyle(Curve.POINTS);
SLineP16.SetDefaultColor(Color.LIGHT_GREEN);
SLineP16.SetLineWeight(1);
SLineP16.SetLineWeight(1);
SLineP16.HideBubble();
#----------------------------------------------------------------------------------
SLine17 = if !IsNaN(SupportLevel) and SLineCount == 17 then SupportLevel else if !IsNaN(SLine17[1]) and low <= SLine17[1] then Double.NaN else SLine17[1];
plot SLineP17 = if SLine17 > 0 then SLine17 else Double.NaN;
SLineP17.SetStyle(Curve.POINTS);
SLineP17.SetDefaultColor(Color.LIGHT_GREEN);
SLineP17.SetLineWeight(1);
SLineP17.SetLineWeight(1);
SLineP17.HideBubble();
#----------------------------------------------------------------------------------
SLine18 = if !IsNaN(SupportLevel) and SLineCount == 18 then SupportLevel else if !IsNaN(SLine18[1]) and low < SLine18[1] then Double.NaN else SLine18[1];
plot SLineP18 = if SLine18 > 0 then SLine18 else Double.NaN;
SLineP18.SetStyle(Curve.POINTS);
SLineP18.SetDefaultColor(Color.LIGHT_GREEN);
SLineP18.SetLineWeight(1);
SLineP18.SetLineWeight(1);
SLineP18.HideBubble();
#----------------------------------------------------------------------------------
SLine19 = if !IsNaN(SupportLevel) and SLineCount == 19 then SupportLevel else if !IsNaN(SLine19[1]) and low <= SLine19[1] then Double.NaN else SLine19[1];
plot SLineP19 = if SLine19 > 0 then SLine19 else Double.NaN;
SLineP19.SetStyle(Curve.POINTS);
SLineP19.SetDefaultColor(Color.LIGHT_GREEN);
SLineP19.SetLineWeight(1);
SLineP19.SetLineWeight(1);
SLineP19.HideBubble();
#----------------------------------------------------------------------------------
SLine20 = if !IsNaN(SupportLevel) and SLineCount == 20 then SupportLevel else if !IsNaN(SLine20[1]) and low <= SLine20[1] then Double.NaN else SLine20[1];
plot SLineP20 = if SLine20 > 0 then SLine20 else Double.NaN;
SLineP20.SetStyle(Curve.POINTS);
SLineP20.SetDefaultColor(Color.LIGHT_GREEN);
SLineP20.SetLineWeight(1);
SLineP20.SetLineWeight(1);
SLineP20.HideBubble();
#####################################################################################

#red candles
######################################################################################
#Definitons of Resistance Levels.#####################################################
######################################################################################
plot ResistanceLevel = if RedBar then low[1] else Double.NaN;
ResistanceLevel.SetPaintingStrategy(PaintingStrategy.VALUES_ABOVE);

def RLine0;
def RLine1;
def RLine2;
def RLine3;
def RLine4;
def RLine5;
def RLine6;
def RLine7;
def RLine8;
def RLine9;
def RLine10;
def RLine11;
def RLine12;
def RLine13;
def RLine14;
def RLine15;
def RLine16;
def RLine17;
def RLine18;
def RLine19;
def RLine20;

def RLineCount;
if IsNaN(ResistanceLevel) and (!IsNaN(RLine0[1]) and high>=RLine0[1]) { RLineCount=RLineCount[1]-1;
}else if IsNaN(ResistanceLevel) and (!IsNaN(RLine1[1]) and high>=RLine1[1]) { RLineCount=RLineCount[1]-1;
}else if IsNaN(ResistanceLevel) and (!IsNaN(RLine2[1]) and high>=RLine2[1]) { RLineCount=RLineCount[1]-1;
}else if IsNaN(ResistanceLevel) and (!IsNaN(RLine3[1]) and high>=RLine3[1]) { RLineCount=RLineCount[1]-1;
}else if IsNaN(ResistanceLevel) and (!IsNaN(RLine4[1]) and high>=RLine4[1]) { RLineCount=RLineCount[1]-1;
}else if IsNaN(ResistanceLevel) and (!IsNaN(RLine5[1]) and high>=RLine5[1]) { RLineCount=RLineCount[1]-1;
}else if IsNaN(ResistanceLevel) and (!IsNaN(RLine6[1]) and high>=RLine6[1]) { RLineCount=RLineCount[1]-1;
}else if IsNaN(ResistanceLevel) and (!IsNaN(RLine7[1]) and high>=RLine7[1]) { RLineCount=RLineCount[1]-1;
}else if IsNaN(ResistanceLevel) and (!IsNaN(RLine8[1]) and high>=RLine8[1]) { RLineCount=RLineCount[1]-1;
}else if IsNaN(ResistanceLevel) and (!IsNaN(RLine9[1]) and high>=RLine9[1]) { RLineCount=RLineCount[1]-1;
}else if IsNaN(ResistanceLevel) and (!IsNaN(RLine10[1]) and high>=RLine10[1]) { RLineCount=RLineCount[1]-1;
}else if IsNaN(ResistanceLevel) and (!IsNaN(RLine11[1]) and high>=RLine11[1]) { RLineCount=RLineCount[1]-1;
}else if IsNaN(ResistanceLevel) and (!IsNaN(RLine12[1]) and high>=RLine12[1]) { RLineCount=RLineCount[1]-1;
}else if IsNaN(ResistanceLevel) and (!IsNaN(RLine13[1]) and high>=RLine13[1]) { RLineCount=RLineCount[1]-1;
}else if IsNaN(ResistanceLevel) and (!IsNaN(RLine14[1]) and high>=RLine14[1]) { RLineCount=RLineCount[1]-1;
}else if IsNaN(ResistanceLevel) and (!IsNaN(RLine15[1]) and high>=RLine15[1]) { RLineCount=RLineCount[1]-1;
}else if IsNaN(ResistanceLevel) and (!IsNaN(RLine16[1]) and high>=RLine16[1]) { RLineCount=RLineCount[1]-1;
}else if IsNaN(ResistanceLevel) and (!IsNaN(RLine17[1]) and high>=RLine17[1]) { RLineCount=RLineCount[1]-1;
}else if IsNaN(ResistanceLevel) and (!IsNaN(RLine18[1]) and high>=RLine18[1]) { RLineCount=RLineCount[1]-1;
}else if IsNaN(ResistanceLevel) and (!IsNaN(RLine19[1]) and high>=RLine19[1]) { RLineCount=RLineCount[1]-1;
}else if IsNaN(ResistanceLevel) and (!IsNaN(RLine20[1]) and high>=RLine20[1]) { RLineCount=RLineCount[1]-1;
} else if RedBar and RLineCount[1] == 20 {
    RLineCount = 0;
} else if RedBar {
    RLineCount = RLineCount[1] + 1;
} else {
    RLineCount = RLineCount[1];
}

######################################################################################
#Plots of Resistance Levels.##########################################################
######################################################################################
RLine0 = if !IsNaN(ResistanceLevel) and RLineCount == 0 then ResistanceLevel else if !IsNaN(RLine0[1]) and high >= RLine0[1] then Double.NaN else RLine0[1];
plot RLineP0 = if RLine0 > 0 then RLine0 else Double.NaN;
RLineP0.SetStyle(Curve.POINTS);
RLineP0.SetDefaultColor(Color.LIGHT_RED);
RLineP0.SetLineWeight(1);
RLineP0.HideBubble();
#----------------------------------------------------------------------------------
RLine1 = if !IsNaN(ResistanceLevel) and RLineCount == 1 then ResistanceLevel else if !IsNaN(RLine1[1]) and high >= RLine1[1] then Double.NaN else RLine1[1];
plot RLineP1 = if RLine1 > 0 then RLine1 else Double.NaN;
RLineP1.SetStyle(Curve.POINTS);
RLineP1.SetDefaultColor(Color.LIGHT_RED);
RLineP1.SetLineWeight(1);
RLineP1.HideBubble();
#----------------------------------------------------------------------------------
RLine2 = if !IsNaN(ResistanceLevel) and RLineCount == 2 then ResistanceLevel else if !IsNaN(RLine2[1]) and high >= RLine2[1] then Double.NaN else RLine2[1];
plot RLineP2 = if RLine2 > 0 then RLine2 else Double.NaN;
RLineP2.SetStyle(Curve.POINTS);
RLineP2.SetDefaultColor(Color.LIGHT_RED);
RLineP2.SetLineWeight(1);
RLineP2.HideBubble();
#----------------------------------------------------------------------------------
RLine3 = if !IsNaN(ResistanceLevel) and RLineCount == 3 then ResistanceLevel else if !IsNaN(RLine3[1]) and high >= RLine3[1] then Double.NaN else RLine3[1];
plot RLineP3 = if RLine3 > 0 then RLine3 else Double.NaN;
RLineP3.SetStyle(Curve.POINTS);
RLineP3.SetDefaultColor(Color.LIGHT_RED);
RLineP3.SetLineWeight(1);
RLineP3.HideBubble();
#----------------------------------------------------------------------------------
RLine4 = if !IsNaN(ResistanceLevel) and RLineCount == 4 then ResistanceLevel else if !IsNaN(RLine4[1]) and high >= RLine4[1] then Double.NaN else RLine4[1];
plot RLineP4 = if RLine4 > 0 then RLine4 else Double.NaN;
RLineP4.SetStyle(Curve.POINTS);
RLineP4.SetDefaultColor(Color.LIGHT_RED);
RLineP4.SetLineWeight(1);
RLineP4.HideBubble();
#----------------------------------------------------------------------------------
RLine5 = if !IsNaN(ResistanceLevel) and RLineCount == 5 then ResistanceLevel else if !IsNaN(RLine5[1]) and high >= RLine5[1] then Double.NaN else RLine5[1];
plot RLineP5 = if RLine5 > 0 then RLine5 else Double.NaN;
RLineP5.SetStyle(Curve.POINTS);
RLineP5.SetDefaultColor(Color.LIGHT_RED);
RLineP5.SetLineWeight(1);
RLineP5.HideBubble();
#----------------------------------------------------------------------------------
RLine6 = if !IsNaN(ResistanceLevel) and RLineCount == 6 then ResistanceLevel else if !IsNaN(RLine6[1]) and high >= RLine6[1] then Double.NaN else RLine6[1];
plot RLineP6 = if RLine6 > 0 then RLine6 else Double.NaN;
RLineP6.SetStyle(Curve.POINTS);
RLineP6.SetDefaultColor(Color.LIGHT_RED);
RLineP6.SetLineWeight(1);
RLineP6.HideBubble();
#----------------------------------------------------------------------------------
RLine7 = if !IsNaN(ResistanceLevel) and RLineCount == 7 then ResistanceLevel else if !IsNaN(RLine7[1]) and high >= RLine7[1] then Double.NaN else RLine7[1];
plot RLineP7 = if RLine7 > 0 then RLine7 else Double.NaN;
RLineP7.SetStyle(Curve.POINTS);
RLineP7.SetDefaultColor(Color.LIGHT_RED);
RLineP7.SetLineWeight(1);
RLineP7.HideBubble();
#----------------------------------------------------------------------------------
RLine8 = if !IsNaN(ResistanceLevel) and RLineCount == 8 then ResistanceLevel else if !IsNaN(RLine8[1]) and high >= RLine8[1] then Double.NaN else RLine8[1];
plot RLineP8 = if RLine8 > 0 then RLine8 else Double.NaN;
RLineP8.SetStyle(Curve.POINTS);
RLineP8.SetDefaultColor(Color.LIGHT_RED);
RLineP8.SetLineWeight(1);
RLineP8.HideBubble();
#----------------------------------------------------------------------------------
RLine9 = if !IsNaN(ResistanceLevel) and RLineCount == 9 then ResistanceLevel else if !IsNaN(RLine9[1]) and high >= RLine9[1] then Double.NaN else RLine9[1];
plot RLineP9 = if RLine9 > 0 then RLine9 else Double.NaN;
RLineP9.SetStyle(Curve.POINTS);
RLineP9.SetDefaultColor(Color.LIGHT_RED);
RLineP9.SetLineWeight(1);
RLineP9.HideBubble();
#----------------------------------------------------------------------------------
RLine10 = if !IsNaN(ResistanceLevel) and RLineCount == 10 then ResistanceLevel else if !IsNaN(RLine10[1]) and high >= RLine10[1] then Double.NaN else RLine10[1];
plot RLineP10 = if RLine10 > 0 then RLine10 else Double.NaN;
RLineP10.SetStyle(Curve.POINTS);
RLineP10.SetDefaultColor(Color.LIGHT_RED);
RLineP10.SetLineWeight(1);
RLineP10.HideBubble();
#----------------------------------------------------------------------------------
RLine11 = if !IsNaN(ResistanceLevel) and RLineCount == 11 then ResistanceLevel else if !IsNaN(RLine11[1]) and high >= RLine11[1] then Double.NaN else RLine11[1];
plot RLineP11 = if RLine11 > 0 then RLine11 else Double.NaN;
RLineP11.SetStyle(Curve.POINTS);
RLineP11.SetDefaultColor(Color.LIGHT_RED);
RLineP11.SetLineWeight(1);
RLineP11.HideBubble();
#----------------------------------------------------------------------------------
RLine12 = if !IsNaN(ResistanceLevel) and RLineCount == 12 then ResistanceLevel else if !IsNaN(RLine12[1]) and high >= RLine12[1] then Double.NaN else RLine12[1];
plot RLineP12 = if RLine12 > 0 then RLine12 else Double.NaN;
RLineP12.SetStyle(Curve.POINTS);
RLineP12.SetDefaultColor(Color.LIGHT_RED);
RLineP12.SetLineWeight(1);
RLineP12.HideBubble();
#----------------------------------------------------------------------------------
RLine13 = if !IsNaN(ResistanceLevel) and RLineCount == 13 then ResistanceLevel else if !IsNaN(RLine13[1]) and high >= RLine13[1] then Double.NaN else RLine13[1];
plot RLineP13 = if RLine13 > 0 then RLine13 else Double.NaN;
RLineP13.SetStyle(Curve.POINTS);
RLineP13.SetDefaultColor(Color.LIGHT_RED);
RLineP13.SetLineWeight(1);
RLineP13.HideBubble();
#----------------------------------------------------------------------------------
RLine14 = if !IsNaN(ResistanceLevel) and RLineCount == 14 then ResistanceLevel else if !IsNaN(RLine14[1]) and high >= RLine14[1] then Double.NaN else RLine14[1];
plot RLineP14 = if RLine14 > 0 then RLine14 else Double.NaN;
RLineP14.SetStyle(Curve.POINTS);
RLineP14.SetDefaultColor(Color.LIGHT_RED);
RLineP14.SetLineWeight(1);
RLineP14.HideBubble();
#----------------------------------------------------------------------------------
RLine15 = if !IsNaN(ResistanceLevel) and RLineCount == 15 then ResistanceLevel else if !IsNaN(RLine15[1]) and high >= RLine15[1] then Double.NaN else RLine15[1];
plot RLineP15 = if RLine15 > 0 then RLine15 else Double.NaN;
RLineP15.SetStyle(Curve.POINTS);
RLineP15.SetDefaultColor(Color.LIGHT_RED);
RLineP15.SetLineWeight(1);
RLineP15.HideBubble();
#----------------------------------------------------------------------------------
RLine16 = if !IsNaN(ResistanceLevel) and RLineCount == 16 then ResistanceLevel else if !IsNaN(RLine16[1]) and high >= RLine16[1] then Double.NaN else RLine16[1];
plot RLineP16 = if RLine16 > 0 then RLine16 else Double.NaN;
RLineP16.SetStyle(Curve.POINTS);
RLineP16.SetDefaultColor(Color.LIGHT_RED);
RLineP16.SetLineWeight(1);
RLineP16.HideBubble();
#----------------------------------------------------------------------------------
RLine17 = if !IsNaN(ResistanceLevel) and RLineCount == 17 then ResistanceLevel else if !IsNaN(RLine17[1]) and high >= RLine17[1] then Double.NaN else RLine17[1];
plot RLineP17 = if RLine17 > 0 then RLine17 else Double.NaN;
RLineP17.SetStyle(Curve.POINTS);
RLineP17.SetDefaultColor(Color.LIGHT_RED);
RLineP17.SetLineWeight(1);
RLineP17.HideBubble();
#----------------------------------------------------------------------------------
RLine18 = if !IsNaN(ResistanceLevel) and RLineCount == 18 then ResistanceLevel else if !IsNaN(RLine18[1]) and high >= RLine18[1] then Double.NaN else RLine18[1];
plot RLineP18 = if RLine18 > 0 then RLine18 else Double.NaN;
RLineP18.SetStyle(Curve.POINTS);
RLineP18.SetDefaultColor(Color.LIGHT_RED);
RLineP18.SetLineWeight(1);
RLineP18.HideBubble();
#----------------------------------------------------------------------------------
RLine19 = if !IsNaN(ResistanceLevel) and RLineCount == 19 then ResistanceLevel else if !IsNaN(RLine19[1]) and high >= RLine19[1] then Double.NaN else RLine19[1];
plot RLineP19 = if RLine19 > 0 then RLine19 else Double.NaN;
RLineP19.SetStyle(Curve.POINTS);
RLineP19.SetDefaultColor(Color.LIGHT_RED);
RLineP19.SetLineWeight(1);
RLineP19.HideBubble();
#----------------------------------------------------------------------------------
RLine20 = if !IsNaN(ResistanceLevel) and RLineCount == 20 then ResistanceLevel else if !IsNaN(RLine20[1]) and high >= RLine20[1] then Double.NaN else RLine20[1];
plot RLineP20 = if RLine20 > 0 then RLine20 else Double.NaN;
RLineP20.SetStyle(Curve.POINTS);
RLineP20.SetDefaultColor(Color.LIGHT_RED);
RLineP20.SetLineWeight(1);
RLineP20.HideBubble();
#######################################################################################

#######################################################################################
#Define Start Date. (Second day shown on chart)##########################################
#######################################################################################
input Start_Date = 20210519;
def Days = DaysFromDate(Start_Date);
AddCloud(if Days == 0 then Double.POSITIVE_INFINITY else Double.NaN, Double.NEGATIVE_INFINITY, Color.LIGHT_GRAY);

#######################################################################################
#Define Start Amount. (Margin Requirements)############################################
#######################################################################################
input Start_Amt = 1265.00;
input Trade_Size = 1;
AddOrder(OrderType.BUY_TO_OPEN, condition = Days == 0 and Days[1] == -1, price = close, tradeSize = 1, tickcolor = Color.WHITE, arrowcolor = Color.WHITE);
AddOrder(OrderType.SELL_TO_CLOSE, condition = Days == 0 and Days[1] == -1, price = ((Start_Amt / TickValue()) * TickSize()) + close, tradeSize = 1, tickcolor = Color.WHITE, arrowcolor = Color.WHITE);

#######################################################################################
#Define Buy and Sell Signals.##########################################################
#######################################################################################
def B_Bar = imBody[1] and greenCandle[1];
def S_Bar = imBody[1] and redCandle[1];

def Buy;
def Sell;
if B_Bar {
    Buy = yes;
    Sell = Double.NaN;
} else if S_Bar {
    Buy = Double.NaN;
    Sell = yes;
} else {
    Buy = Double.NaN;
    Sell = Double.NaN;
}

#######################################################################################
#Plots of Buy and Sell.################################################################
#######################################################################################
plot GU = Buy;
GU.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_UP);
GU.SetDefaultColor(GetColor(6));
GU.SetLineWeight(3);

plot GX = Sell;
GX.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_DOWN);
GX.SetDefaultColor(GetColor(5));
GX.SetLineWeight(3);

#######################################################################################
#Strategy.(Buy and Sell on Open of bar after signal.###################################
#######################################################################################

AddOrder(OrderType.BUY_AUTO, condition = Buy and Days > 0, price = open, tradeSize = Trade_Size, tickcolor = Color.CYAN, arrowcolor = Color.BLUE,"Buy");
AddOrder(OrderType.SELL_AUTO, condition = Sell and Days > 0, price = open, tradeSize = Trade_Size, tickcolor = Color.DARK_ORANGE, arrowcolor = Color.RED,"Sell");

#End of Code#

OBvPhmw.png
 
Last edited:
Solution
Updated the code for this indicator to make better use of the plots.
I made it way to complicated the first time around, I blame lack of sleep.

Also added a basic strategy to buy and sell on bar open after signal bar,
and added more plots. (My kingdom for an array.....😩..lol).

@Stock Tradin, I would appreciate some more feed back from you as I'm not a chart/data analyst by any means.
I'm a coder, that's what I know, so that's what I do....
and it doesn't look like we will be hearing from @Department any time soon.
Also working on a script to buy 1 and sell 1 after every opposite bar and set multiple stops (sell 1 or buy 1) at the corresponding price levels.
Code:
#Support and Reisitance Lines That End When Price Returns to Line.
#Original idea by Department
#Coded by Svanoy
#https://usethinkscript.com/threads/support-resistance-that-ends-once-touched.9491/#post-89067

######################################################################################
#Hints.###############################################################################
######################################################################################
#The Start_Date input should be changed to the 2nd day displayed on your chart.#######
#The Start_Amt input is for margin requirements (if any) or you can just set to zero.
#Trade size is 1.#####################################################################
######################################################################################

######################################################################################
#Definition of Signal.################################################################
######################################################################################
input history = 10;
input multiplier = 1.5;
def Bar_Open = open;
def highLow = high - low;
def greenCandle = open < close;
def redCandle = close < open;
def body = BodyHeight();
def volatility = ATR(history, AverageType.WILDERS);
def significantBar = volatility * multiplier;
def imBody = (body > highLow * 0.5) and (highLow >= significantBar);

AssignPriceColor(if imBody and greenCandle then Color.LIME else Color.CURRENT);
AssignPriceColor(if imBody and redCandle then Color.DARK_RED else Color.CURRENT);

######################################################################################
#Defintions of Support Levels.########################################################
######################################################################################
plot SupportLevel = if imBody and greenCandle then high[1] else Double.NaN;
SupportLevel.SetPaintingStrategy(PaintingStrategy.VALUES_ABOVE);

def SLine0;def SLine1;def SLine2;def SLine3;def SLine4;def SLine5;def SLine6;def SLine7;def SLine8;def SLine9;def SLine10;
def SLine11;def SLine12;def SLine13;def SLine14;def SLine15;def SLine16;def SLine17;def SLine18;def SLine19;def SLine20;

def SLineCount;
if !IsNaN(SupportLevel) {
    SLineCount = if BarNumber() == 1 then 0 else if SLineCount[1] == 20 then 0 else SLineCount[1] + 1;

} else if IsNaN(SupportLevel) and (!IsNaN(SLine0[2]) and IsNaN(SLine0[1]) or !IsNaN(SLine1[2]) and IsNaN(SLine1[1]) or
        !IsNaN(SLine2[2]) and IsNaN(SLine2[1]) or !IsNaN(SLine3[2]) and IsNaN(SLine3[1]) or !IsNaN(SLine4[2]) and IsNaN(SLine4[1]) or
        !IsNaN(SLine5[2]) and IsNaN(SLine5[1]) or !IsNaN(SLine6[2]) and IsNaN(SLine6[1]) or !IsNaN(SLine7[2]) and IsNaN(SLine7[1]) or
        !IsNaN(SLine8[2]) and IsNaN(SLine8[1]) or !IsNaN(SLine9[2]) and IsNaN(SLine9[1]) or !IsNaN(SLine10[2]) and IsNaN(SLine10[1]) or
        !IsNaN(SLine11[2]) and IsNaN(SLine11[1]) or !IsNaN(SLine12[2]) and IsNaN(SLine12[1]) or !IsNaN(SLine13[2]) and IsNaN(SLine13[1]) or
        !IsNaN(SLine14[2]) and IsNaN(SLine14[1]) or !IsNaN(SLine15[2]) and IsNaN(SLine15[1]) or !IsNaN(SLine16[2]) and IsNaN(SLine16[1]) or
        !IsNaN(SLine17[2]) and IsNaN(SLine17[1]) or !IsNaN(SLine18[2]) and IsNaN(SLine18[1]) or !IsNaN(SLine19[2]) and IsNaN(SLine19[1]) or
        !IsNaN(SLine20[2]) and IsNaN(SLine20[1])) {
    SLineCount = if SLineCount[1] == 0 then 20 else SLineCount[1] - 1;

} else {
    SLineCount = SLineCount[1];
}

#green candles
######################################################################################
#Plots of Support Levels.#############################################################
######################################################################################
SLine0 = if !IsNaN(SupportLevel) and SLineCount == 0 then SupportLevel else if !IsNaN(SLine0[1]) and low <= SLine0[1] then Double.NaN else SLine0[1];
plot SLineP0 = if SLine0 > 0 then SLine0 else Double.NaN;
SLineP0.SetPaintingStrategy(PaintingStrategy.HORIZONTAL );
SLineP0.SetDefaultColor(Color.GREEN);
SLineP0.SetLineWeight(1);
SLineP0.HideBubble();
#----------------------------------------------------------------------------------
SLine1 = if !IsNaN(SupportLevel) and SLineCount == 1 then SupportLevel else if !IsNaN(SLine1[1]) and low <= SLine1[1] then Double.NaN else SLine1[1];
plot SLineP1 = if SLine1 > 0 then SLine1 else Double.NaN;
SLineP1.SetPaintingStrategy(PaintingStrategy.HORIZONTAL );
SLineP1.SetDefaultColor(Color.GREEN);
SLineP1.SetLineWeight(1);
SLineP1.HideBubble();
#----------------------------------------------------------------------------------
SLine2 = if !IsNaN(SupportLevel) and SLineCount == 2 then SupportLevel else if !IsNaN(SLine2[1]) and low <= SLine2[1] then Double.NaN else SLine2[1];
plot SLineP2 = if SLine2 > 0 then SLine2 else Double.NaN;
SLineP2.SetPaintingStrategy(PaintingStrategy.HORIZONTAL );
SLineP2.SetDefaultColor(Color.GREEN);
SLineP2.SetLineWeight(1);
SLineP2.SetLineWeight(1);
SLineP2.HideBubble();
#----------------------------------------------------------------------------------
SLine3 = if !IsNaN(SupportLevel) and SLineCount == 3 then SupportLevel else if !IsNaN(SLine3[1]) and low <= SLine3[1] then Double.NaN else SLine3[1];
plot SLineP3 = if SLine3 > 0 then SLine3 else Double.NaN;
SLineP3.SetPaintingStrategy(PaintingStrategy.HORIZONTAL );
SLineP3.SetDefaultColor(Color.GREEN);
SLineP3.SetLineWeight(1);
SLineP3.SetLineWeight(1);
SLineP3.HideBubble();
#----------------------------------------------------------------------------------
SLine4 = if !IsNaN(SupportLevel) and SLineCount == 4 then SupportLevel else if !IsNaN(SLine4[1]) and low <= SLine4[1] then Double.NaN else SLine4[1];
plot SLineP4 = if SLine4 > 0 then SLine4 else Double.NaN;
SLineP4.SetPaintingStrategy(PaintingStrategy.HORIZONTAL );
SLineP4.SetDefaultColor(Color.GREEN);
SLineP4.SetLineWeight(1);
SLineP4.SetLineWeight(1);
SLineP4.HideBubble();
#----------------------------------------------------------------------------------
SLine5 = if !IsNaN(SupportLevel) and SLineCount == 5 then SupportLevel else if !IsNaN(SLine5[1]) and low <= SLine5[1] then Double.NaN else SLine5[1];
plot SLineP5 = if SLine5 > 0 then SLine5 else Double.NaN;
SLineP5.SetPaintingStrategy(PaintingStrategy.HORIZONTAL );
SLineP5.SetDefaultColor(Color.GREEN);
SLineP5.SetLineWeight(1);
SLineP5.SetLineWeight(1);
SLineP5.HideBubble();
#----------------------------------------------------------------------------------
SLine6 = if !IsNaN(SupportLevel) and SLineCount == 6 then SupportLevel else if !IsNaN(SLine6[1]) and low <= SLine6[1] then Double.NaN else SLine6[1];
plot SLineP6 = if SLine6 > 0 then SLine6 else Double.NaN;
SLineP6.SetPaintingStrategy(PaintingStrategy.HORIZONTAL );
SLineP6.SetDefaultColor(Color.GREEN);
SLineP6.SetLineWeight(1);
SLineP6.SetLineWeight(1);
SLineP6.HideBubble();
#----------------------------------------------------------------------------------
SLine7 = if !IsNaN(SupportLevel) and SLineCount == 7 then SupportLevel else if !IsNaN(SLine7[1]) and low <= SLine7[1] then Double.NaN else SLine7[1];
plot SLineP7 = if SLine7 > 0 then SLine7 else Double.NaN;
SLineP7.SetPaintingStrategy(PaintingStrategy.HORIZONTAL );
SLineP7.SetDefaultColor(Color.GREEN);
SLineP7.SetLineWeight(1);
SLineP7.SetLineWeight(1);
#----------------------------------------------------------------------------------
SLine8 = if !IsNaN(SupportLevel) and SLineCount == 8 then SupportLevel else if !IsNaN(SLine8[1]) and low <= SLine8[1] then Double.NaN else SLine8[1];
plot SLineP8 = if SLine8 > 0 then SLine8 else Double.NaN;
SLineP8.SetPaintingStrategy(PaintingStrategy.HORIZONTAL );
SLineP8.SetDefaultColor(Color.GREEN);
SLineP8.SetLineWeight(1);
SLineP8.SetLineWeight(1);
SLineP8.HideBubble();
#----------------------------------------------------------------------------------
SLine9 = if !IsNaN(SupportLevel) and SLineCount == 9 then SupportLevel else if !IsNaN(SLine9[1]) and low <= SLine9[1] then Double.NaN else SLine9[1];
plot SLineP9 = if SLine9 > 0 then SLine9 else Double.NaN;
SLineP9.SetPaintingStrategy(PaintingStrategy.HORIZONTAL );
SLineP9.SetDefaultColor(Color.GREEN);
SLineP9.SetLineWeight(1);
SLineP9.SetLineWeight(1);
SLineP9.HideBubble();
#----------------------------------------------------------------------------------
SLine10 = if !IsNaN(SupportLevel) and SLineCount == 10 then SupportLevel else if !IsNaN(SLine10[1]) and low <= SLine10[1] then Double.NaN else SLine10[1];
plot SLineP10 = if SLine10 > 0 then SLine10 else Double.NaN;
SLineP10.SetPaintingStrategy(PaintingStrategy.HORIZONTAL );
SLineP10.SetDefaultColor(Color.GREEN);
SLineP10.SetLineWeight(1);
SLineP10.SetLineWeight(1);
SLineP10.HideBubble();
#----------------------------------------------------------------------------------
SLine11 = if !IsNaN(SupportLevel) and SLineCount == 11 then SupportLevel else if !IsNaN(SLine11[1]) and low <= SLine11[1] then Double.NaN else SLine11[1];
plot SLineP11 = if SLine11 > 0 then SLine11 else Double.NaN;
SLineP11.SetPaintingStrategy(PaintingStrategy.HORIZONTAL );
SLineP11.SetDefaultColor(Color.GREEN);
SLineP11.SetLineWeight(1);
SLineP11.SetLineWeight(1);
SLineP11.HideBubble();
#----------------------------------------------------------------------------------
SLine12 = if !IsNaN(SupportLevel) and SLineCount == 12 then SupportLevel else if !IsNaN(SLine12[1]) and low <= SLine12[1] then Double.NaN else SLine12[1];
plot SLineP12 = if SLine12 > 0 then SLine12 else Double.NaN;
SLineP12.SetPaintingStrategy(PaintingStrategy.HORIZONTAL );
SLineP12.SetDefaultColor(Color.GREEN);
SLineP12.SetLineWeight(1);
SLineP12.SetLineWeight(1);
SLineP12.HideBubble();
#----------------------------------------------------------------------------------
SLine13 = if !IsNaN(SupportLevel) and SLineCount == 13 then SupportLevel else if !IsNaN(SLine13[1]) and low <= SLine13[1] then Double.NaN else SLine13[1];
plot SLineP13 = if SLine13 > 0 then SLine13 else Double.NaN;
SLineP13.SetPaintingStrategy(PaintingStrategy.HORIZONTAL );
SLineP13.SetDefaultColor(Color.GREEN);
SLineP13.SetLineWeight(1);
SLineP13.SetLineWeight(1);
SLineP13.HideBubble();
#----------------------------------------------------------------------------------
SLine14 = if !IsNaN(SupportLevel) and SLineCount == 14 then SupportLevel else if !IsNaN(SLine14[1]) and low <= SLine14[1] then Double.NaN else SLine14[1];
plot SLineP14 = if SLine14 > 0 then SLine14 else Double.NaN;
SLineP14.SetPaintingStrategy(PaintingStrategy.HORIZONTAL );
SLineP14.SetDefaultColor(Color.GREEN);
SLineP14.SetLineWeight(1);
SLineP14.SetLineWeight(1);
SLineP14.HideBubble();
#----------------------------------------------------------------------------------
SLine15 = if !IsNaN(SupportLevel) and SLineCount == 15 then SupportLevel else if !IsNaN(SLine15[1]) and low <= SLine15[1] then Double.NaN else SLine15[1];
plot SLineP15 = if SLine15 > 0 then SLine15 else Double.NaN;
SLineP15.SetPaintingStrategy(PaintingStrategy.HORIZONTAL );
SLineP15.SetDefaultColor(Color.GREEN);
SLineP15.SetLineWeight(1);
SLineP15.SetLineWeight(1);
SLineP15.HideBubble();
#----------------------------------------------------------------------------------
SLine16 = if !IsNaN(SupportLevel) and SLineCount == 16 then SupportLevel else if !IsNaN(SLine16[1]) and low <= SLine16[1] then Double.NaN else SLine16[1];
plot SLineP16 = if SLine16 > 0 then SLine16 else Double.NaN;
SLineP16.SetPaintingStrategy(PaintingStrategy.HORIZONTAL );
SLineP16.SetDefaultColor(Color.GREEN);
SLineP16.SetLineWeight(1);
SLineP16.SetLineWeight(1);
SLineP16.HideBubble();
#----------------------------------------------------------------------------------
SLine17 = if !IsNaN(SupportLevel) and SLineCount == 17 then SupportLevel else if !IsNaN(SLine17[1]) and low <= SLine17[1] then Double.NaN else SLine17[1];
plot SLineP17 = if SLine17 > 0 then SLine17 else Double.NaN;
SLineP17.SetPaintingStrategy(PaintingStrategy.HORIZONTAL );
SLineP17.SetDefaultColor(Color.GREEN);
SLineP17.SetLineWeight(1);
SLineP17.SetLineWeight(1);
SLineP17.HideBubble();
#----------------------------------------------------------------------------------
SLine18 = if !IsNaN(SupportLevel) and SLineCount == 18 then SupportLevel else if !IsNaN(SLine18[1]) and low < SLine18[1] then Double.NaN else SLine18[1];
plot SLineP18 = if SLine18 > 0 then SLine18 else Double.NaN;
SLineP18.SetPaintingStrategy(PaintingStrategy.HORIZONTAL );
SLineP18.SetDefaultColor(Color.GREEN);
SLineP18.SetLineWeight(1);
SLineP18.SetLineWeight(1);
SLineP18.HideBubble();
#----------------------------------------------------------------------------------
SLine19 = if !IsNaN(SupportLevel) and SLineCount == 19 then SupportLevel else if !IsNaN(SLine19[1]) and low <= SLine19[1] then Double.NaN else SLine19[1];
plot SLineP19 = if SLine19 > 0 then SLine19 else Double.NaN;
SLineP19.SetPaintingStrategy(PaintingStrategy.HORIZONTAL );
SLineP19.SetDefaultColor(Color.GREEN);
SLineP19.SetLineWeight(1);
SLineP19.SetLineWeight(1);
SLineP19.HideBubble();
#----------------------------------------------------------------------------------
SLine20 = if !IsNaN(SupportLevel) and SLineCount == 20 then SupportLevel else if !IsNaN(SLine20[1]) and low <= SLine20[1] then Double.NaN else SLine20[1];
plot SLineP20 = if SLine20 > 0 then SLine20 else Double.NaN;
SLineP20.SetPaintingStrategy(PaintingStrategy.HORIZONTAL );
SLineP20.SetDefaultColor(Color.GREEN);
SLineP20.SetLineWeight(1);
SLineP20.SetLineWeight(1);
SLineP20.HideBubble();
######################################################################################

#red candles
######################################################################################
#Definitons of Resistance Levels.#####################################################
######################################################################################
plot ResistanceLevel = if imBody and redCandle then low[1] else Double.NaN;
ResistanceLevel.SetPaintingStrategy(PaintingStrategy.VALUES_ABOVE);

def RLine0;def RLine1;def RLine2;def RLine3;def RLine4;def RLine5;def RLine6;def RLine7;def RLine8;def RLine9;def RLine10;
def RLine11;def RLine12;def RLine13;def RLine14;def RLine15;def RLine16;def RLine17;def RLine18;def RLine19;def RLine20;

def RLineCount;
if !IsNaN(ResistanceLevel) {
    RLineCount = if BarNumber() == 1 then 0 else if RLineCount[1] == 20 then 0 else RLineCount[1] + 1;

} else if IsNaN(ResistanceLevel) and (!IsNaN(RLine0[2]) and IsNaN(RLine0[1]) or !IsNaN(RLine1[2]) and IsNaN(RLine1[1]) or
        !IsNaN(RLine2[2]) and IsNaN(RLine2[1]) or !IsNaN(RLine3[2]) and IsNaN(RLine3[1]) or !IsNaN(RLine4[2]) and IsNaN(RLine4[1]) or
        !IsNaN(RLine5[2]) and IsNaN(RLine5[1]) or !IsNaN(RLine6[2]) and IsNaN(RLine6[1]) or !IsNaN(RLine7[2]) and IsNaN(RLine7[1]) or
        !IsNaN(RLine8[2]) and IsNaN(RLine8[1]) or !IsNaN(RLine9[2]) and IsNaN(RLine9[1]) or !IsNaN(RLine10[2]) and IsNaN(RLine10[1]) or
        !IsNaN(RLine11[2]) and IsNaN(RLine11[1]) or !IsNaN(RLine12[2]) and IsNaN(RLine12[1]) or !IsNaN(RLine13[2]) and IsNaN(RLine13[1]) or
        !IsNaN(RLine14[2]) and IsNaN(RLine14[1]) or !IsNaN(RLine15[2]) and IsNaN(RLine15[1]) or !IsNaN(RLine16[2]) and IsNaN(RLine16[1]) or
        !IsNaN(RLine17[2]) and IsNaN(RLine17[1]) or !IsNaN(RLine18[2]) and IsNaN(RLine18[1]) or !IsNaN(RLine19[2]) and IsNaN(RLine19[1]) or
        !IsNaN(RLine20[2]) and IsNaN(RLine20[1])) {
    RLineCount = if RLineCount[1] == 0 then 20 else RLineCount[1] - 1;

} else {
    RLineCount = RLineCount[1];
}

######################################################################################
#Plots of Resistance Levels.##########################################################
######################################################################################
RLine0 = if !IsNaN(ResistanceLevel) and RLineCount == 0 then ResistanceLevel else if !IsNaN(RLine0[1]) and high >= RLine0[1] then Double.NaN else RLine0[1];
plot RLineP0 = if RLine0 > 0 then RLine0 else Double.NaN;
RLineP0.SetPaintingStrategy(PaintingStrategy.HORIZONTAL );
RLineP0.SetDefaultColor(Color.RED);
RLineP0.SetLineWeight(1);
RLineP0.HideBubble();
#----------------------------------------------------------------------------------
RLine1 = if !IsNaN(ResistanceLevel) and RLineCount == 1 then ResistanceLevel else if !IsNaN(RLine1[1]) and high >= RLine1[1] then Double.NaN else RLine1[1];
plot RLineP1 = if RLine1 > 0 then RLine1 else Double.NaN;
RLineP1.SetPaintingStrategy(PaintingStrategy.HORIZONTAL );
RLineP1.SetDefaultColor(Color.RED);
RLineP1.SetLineWeight(1);
RLineP1.HideBubble();
#----------------------------------------------------------------------------------
RLine2 = if !IsNaN(ResistanceLevel) and RLineCount == 2 then ResistanceLevel else if !IsNaN(RLine2[1]) and high >= RLine2[1] then Double.NaN else RLine2[1];
plot RLineP2 = if RLine2 > 0 then RLine2 else Double.NaN;
RLineP2.SetPaintingStrategy(PaintingStrategy.HORIZONTAL );
RLineP2.SetDefaultColor(Color.RED);
RLineP2.SetLineWeight(1);
RLineP2.HideBubble();
#----------------------------------------------------------------------------------
RLine3 = if !IsNaN(ResistanceLevel) and RLineCount == 3 then ResistanceLevel else if !IsNaN(RLine3[1]) and high >= RLine3[1] then Double.NaN else RLine3[1];
plot RLineP3 = if RLine3 > 0 then RLine3 else Double.NaN;
RLineP3.SetPaintingStrategy(PaintingStrategy.HORIZONTAL );
RLineP3.SetDefaultColor(Color.RED);
RLineP3.SetLineWeight(1);
RLineP3.HideBubble();
#----------------------------------------------------------------------------------
RLine4 = if !IsNaN(ResistanceLevel) and RLineCount == 4 then ResistanceLevel else if !IsNaN(RLine4[1]) and high >= RLine4[1] then Double.NaN else RLine4[1];
plot RLineP4 = if RLine4 > 0 then RLine4 else Double.NaN;
RLineP4.SetPaintingStrategy(PaintingStrategy.HORIZONTAL );
RLineP4.SetDefaultColor(Color.RED);
RLineP4.SetLineWeight(1);
RLineP4.HideBubble();
#----------------------------------------------------------------------------------
RLine5 = if !IsNaN(ResistanceLevel) and RLineCount == 5 then ResistanceLevel else if !IsNaN(RLine5[1]) and high >= RLine5[1] then Double.NaN else RLine5[1];
plot RLineP5 = if RLine5 > 0 then RLine5 else Double.NaN;
RLineP5.SetPaintingStrategy(PaintingStrategy.HORIZONTAL );
RLineP5.SetDefaultColor(Color.RED);
RLineP5.SetLineWeight(1);
RLineP5.HideBubble();
#----------------------------------------------------------------------------------
RLine6 = if !IsNaN(ResistanceLevel) and RLineCount == 6 then ResistanceLevel else if !IsNaN(RLine6[1]) and high >= RLine6[1] then Double.NaN else RLine6[1];
plot RLineP6 = if RLine6 > 0 then RLine6 else Double.NaN;
RLineP6.SetPaintingStrategy(PaintingStrategy.HORIZONTAL );
RLineP6.SetDefaultColor(Color.RED);
RLineP6.SetLineWeight(1);
RLineP6.HideBubble();
#----------------------------------------------------------------------------------
RLine7 = if !IsNaN(ResistanceLevel) and RLineCount == 7 then ResistanceLevel else if !IsNaN(RLine7[1]) and high >= RLine7[1] then Double.NaN else RLine7[1];
plot RLineP7 = if RLine7 > 0 then RLine7 else Double.NaN;
RLineP7.SetPaintingStrategy(PaintingStrategy.HORIZONTAL );
RLineP7.SetDefaultColor(Color.RED);
RLineP7.SetLineWeight(1);
RLineP7.HideBubble();
#----------------------------------------------------------------------------------
RLine8 = if !IsNaN(ResistanceLevel) and RLineCount == 8 then ResistanceLevel else if !IsNaN(RLine8[1]) and high >= RLine8[1] then Double.NaN else RLine8[1];
plot RLineP8 = if RLine8 > 0 then RLine8 else Double.NaN;
RLineP8.SetPaintingStrategy(PaintingStrategy.HORIZONTAL );
RLineP8.SetDefaultColor(Color.RED);
RLineP8.SetLineWeight(1);
RLineP8.HideBubble();
#----------------------------------------------------------------------------------
RLine9 = if !IsNaN(ResistanceLevel) and RLineCount == 9 then ResistanceLevel else if !IsNaN(RLine9[1]) and high >= RLine9[1] then Double.NaN else RLine9[1];
plot RLineP9 = if RLine9 > 0 then RLine9 else Double.NaN;
RLineP9.SetPaintingStrategy(PaintingStrategy.HORIZONTAL );
RLineP9.SetDefaultColor(Color.RED);
RLineP9.SetLineWeight(1);
RLineP9.HideBubble();
#----------------------------------------------------------------------------------
RLine10 = if !IsNaN(ResistanceLevel) and RLineCount == 10 then ResistanceLevel else if !IsNaN(RLine10[1]) and high >= RLine10[1] then Double.NaN else RLine10[1];
plot RLineP10 = if RLine10 > 0 then RLine10 else Double.NaN;
RLineP10.SetPaintingStrategy(PaintingStrategy.HORIZONTAL );
RLineP10.SetDefaultColor(Color.RED);
RLineP10.SetLineWeight(1);
RLineP10.HideBubble();
#----------------------------------------------------------------------------------
RLine11 = if !IsNaN(ResistanceLevel) and RLineCount == 11 then ResistanceLevel else if !IsNaN(RLine11[1]) and high >= RLine11[1] then Double.NaN else RLine11[1];
plot RLineP11 = if RLine11 > 0 then RLine11 else Double.NaN;
RLineP11.SetPaintingStrategy(PaintingStrategy.HORIZONTAL );
RLineP11.SetDefaultColor(Color.RED);
RLineP11.SetLineWeight(1);
RLineP11.HideBubble();
#----------------------------------------------------------------------------------
RLine12 = if !IsNaN(ResistanceLevel) and RLineCount == 12 then ResistanceLevel else if !IsNaN(RLine12[1]) and high >= RLine12[1] then Double.NaN else RLine12[1];
plot RLineP12 = if RLine12 > 0 then RLine12 else Double.NaN;
RLineP12.SetPaintingStrategy(PaintingStrategy.HORIZONTAL );
RLineP12.SetDefaultColor(Color.RED);
RLineP12.SetLineWeight(1);
RLineP12.HideBubble();
#----------------------------------------------------------------------------------
RLine13 = if !IsNaN(ResistanceLevel) and RLineCount == 13 then ResistanceLevel else if !IsNaN(RLine13[1]) and high >= RLine13[1] then Double.NaN else RLine13[1];
plot RLineP13 = if RLine13 > 0 then RLine13 else Double.NaN;
RLineP13.SetPaintingStrategy(PaintingStrategy.HORIZONTAL );
RLineP13.SetDefaultColor(Color.RED);
RLineP13.SetLineWeight(1);
RLineP13.HideBubble();
#----------------------------------------------------------------------------------
RLine14 = if !IsNaN(ResistanceLevel) and RLineCount == 14 then ResistanceLevel else if !IsNaN(RLine14[1]) and high >= RLine14[1] then Double.NaN else RLine14[1];
plot RLineP14 = if RLine14 > 0 then RLine14 else Double.NaN;
RLineP14.SetPaintingStrategy(PaintingStrategy.HORIZONTAL );
RLineP14.SetDefaultColor(Color.RED);
RLineP14.SetLineWeight(1);
RLineP14.HideBubble();
#----------------------------------------------------------------------------------
RLine15 = if !IsNaN(ResistanceLevel) and RLineCount == 15 then ResistanceLevel else if !IsNaN(RLine15[1]) and high >= RLine15[1] then Double.NaN else RLine15[1];
plot RLineP15 = if RLine15 > 0 then RLine15 else Double.NaN;
RLineP15.SetPaintingStrategy(PaintingStrategy.HORIZONTAL );
RLineP15.SetDefaultColor(Color.RED);
RLineP15.SetLineWeight(1);
RLineP15.HideBubble();
#----------------------------------------------------------------------------------
RLine16 = if !IsNaN(ResistanceLevel) and RLineCount == 16 then ResistanceLevel else if !IsNaN(RLine16[1]) and high >= RLine16[1] then Double.NaN else RLine16[1];
plot RLineP16 = if RLine16 > 0 then RLine16 else Double.NaN;
RLineP16.SetPaintingStrategy(PaintingStrategy.HORIZONTAL );
RLineP16.SetDefaultColor(Color.RED);
RLineP16.SetLineWeight(1);
RLineP16.HideBubble();
#----------------------------------------------------------------------------------
RLine17 = if !IsNaN(ResistanceLevel) and RLineCount == 17 then ResistanceLevel else if !IsNaN(RLine17[1]) and high >= RLine17[1] then Double.NaN else RLine17[1];
plot RLineP17 = if RLine17 > 0 then RLine17 else Double.NaN;
RLineP17.SetPaintingStrategy(PaintingStrategy.HORIZONTAL );
RLineP17.SetDefaultColor(Color.RED);
RLineP17.SetLineWeight(1);
RLineP17.HideBubble();
#----------------------------------------------------------------------------------
RLine18 = if !IsNaN(ResistanceLevel) and RLineCount == 18 then ResistanceLevel else if !IsNaN(RLine18[1]) and high >= RLine18[1] then Double.NaN else RLine18[1];
plot RLineP18 = if RLine18 > 0 then RLine18 else Double.NaN;
RLineP18.SetPaintingStrategy(PaintingStrategy.HORIZONTAL );
RLineP18.SetDefaultColor(Color.RED);
RLineP18.SetLineWeight(1);
RLineP18.HideBubble();
#----------------------------------------------------------------------------------
RLine19 = if !IsNaN(ResistanceLevel) and RLineCount == 19 then ResistanceLevel else if !IsNaN(RLine19[1]) and high >= RLine19[1] then Double.NaN else RLine19[1];
plot RLineP19 = if RLine19 > 0 then RLine19 else Double.NaN;
RLineP19.SetPaintingStrategy(PaintingStrategy.HORIZONTAL );
RLineP19.SetDefaultColor(Color.RED);
RLineP19.SetLineWeight(1);
RLineP19.HideBubble();
#----------------------------------------------------------------------------------
RLine20 = if !IsNaN(ResistanceLevel) and RLineCount == 20 then ResistanceLevel else if !IsNaN(RLine20[1]) and high >= RLine20[1] then Double.NaN else RLine20[1];
plot RLineP20 = if RLine20 > 0 then RLine20 else Double.NaN;
RLineP20.SetPaintingStrategy(PaintingStrategy.HORIZONTAL );
RLineP20.SetDefaultColor(Color.RED);
RLineP20.SetLineWeight(1);
RLineP20.HideBubble();
#######################################################################################

#######################################################################################
#Define Start Date. (Second day shown on chart)##########################################
#######################################################################################
input Start_Date = 20220118;
def Days = DaysFromDate(Start_Date);
AddCloud(if Days == 0 then Double.POSITIVE_INFINITY else Double.NaN, Double.NEGATIVE_INFINITY, Color.LIGHT_GRAY);

#######################################################################################
#Define Start Amount. (Margin Requirements)############################################
#######################################################################################
input Start_Amt = 1265.00;
input Trade_Size = 1;
AddOrder(OrderType.BUY_TO_OPEN, condition = Days == 0 and Days[1] == -1, price = close, tradeSize = 1, tickcolor = Color.WHITE, arrowcolor = Color.WHITE);
AddOrder(OrderType.SELL_TO_CLOSE, condition = Days == 0 and Days[1] == -1, price = ((Start_Amt / TickValue()) * TickSize()) + close, tradeSize = 1, tickcolor = Color.WHITE, arrowcolor = Color.WHITE);

#######################################################################################
#Define Buy and Sell Signals.##########################################################
#######################################################################################
def B_Bar = imBody[1] and greenCandle[1];
def S_Bar = imBody[1] and redCandle[1];

def Buy;
def Sell;
if B_Bar {
    Buy = yes;
    Sell = Double.NaN;
} else if S_Bar {
    Buy = Double.NaN;
    Sell = yes;
} else {
    Buy = double.nan;
    Sell = double.nan;
}

#######################################################################################
#Plots of Buy and Sell.################################################################
#######################################################################################
plot GU = Buy;
GU.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_UP);
GU.SetDefaultColor(GetColor(6));
GU.SetLineWeight(3);

plot GX = Sell;
GX.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_DOWN);
GX.SetDefaultColor(GetColor(5));
GX.SetLineWeight(3);

#######################################################################################
#Strategy.(Buy and Sell on Open of bar after signal.###################################
#######################################################################################
AddOrder(OrderType.BUY_AUTO, condition = Buy and Days > 0, price = open, tradeSize = Trade_Size, tickcolor = Color.CYAN, arrowcolor = Color.BLUE, "buy");
AddOrder(OrderType.SELL_AUTO, condition = Sell and Days > 0, price = open, tradeSize = Trade_Size, tickcolor = Color.DARK_ORANGE, arrowcolor = Color.RED,"sell");

#End of Code#

OBvPhmw.png
sorry brother....I got notified by a member you updated this post....for some reason I never gotten an email with update here...wow....OK....I will run it and see what we get??? I appreciate your time man....seriously....I will try to turn on notifications for this thread....againnnnnnnnnnn
 
OK......I copied and pasted your script......it's not painting anything.....I even tried a fresh chart with no other indicators on it.....Not sure what I'm doing wrong maybe? The original script/indicator is working just fine BTW....hmmmmmmmmmmm
 

Join useThinkScript to post your question to a community of 21,000+ developers and traders.

Similar threads

Not the exact question you're looking for?

Start a new thread and receive assistance from our community.

87k+ Posts
470 Online
Create Post

Similar threads

Similar threads

The Market Trading Game Changer

Join 2,500+ subscribers inside the useThinkScript VIP Membership Club
  • Exclusive indicators
  • Proven strategies & setups
  • Private Discord community
  • ‘Buy The Dip’ signal alerts
  • Exclusive members-only content
  • Add-ons and resources
  • 1 full year of unlimited support

Frequently Asked Questions

What is useThinkScript?

useThinkScript is the #1 community of stock market investors using indicators and other tools to power their trading strategies. Traders of all skill levels use our forums to learn about scripting and indicators, help each other, and discover new ways to gain an edge in the markets.

How do I get started?

We get it. Our forum can be intimidating, if not overwhelming. With thousands of topics, tens of thousands of posts, our community has created an incredibly deep knowledge base for stock traders. No one can ever exhaust every resource provided on our site.

If you are new, or just looking for guidance, here are some helpful links to get you started.

What are the benefits of VIP Membership?
VIP members get exclusive access to these proven and tested premium indicators: Buy the Dip, Advanced Market Moves 2.0, Take Profit, and Volatility Trading Range. In addition, VIP members get access to over 50 VIP-only custom indicators, add-ons, and strategies, private VIP-only forums, private Discord channel to discuss trades and strategies in real-time, customer support, trade alerts, and much more. Learn all about VIP membership here.
How can I access the premium indicators?
To access the premium indicators, which are plug and play ready, sign up for VIP membership here.
Back
Top