//PRC_Std and Ste LinRegChannel | indicator
//Standard Deviation and Standard Error 
//Linear Regression Channel
//12.03.2019
//Nicolas @ www.prorealcode.com
//Sharing ProRealTime knowledge
 
defparam drawonlastbaronly=true
defparam calculateonlastbars=1000
// --- settings
lookback= 200 //channel period
ChannelType = 1 //1= Standard Deviation ; 2= Standard Erro
NbDeviation = 1 //Deviation multiplier 
colorRed = 255
colorGreen = 255
colorBlue = 0
// --- end of settings
 
sumx = 0
sumy = 0
sumxy = 0
sumx2 = 0
 
for cmpt = lookback downto 0 do
 tmpx = cmpt
 tmpy = close[cmpt]
 sumy = sumy+tmpy
 sumx = sumx+tmpx
 sumx2 = sumx2 + (tmpx*tmpx)
 sumxy = sumxy + (tmpy*tmpx)
next
 
n = lookback+1
 
if (sumx2 = sumx * sumx) then // protection to avoid infinite values
 b = sumxy - sumx * sumy
else
 b = (n * sumxy - sumx * sumy) / (n * sumx2 - sumx * sumx)
endif
a = (sumy - b * sumx) / n
 
drawsegment(barindex[lookback],a+b*lookback,barindex,a+b*0) coloured(colorRed,colorGreen,colorBlue)
 
//channel
if ChannelType = 1 then //Standard Deviation 
 dat = std[lookback]*NbDeviation
else
 dat = ste[lookback]*NbDeviation
endif
drawsegment(barindex[lookback],(a+b*lookback)+dat,barindex,a+b*0+dat) coloured(colorRed,colorGreen,colorBlue)
drawsegment(barindex[lookback],(a+b*lookback)-dat,barindex,a+b*0-dat) coloured(colorRed,colorGreen,colorBlue)
 
return