@barbaros can you pls assist on converting below pine script to ThinkScript if possible. it is boundaries which will only change when source crosses above or below the boundary. it looks easy but very tricky 
CSS:
getStickyRange(float highsource, float lowsource, float upper, float lower, simple bool sticky=false)=>
newUpper = upper
newLower = lower
highBreakout = highsource[1] >= newUpper[1]
lowBreakout = lowsource[1] <= newLower[1]
newUpper := (highBreakout or lowBreakout or not sticky)? newUpper : nz(newUpper[1], newUpper)
newLower := (highBreakout or lowBreakout or not sticky)? newLower : nz(newLower[1], newLower)
[newUpper, newLower]