This is the Donchian Channel indicator extended version.
You can choose to display the trend in 3 different ways:
The current trend is displayed as a red/green plotted at zero level. The trend change each time the price broke the higher or lower boundaries of the donchian channel.
Indicator converted from mt4 code following a request made in the Italian indicator forum.
//PRC_DonchianChannel3 | indicator
//17.09.2019
//Nicolas @ www.prorealcode.com
//Sharing ProRealTime knowledge
//translated from mt4 version
// --- settings
ChannelPeriod = 21
HighLowShift = 1
ShowMiddle = 1 //1=true;0=false
ZeroBind = 1 //1=true;0=false
Normalize = 1 //1=true;0=false
// --- end of settings
cprice = customclose
dcUpper = Highest[ChannelPeriod](high)[HighLowShift]
dcLower = Lowest[ChannelPeriod](low)[HighLowShift]
dcMiddle = (dcUpper+dcLower)/2.0
if (ZeroBind) then
if (Normalize) then
buffer1 = 1
buffer2 = -1
diff = (dcUpper-dcMiddle)
if (diff <> 0) then
price = (cprice-dcMiddle)/diff
else
price = 0
endif
else
buffer1 = dcUpper-dcMiddle
buffer2 = dcLower-dcMiddle
price = (cprice-dcMiddle)
endif
else
buffer1 = dcUpper
buffer2 = dcLower
price = cprice
endif
trendp = trendp[1]
trend = trend[1]
if (dcUpper>dcUpper[1]) then
t rend = 1
endif
if (dcLower<dcLower[1]) then
t rend = -1
endif
buffer3=undefined
if (ShowMiddle) then
if (ZeroBind) then
buffer3 = 0
else
buffer3 = (buffer1+buffer2)/2
endif
endif
if (cprice>dcUpper) then
trendp = 1
endif
if (cprice<dcLower) then
trendp = -1
endif
if (cprice<dcUpper and cprice>dcLower) then
trendp = 0
endif
if trend>0 then
r=0
g=128
else
r=255
g=0
endif
return buffer1 coloured(0,128,0) style(dottedline,1),buffer2 coloured(255,0,0) style(dottedline,1),buffer3 coloured(r,g,0) style(line,2),price coloured(0,191,255) style(line,3) //,buffer4