Simple adjustable half back tool

inthefutures

Active member
Here is a simple code for swing high to swing low 50% retrace.

Code:
input back = 60;

def stop = Highest(high, back);

def slow = Lowest(low, back);

def half = (stop - slow) * .5;

plot halfback = slow + half;

halfback.setlineWeight(3);
 
Last edited by a moderator:

J007RMC

Well-known member
2019 Donor
How can one code this script to relect the .5 plus a .33 and .66 just a script to reflect all 3 percentages and be able to change the color for each?
 

inthefutures

Active member
How can one code this script to relect the .5 plus a .33 and .66 just a script to reflect all 3 percentages and be able to change the color for each?

I added in 4 adjustable values with there own color, i set the defaults at standard Fib levels, but you can adjust them or turn off the ones you do not want

Code:
# created by Alleytrader
input back = 60;
input one = .5;
input two = .382;
input three = .618;
input four = .786;
def stop = Highest(high, back);
def slow = Lowest(low, back);
def half = (stop - slow) * one;
plot halfback = slow + half;
halfback.setlineWeight(3);
halfback.setdefaultColor(color.GREEN);

def twobck = (stop - slow) * two;
plot twoback = slow + twobck;
twoback.setlineWeight(3);
twoback.setdefaultColor(color.RED);

def threebck = (stop - slow) * three;
plot threeback = slow + threebck;
threeback.setlineWeight(3);
threeback.setdefaultColor(color.BLUE);

def fourbck = (stop - slow) * four;
plot fourback = slow + fourbck;
fourback.setlineWeight(3);
fourback.setdefaultColor(color.YELLOW);
 

inthefutures

Active member
Make sure you adjust time scale or chart time to make sure the look back is picking up last swing high and low, I might work on connecting it to a zigzag for a auto barsback
 

tenacity11

Active member
2019 Donor
Make sure you adjust time scale or chart time to make sure the look back is picking up last swing high and low, I might work on connecting it to a zigzag for a auto barsback
Do you have any suggestions for use on a 3m chart....Thanks
 

inthefutures

Active member
most of the time I am 60 lookback and right down to 1 minute, the time to adjust is let say you are on a 3min chart and we drop for swings lasting 75 bars then this code will be missing the exact high or low by 15 bars. so i would in big swing days add a few bars to the lookback.
 

inthefutures

Active member
The problem with looking back to far in a tight choppy day is this code will not be looking at the most current swings if they move inside 60 bars.

Hoping this all makes sense
 

inthefutures

Active member
I found this interesting how price has respected the levels both up and down. I did add extensions so I'm working with .382-.618-1.382-1.618
Very nice, I like the .38 set at 0 and the .766 set at 1 so I can see the swing highs and lows the tool is using and then can adjust time of chart or lookback to pick up the highs and lows I want to plot against.
 

tenacity11

Active member
2019 Donor
@mini
This is the info for the adjustable. The candle colors are related to a different study if you want that I can post separately.
Code:
# created by Alleytrader
input back = 60;
input one = .382;
input two = .618;
input three = 1.382;
input four = 1.618;

def stop = Highest(high, back);
def slow = Lowest(low, back);
def half = (stop - slow) * one;
plot halfback = slow + half;
halfback.setlineWeight(3);
halfback.setdefaultColor(color.GREEN);
def twobck = (stop - slow) * two;
plot twoback = slow + twobck;
twoback.setlineWeight(3);
twoback.setdefaultColor(color.RED);
def threebck = (stop - slow) * three;
plot threeback = slow + threebck;
threeback.setlineWeight(3);
threeback.setdefaultColor(color.BLUE);
def fourbck = (stop - slow) * four;
plot fourback = slow + fourbck;
fourback.setlineWeight(3);
fourback.setdefaultColor(color.YELLOW);
 

mini

Member
@mini
This is the info for the adjustable. The candle colors are related to a different study if you want that I can post separately.
Code:
# created by Alleytrader
input back = 60;
input one = .382;
input two = .618;
input three = 1.382;
input four = 1.618;

def stop = Highest(high, back);
def slow = Lowest(low, back);
def half = (stop - slow) * one;
plot halfback = slow + half;
halfback.setlineWeight(3);
halfback.setdefaultColor(color.GREEN);
def twobck = (stop - slow) * two;
plot twoback = slow + twobck;
twoback.setlineWeight(3);
twoback.setdefaultColor(color.RED);
def threebck = (stop - slow) * three;
plot threeback = slow + threebck;
threeback.setlineWeight(3);
threeback.setdefaultColor(color.BLUE);
def fourbck = (stop - slow) * four;
plot fourback = slow + fourbck;
fourback.setlineWeight(3);
fourback.setdefaultColor(color.YELLOW);
Yes, may I also have the candle colors study? Thank you!
 

tenacity11

Active member
2019 Donor
@mini NOTE on this study I turned off the 10 levels(the original was 5 levels and I added 5 more) for support and resistance leaving the colored candles only. Also note that should price take out highs or lows the candles will lose the color and return to normal colors. I like to see the candles confirm and the tmo to be ob(10 or greater or os(-10 or greater).

# Swing High and Swing Low
# tomsk
# 11.18.2019
# As requested by chillc15 I have modified @RobertPayne code to include SwingHigh
# points which are now plotted in CYAN with the swing high points painted in PINK.
# So now you have both swing high and low on your charts
# +------------------------------------------------------------+
# | Example: How to extend levels to the right of the chart |
# | Robert Payne |
# | https://funwiththinkscript.com |
# +------------------------------------------------------------+
# SWING LOW
# define swing low points
input length = 10;
def bn = BarNumber();
def lastBar = HighestAll(if IsNaN(close) then 0 else bn);
def offset = Min(length - 1, lastBar - bn);
def swingLow = low < Lowest(low[1], length - 1) and low == GetValue(Lowest(low, length), -offset);
# identify the very last swing low point
def lowPointOneBarNumber = HighestAll(if swingLow then bn else 0);
def lowPointOneValue = if bn == lowPointOneBarNumber then low else lowPointOneValue[1];
plot low1 = if bn < lowPointOneBarNumber then Double.NaN else lowPointOneValue;
low1.SetDefaultColor(Color.LIGHT_RED);
# identify the 2nd to last swing low point
def lowPointTwoBarNumber = HighestAll(if swingLow and bn < lowPointOneBarNumber then bn else 0);
def lowPointTwoValue = if bn == lowPointTwoBarNumber then low else lowPointTwoValue[1];
plot low2 = if bn < lowPointTwoBarNumber then Double.NaN else lowPointTwoValue;
low2.SetDefaultColor(Color.Light_RED);
# just keep doing ths for as many lines as you want to add to the chart
# identify then 3rd to last swingHigh point low
def lowPointThreeBarNumber = HighestAll(if swingLow and bn < lowPointTwoBarNumber then bn else 0);
def lowPointThreeValue = if bn == lowPointThreeBarNumber then low else lowPointThreeValue[1];
plot low3 = if bn < lowPointThreeBarNumber then Double.NaN else lowPointThreeValue;
low3.SetDefaultColor(Color.Light_RED);
# identify then 4th to last swingHigh point low
def lowPointFourBarNumber = HighestAll(if swingLow and bn < lowPointThreeBarNumber then bn else 0);
def lowPointFourValue = if bn == lowPointFourBarNumber then low else lowPointFourValue[1];
plot low4 = if bn < lowPointFourBarNumber then Double.NaN else lowPointFourValue;
low4.SetDefaultColor(Color.Light_RED);
# identify then 5th to last swingHigh point low
def lowPointFiveBarNumber = HighestAll(if swingLow and bn < lowPointFourBarNumber then bn else 0);
def lowPointFiveValue = if bn == lowPointFiveBarNumber then low else lowPointFiveValue[1];
plot low5 = if bn < lowPointFiveBarNumber then Double.NaN else lowPointFiveValue;
low5.SetDefaultColor(Color.Light_RED);
# identify then 6th to last swingHigh point low
def lowPointSixBarNumber = HighestAll(if swingLow and bn < lowPointFiveBarNumber then bn else 0);
def lowPointSixValue = if bn == lowPointSixBarNumber then low else lowPointSixValue[1];
plot low6 = if bn < lowPointSixBarNumber then Double.NaN else lowPointSixValue;
low6.SetDefaultColor(Color.Light_RED);
# identify then 7th to last swingHigh point low
def lowPointSevenBarNumber = HighestAll(if swingLow and bn < lowPointSixBarNumber then bn else 0);
def lowPointSevenValue = if bn == lowPointSevenBarNumber then low else lowPointSevenValue[1];
plot low7 = if bn < lowPointSevenBarNumber then Double.NaN else lowPointSevenValue;
low7.SetDefaultColor(Color.Light_RED);
# identify then 8th to last swingHigh point low
def lowPointEightBarNumber = HighestAll(if swingLow and bn < lowPointSevenBarNumber then bn else 0);
def lowPointEightValue = if bn == lowPointEightBarNumber then low else lowPointEightValue[1];
plot low8 = if bn < lowPointEightBarNumber then Double.NaN else lowPointEightValue;
low8.SetDefaultColor(Color.Light_RED);
# identify then 9th to last swingHigh point low
def lowPointNineBarNumber = HighestAll(if swingLow and bn < lowPointEightBarNumber then bn else 0);
def lowPointNineValue = if bn == lowPointNineBarNumber then low else lowPointNineValue[1];
plot low9 = if bn < lowPointNineBarNumber then Double.NaN else lowPointNineValue;
low9.SetDefaultColor(Color.Light_RED);
# identify then 10th to last swingHigh point low
def lowPointTenBarNumber = HighestAll(if swingLow and bn < lowPointNineBarNumber then bn else 0);
def lowPointTenValue = if bn == lowPointTenBarNumber then low else lowPointTenValue[1];
plot low10 = if bn < lowPointTenBarNumber then Double.NaN else lowPointTenValue;
low10.SetDefaultColor(Color.Light_RED);


# SWING HIGH
# define swing high points
def swingHigh = high > Highest(high[1], length - 1) and high == GetValue(Highest(high, length), -offset);
# identify the very last swing high point
def highPointOneBarNumber = HighestAll(if swingHigh then bn else 0);
def highPointOneValue = if bn == highPointOneBarNumber then high else highPointOneValue[1];
plot high1 = if bn < highPointOneBarNumber then Double.NaN else highPointOneValue;
high1.SetDefaultColor(Color.CYAN);
# identify the 2nd to last swing high point
def highPointTwoBarNumber = HighestAll(if swingHigh and bn < highPointOneBarNumber then bn else 0);
def highPointTwoValue = if bn == highPointTwoBarNumber then high else highPointTwoValue[1];
plot high2 = if bn < highPointTwoBarNumber then Double.NaN else highPointTwoValue;
high2.SetDefaultColor(Color.CYAN);
# just keep doing ths for as many lines as you want to add to the chart
def highPointThreeBarNumber = HighestAll(if swingHigh and bn < highPointTwoBarNumber then bn else 0);
def highPointThreeValue = if bn == highPointThreeBarNumber then high else highPointThreeValue[1];
plot high3 = if bn < highPointThreeBarNumber then Double.NaN else highPointThreeValue;
high3.SetDefaultColor(Color.CYAN);
def highPointFourBarNumber = HighestAll(if swingHigh and bn < highPointThreeBarNumber then bn else 0);
def highPointFourValue = if bn == highPointFourBarNumber then high else highPointFourValue[1];
plot high4 = if bn < highPointFourBarNumber then Double.NaN else highPointFourValue;
high4.SetDefaultColor(Color.CYAN);
def highPointFiveBarNumber = HighestAll(if swingHigh and bn < highPointFourBarNumber then bn else 0);
def highPointFiveValue = if bn == highPointFiveBarNumber then high else highPointFiveValue[1];
plot high5 = if bn < highPointFiveBarNumber then Double.NaN else highPointFiveValue;
high5.SetDefaultColor(Color.CYAN);
def highPointSixBarNumber = HighestAll(if swingHigh and bn < highPointFiveBarNumber then bn else 0);
def highPointSixValue = if bn == highPointSixBarNumber then high else highPointSixValue[1];
plot high6 = if bn < highPointsixBarNumber then Double.NaN else highPointsixValue;
high6.SetDefaultColor(Color.CYAN);
def highPointSevenBarNumber = HighestAll(if swingHigh and bn < highPointSixBarNumber then bn else 0);
def highPointSevenValue = if bn == highPointSevenBarNumber then high else highPointSevenValue[1];
plot high7 = if bn < highPointSevenBarNumber then Double.NaN else highPointSevenValue;
high7.SetDefaultColor(Color.CYAN);
def highPointEightBarNumber = HighestAll(if swingHigh and bn < highPointSevenBarNumber then bn else 0);
def highPointEightValue = if bn == highPointEightBarNumber then high else highPointEightValue[1];
plot high8 = if bn < highPointEightBarNumber then Double.NaN else highPointEightValue;
high4.SetDefaultColor(Color.CYAN);
def highPointNineBarNumber = HighestAll(if swingHigh and bn < highPointEightBarNumber then bn else 0);
def highPointNineValue = if bn == highPointNineBarNumber then high else highPointNineValue[1];
plot high9 = if bn < highPointNineBarNumber then Double.NaN else highPointNineValue;
high4.SetDefaultColor(Color.CYAN);
def highPointTenBarNumber = HighestAll(if swingHigh and bn < highPointNineBarNumber then bn else 0);
def highPointTenValue = if bn == highPointTenBarNumber then high else highPointTenValue[1];
plot high10 = if bn < highPointTenBarNumber then Double.NaN else highPointTenValue;
high4.SetDefaultColor(Color.CYAN);

# ADJUST CANDLE COLORS
# change candle colors just to make it easier to see what we are working with
AssignPriceColor(if swingLow then Color.cyan else if swingHigh then Color.mageNTA else Color.current);
# End Swing High and Swing Low
 

Similar threads

Top