//PRC_Imbalances indicator
//12.10.2023
//Nicolas @ www.prorealcode.com
//Sharing ProRealTime knowledge
defparam drawonlastbaronly=true
REM Store support
IF high[2] < low THEN
$support[i]= high[2]
$bar[i]=barindex
i=i+1
ENDIF
REM Store resistance
if high<low[2] then
$res[y]= low[2]
$resbar[y]=barindex
y=y+1
endif
REM check support line
if islastbarupdate and i>1 then
for j = i-1 downto 0
checklow = $support[j]
bars = max(1,barindex-$bar[j])
endbar=barindex
for z = bars downto 1
if low[z]<checklow then
endbar=barindex[z]
break
endif
next
if endbar<barindex then
drawrectangle($bar[j]-2,low[max(0,barindex-$bar[j])],endbar,$support[j]) coloured("crimson",50) bordercolor(0,0,0,0)
ELSE
drawrectangle($bar[j]-2,low[max(0,barindex-$bar[j])],barindex,$support[j]) coloured("yellow",50) bordercolor(0,0,0,0)
endif
next
endif
REM check resistance line
if islastbarupdate and y>1 then
for j = y-1 downto 0
checkhigh = $res[j]
bars = max(1,barindex-$resbar[j])
endbar=barindex
for z = bars downto 1
if high[z]>checkhigh then
endbar=barindex[z]
break
endif
next
if endbar<barindex then
drawrectangle($resbar[j]-2,high[max(0,barindex-$resbar[j])],endbar,$res[j]) coloured("lightgreen",50) bordercolor(0,0,0,0)
ELSE
drawrectangle($resbar[j]-2,high[max(0,barindex-$resbar[j])],barindex,$res[j]) coloured("cyan",50) bordercolor(0,0,0,0)
endif
next
endif
RETURN