John Snyder
New member
In an effort to learn how to use the Thinkscript "fold" command, I wrote this indicator which measures the number of bars taken to exceed the price since it was at this same level.  I freely admit that I studied other indicator code and copied and modified the work of others to create this indicator!
		
		
	
	
		
	
	
	
	
	
	
		
	
		
			
		
		
	
				
			
		Code:
	
	# NewHLBreakout (New High/Low Breakout) measures the number of bars taken to exceed the previous time price was at this level.
declare lower;
input LBlen = 100;  #Look back length
input Breakout = 20;
DefineGlobalColor("G0", CreateColor(0, 255, 0));  #Green
DefineGlobalColor("G1", CreateColor(0, 229, 0));  #Green
DefineGlobalColor("G2", CreateColor(0, 206, 0));  #Green
DefineGlobalColor("G3", CreateColor(0, 186, 0));  #Green
DefineGlobalColor("G4", CreateColor(0, 167, 0));  #Green
DefineGlobalColor("G5", CreateColor(0, 151, 0));  #Green
DefineGlobalColor("G6", CreateColor(0, 136, 0));  #Green
DefineGlobalColor("G7", CreateColor(0, 122, 0));  #Green
DefineGlobalColor("G8", CreateColor(0, 109, 0));  #Green
DefineGlobalColor("G9", CreateColor(0, 98, 0));  #Green
DefineGlobalColor("L0", CreateColor(128, 255, 0));  #Lime
DefineGlobalColor("L1", CreateColor(113, 224, 0));  #Lime  * 0.88
DefineGlobalColor("L2", CreateColor(99, 197, 0));  #Lime
DefineGlobalColor("L3", CreateColor(87, 174, 0));  #Lime
DefineGlobalColor("L4", CreateColor(77, 153, 0));  #Lime
DefineGlobalColor("L5", CreateColor(66, 135, 0));  #Lime
DefineGlobalColor("L6", CreateColor(59, 118, 0));  #Lime
DefineGlobalColor("L7", CreateColor(52, 104, 0));  #Lime
DefineGlobalColor("L8", CreateColor(46, 92, 0));  #Lime
DefineGlobalColor("L9", CreateColor(41, 81, 0));  #Lime
DefineGlobalColor("R0", CreateColor(255, 0, 0));  #Red
DefineGlobalColor("R1", CreateColor(224, 0, 0));  #Red
DefineGlobalColor("R2", CreateColor(197, 0, 0));  #Red
DefineGlobalColor("R3", CreateColor(174, 0, 0));  #Red
DefineGlobalColor("R4", CreateColor(153, 0, 0));  #Red
DefineGlobalColor("R5", CreateColor(135, 0, 0));  #Red
DefineGlobalColor("R6", CreateColor(118, 0, 0));  #Red
DefineGlobalColor("R7", CreateColor(104, 0, 0));  #Red
DefineGlobalColor("R8", CreateColor(92, 0, 0));  #Red
DefineGlobalColor("R9", CreateColor(81, 0, 0));  #Red
DefineGlobalColor("Pi0", CreateColor(255, 96, 128));  #Pink
DefineGlobalColor("Pi1", CreateColor(224, 84, 113));  #Pink
DefineGlobalColor("Pi2", CreateColor(197, 74, 99));  #Pink
DefineGlobalColor("Pi3", CreateColor(174, 65, 87));  #Pink
DefineGlobalColor("Pi4", CreateColor(153, 58, 77));  #Pink
DefineGlobalColor("Pi5", CreateColor(135, 51, 68));  #Pink
DefineGlobalColor("Pi6", CreateColor(118, 45, 59));  #Pink
DefineGlobalColor("Pi7", CreateColor(104, 39, 52));  #Pink
DefineGlobalColor("Pi8", CreateColor(92, 35, 46));  #Pink
DefineGlobalColor("Pi9", CreateColor(81, 30, 41));  #Pink
DefineGlobalColor("O0", CreateColor(255, 128, 0));  #Orange
DefineGlobalColor("O1", CreateColor(237, 106, 0));  #Orange  * 0.83
DefineGlobalColor("O2", CreateColor(221, 88, 0));  #Orange
DefineGlobalColor("O3", CreateColor(205, 73, 0));  #Orange
DefineGlobalColor("O4", CreateColor(191, 61, 0));  #Orange
DefineGlobalColor("O5", CreateColor(177, 50, 0));  #Orange
DefineGlobalColor("O6", CreateColor(165, 42, 0));  #Orange
DefineGlobalColor("O7", CreateColor(153, 33, 0));  #Orange
DefineGlobalColor("O8", CreateColor(143, 29, 0));  #Orange
DefineGlobalColor("O9", CreateColor(133, 24, 0));  #Orange
DefineGlobalColor("Y0", CreateColor(255, 255, 0));  #Yellow
DefineGlobalColor("Y1", CreateColor(234, 234, 0));  #Yellow *0.92
DefineGlobalColor("Y2", CreateColor(216, 216, 0));  #Yellow
DefineGlobalColor("Y3", CreateColor(198, 198, 0));  #Yellow
DefineGlobalColor("Y4", CreateColor(182, 182, 0));  #Yellow
DefineGlobalColor("Y5", CreateColor(168, 168, 0));  #Yellow
DefineGlobalColor("Y6", CreateColor(155, 155, 0));  #Yellow
DefineGlobalColor("Y7", CreateColor(142, 142, 0));  #Yellow
DefineGlobalColor("Y8", CreateColor(131, 131, 0));  #Yellow
DefineGlobalColor("Y9", CreateColor(120, 120, 0));  #Yellow
DefineGlobalColor("C0", CreateColor(0, 255, 255));  #Cyan
DefineGlobalColor("C1", CreateColor(0, 219, 219));  #Cyan *0.86
DefineGlobalColor("C2", CreateColor(0, 188, 189));  #Cyan
DefineGlobalColor("C3", CreateColor(0, 161, 162));  #Cyan
DefineGlobalColor("C4", CreateColor(0, 137, 139));  #Cyan
DefineGlobalColor("C5", CreateColor(0, 117, 119));  #Cyan
DefineGlobalColor("C6", CreateColor(0, 100, 103));  #Cyan
DefineGlobalColor("C7", CreateColor(0, 86, 89));  #Cyan
DefineGlobalColor("C8", CreateColor(0, 72, 76));  #Cyan
DefineGlobalColor("C9", CreateColor(0, 62, 66));  #Cyan
DefineGlobalColor("B0", CreateColor(0, 128, 255));  #Blue
DefineGlobalColor("B1", CreateColor(0, 117, 234));  #Blue *0.89
DefineGlobalColor("B2", CreateColor(0, 108, 216));  #Blue
DefineGlobalColor("B3", CreateColor(0, 99, 198));  #Blue
DefineGlobalColor("B4", CreateColor(0, 91, 182));  #Blue
DefineGlobalColor("B5", CreateColor(0, 84, 168));  #Blue
DefineGlobalColor("B6", CreateColor(0, 78, 155));  #Blue
DefineGlobalColor("B7", CreateColor(0, 71, 142));  #Blue
DefineGlobalColor("B8", CreateColor(0, 66, 131));  #Blue
DefineGlobalColor("B9", CreateColor(0, 60, 120));  #Blue
#DefineGlobalColor("B10", CreateColor(0, 60, 120));  #Blue
DefineGlobalColor("LP0", CreateColor(170, 149, 255));  #Light Purple
DefineGlobalColor("LP1", CreateColor(156, 137, 234));  #Light Purple *0.92
DefineGlobalColor("LP2", CreateColor(144, 126, 216));  #Light Purple
DefineGlobalColor("LP3", CreateColor(132, 116, 198));  #Light Purple
DefineGlobalColor("LP4", CreateColor(122, 107, 182));  #Light Purple
DefineGlobalColor("LP5", CreateColor(112, 98, 168));  #Light Purple
DefineGlobalColor("LP6", CreateColor(103, 90, 155));  #Light Purple
DefineGlobalColor("LP7", CreateColor(95, 83, 142));  #Light Purple
DefineGlobalColor("LP8", CreateColor(87, 76, 131));  #Light Purple
DefineGlobalColor("LP9", CreateColor(80, 70, 120));  #Light Purple
DefineGlobalColor("P0", CreateColor(128, 0, 255));  #Purple
DefineGlobalColor("P1", CreateColor(117, 0, 234));  #Purple
DefineGlobalColor("P2", CreateColor(108, 0, 216));  #Purple
DefineGlobalColor("P3", CreateColor(99, 0, 198));  #Purple
DefineGlobalColor("P4", CreateColor(91, 0, 182));  #Purple
DefineGlobalColor("P5", CreateColor(84, 0, 168));  #Purple
DefineGlobalColor("P6", CreateColor(78, 0, 155));  #Purple
DefineGlobalColor("P7", CreateColor(71, 0, 142));  #Purple
DefineGlobalColor("P8", CreateColor(66, 0, 131));  #Purple
DefineGlobalColor("P9", CreateColor(60, 0, 120));  #Purple
DefineGlobalColor("M0", CreateColor(255, 0, 255));  #Magenta
DefineGlobalColor("M1", CreateColor(224, 0, 224));  #Magenta
DefineGlobalColor("M2", CreateColor(197, 0, 197));  #Magenta
DefineGlobalColor("M3", CreateColor(174, 0, 174));  #Magenta
DefineGlobalColor("M4", CreateColor(153, 0, 153));  #Magenta
DefineGlobalColor("M5", CreateColor(135, 0, 135));  #Magenta
DefineGlobalColor("M6", CreateColor(118, 0, 118));  #Magenta
DefineGlobalColor("M7", CreateColor(104, 0, 104));  #Magenta
DefineGlobalColor("M8", CreateColor(92, 0, 92));  #Magenta
DefineGlobalColor("M9", CreateColor(81, 0, 81));  #Magenta
DefineGlobalColor("Gray", CreateColor(28, 28, 28));  #Gray
def na = Double.NaN;
def bn = BarNumber();
def lastbar = if !IsNaN(close) then bn else na;
def HH = fold i = 1 to LBlen + 1
         with p = 0
         while GetValue(high, bn - lastbar) > GetValue(high, (bn - (lastbar - i)))
         do i;
def LL = fold j = 1 to LBlen + 1
         with q = 0
         while GetValue(low, bn - lastbar) < GetValue(low, (bn - (lastbar - j)))
         do -j;
def HLsum = HH + LL;
def HLavg = TEMA(HLsum, 150);
def highestAvg = HighestAll(HLavg);
def lowestAvg = LowestAll(HLavg);
def RangeAvg = highestAvg + AbsValue(lowestAvg);
def scHLAvg = (HLavg / (RangeAvg * 0.5)) * LBlen;
plot Tr_HH = HH;
Tr_HH.AssignValueColor(Color.GREEN);
AddCloud(HH, 0, Color.GREEN);
plot Tr_LL = LL;
Tr_LL.AssignValueColor(Color.RED);
AddCloud(0, LL, Color.RED);
plot Tr_Avg = scHLAvg;
Tr_Avg.hide();
Tr_Avg.SetLineWeight(3);
Tr_Avg.AssignValueColor(
if HLSum > 0
then
    if HLavg >= HLavg[1]
    then
        if (HLavg - HLavg[1]) >= (HLavg[1] - HLavg[2])
        then GlobalColor("G0")
        else GlobalColor("G5")
    else
        if (HLavg - HLavg[1]) <= (HLavg[1] - HLavg[2])
        then GlobalColor("B0")
        else GlobalColor("B5")
else
    if HLavg <= HLavg[1]
    then
        if (HLavg - HLavg[1]) <= (HLavg[1] - HLavg[2])
        then GlobalColor("R0")
        else GlobalColor("R5")
    else
        if (HLavg - HLavg[1]) >= (HLavg[1] - HLavg[2])
        then GlobalColor("Y0")
        else GlobalColor("Y3")
);
plot UpperBO = Breakout;
UpperBO.AssignValueColor(Color.LIGHT_GRAY);
plot UpperCO = Breakout * 0.5;
UpperCO.AssignValueColor(Color.GRAY);
plot LowerBO = -Breakout;
LowerBO.AssignValueColor(Color.LIGHT_GRAY);
plot LowerCO = -Breakout * 0.5;
LowerCO.AssignValueColor(Color.GRAY);
	
			
				Last edited by a moderator: