DonchianMidline = (Highest[20](high)+Lowest[20](low)+Average[20](close) )/3
sma=close-(DonchianMidline)
Delta = linearregression[20](sma)
basis = exponentialaverage[length](close)
dev = mult * Std[length](close)
upperBB = basis + dev
lowerBB = basis - dev
//KC
ma = exponentialaverage[lengthkc](close)
myrange = averagetruerange[14]
upperKClow = ma+myrange * 2
lowerKClow = ma-myrange * 2
upperKCmid = ma+myrange * 1.5
lowerKCmid = ma-myrange * 1.5
upperKChigh = ma+myrange * 1
lowerKChigh = ma-myrange * 1
sqzOnlow = (lowerBB>lowerKClow) AND (upperBB<upperKClow) AND (LOWERBB<LOWERKCMID) AND (UPPERBB>UPPERKCMID)
sqzOnmid = (lowerBB>lowerKCmid) AND (upperBB<upperKCmid) AND (LOWERBB<LOWERKCHIGH) AND (LOWERBB>UPPERKCHIGH)
sqzOnhigh = (lowerBB>lowerKChigh) AND (upperBB<upperKChigh)
if(sqzOnlow=1) then
scolorR = 255
scolorG = 255
scolorB= 255
else
scolorR = 255
scolorG = 0
ENDIF
if(sqzOnmid=1) then
scolorR = 0
scolorG = 255
scolorB= 0
else
scolorR = 255
scolorG = 0
ENDIF
if(sqzOnhigh=1) then
scolorR = 0
scolorG = 0
scolorB=255
else
scolorR = 255
scolorG = 0
ENDIF
if delta>0 then
sqz=-squeezeDotsOffset*pointsize
else
sqz=squeezeDotsOffset*pointsize
endif
//histogram modifications
if delta>0 and delta>delta[1] then
plusI = delta
plusD = 0
minusI = 0
minusD = 0
colorR=0
colorG=245
colorB=255
elsif delta>0 and delta<delta[1] then
plusI = 0
plusD = delta
minusI = 0
minusD = 0
colorR=0
colorG=0
colorB=255
elsif delta<0 and delta<delta[1] then
plusI = 0
plusD = 0
minusI = 0
minusD = delta
colorR=255
colorG=0
colorB=0
elsif delta<0 and delta>delta[1] then
plusI = 0
plusD = 0
minusI = delta
minusD = 0
colorR=255
colorG=255
colorB=0
endif
RETURN plusI coloured(colorR,colorG,colorB) style(histogram,1) as "plus increase", plusD coloured(colorR,colorG,colorB) style(histogram,1) as "plus decrease", minusI coloured(colorR,colorG,colorB) style(histogram,1) as "minus increase", minusD coloured(colorR,colorG,colorB) style(histogram,1) as "minus decrease", sqz coloured(scolorR,scolorG,0) style(point,5) as "squeeze momentum"