//---Initialisation
once idx0 = 0
once idx1 = 0
once idx2 = 0
once pos = 0
ATR = AverageTrueRange[prd](typicalprice)
IF barindex >= 2*prd+1 then
If high[prd] >= highest[2*prd+1](high) and pos<=0 then
If idx1 <> 0 then
idx2 = idx1
Endif
If idx0 <> 0 then
idx1 = idx0
Endif
idx0 = barindex[prd]
pos=1
If idx2<>0 then
If showPvts then
If High[barindex-idx0]>=High[barindex-idx2] then
DRAWTEXT("HH",idx0,High[barindex-idx0]+ATR/2,Dialog,Bold,20) coloured(200,0,0,255)
else
DRAWTEXT("LH",idx0,High[barindex-idx0]+ATR/2,Dialog,Bold,20) coloured(200,0,0,255)
Endif
Endif
Endif
Endif
If Low[prd] <= Lowest[2*prd+1](low) and pos>=0 then
If idx1 <> 0 then
idx2 = idx1
Endif
If idx0 <> 0 then
idx1 = idx0
Endif
idx0 = barindex[prd]
pos=-1
If idx2<>0 then
If showPvts then
If Low[barindex-idx0]>=Low[barindex-idx2] then
DRAWTEXT("HL",idx0,Low[barindex-idx0]-ATR/2,Dialog,Bold,20) coloured(0,200,0,255)
else
DRAWTEXT("LL",idx0,Low[barindex-idx0]-ATR/2,Dialog,Bold,20) coloured(0,200,0,255)
Endif
Endif
Endif
Endif
If idx2<>0 then
If pos=1 and High[barindex-idx0]>Low[barindex-idx1] and High[barindex-idx0]<High[barindex-idx2] and (Close<Low[barindex-idx1] and open>Low[barindex-idx1]) then
If showPattern then
DRAWTEXT("1",idx2,High[idx2]+ATR[Barindex-Idx2]/2,Dialog,Bold,20) coloured("BLUE",255)
DRAWTEXT("2",idx1,Low[barindex-idx1]-ATR[Barindex-Idx1]/2,Dialog,Bold,20) coloured("BLUE",255)
DRAWTEXT("3",idx0,High[barindex-idx0]+ATR[Barindex-Idx0]/2,Dialog,Bold,20) coloured("BLUE",255)
DRAWSEGMENT(idx2,High[barindex-idx2],idx1,Low[barindex-idx1]) STYLE(Line,3) coloured("BLUE",255)
DRAWSEGMENT(idx1,Low[barindex-idx1],idx0,High[barindex-idx0]) STYLE(Line,3) coloured("BLUE",255)
Endif
If showBreak then
DRAWSEGMENT(idx1,Low[barindex-idx1],barindex+1,Low[barindex-idx1]) STYLE(DOTTEDLINE2,2) coloured("BLUE",255)
DRAWARROWDOWN(barindex,High+ATR/2) coloured("RED",255)
Endif
Endif
If pos=-1 and Low[barindex-idx0]<High[barindex-idx1] and Low[barindex-idx0]>Low[barindex-idx2] and (Close>High[barindex-idx1] and open<High[barindex-idx1]) then
If showPattern then
DRAWTEXT("1",idx2,Low[barindex-idx2]-ATR[Barindex-Idx2]/2,Dialog,Bold,20) coloured("BLUE",255)
DRAWTEXT("2",idx1,High[barindex-idx1]+ATR[Barindex-Idx1]/2,Dialog,Bold,20) coloured("BLUE",255)
DRAWTEXT("3",idx0,Low[barindex-idx0]-ATR[Barindex-Idx0]/2,Dialog,Bold,20) coloured("BLUE",255)
DRAWSEGMENT(idx2,Low[barindex-idx2],idx1,High[barindex-idx1]) STYLE(Line,3) coloured("BLUE",255)
DRAWSEGMENT(idx1,High[barindex-idx1],idx0,Low[barindex-idx0]) STYLE(Line,3) coloured("BLUE",255)
Endif
If showBreak then
DRAWSEGMENT(idx1,High[barindex-idx1],barindex+1,High[barindex-idx1]) STYLE(DOTTEDLINE2,2) coloured("BLUE",255)
DRAWARROWUP(barindex,Low-ATR/2) coloured("GREEN",255)
Endif
Endif
Endif
Endif
Return