Pour avoir plusieurs unités de temps sur un seul graphique, j’utilise une unité de temps basse de 5 minutes sur lequel j’applique 2 indicateurs. Un pour affiché le trend de l’ExtraTrend et un autre pour afficher les chandeliers journalier :
Defparam DRAWONLASTBARONLY = true
// ******************** WARNING ********************
//
// This code ONLY work in UT 5min (or raise exception)
// and is more accurate with more than 5K bars loaded
// due to uppper timeframe calculations.
//
// ******************** WARNING ********************
timeframe(540mn) // 1 day
dd, ignored, ignored = CALL "ExtraTrend"[0, 0, 0, 0, 0](close)
timeframe(60mn) // 1 hour
hh, ignored, ignored = CALL "ExtraTrend"[0, 0, 0, 0, 0](close)
timeframe(5mn) // 5 min
Trend5, ignored, ignored = CALL "ExtraTrend"[0, 0, 0, 0, 0](close)
timeframe(default)
// --- Display
if day <> day[1] then
Trend540 = dd
endif
if hour <> hour[1] then
Trend60 = hh
endif
return Trend540 coloured(0,204,204,255) style(Line, 2) as "Day", Trend60 coloured(0,0,0,255) style(Line, 2) as "Hour", Trend5 coloured(220,100,100,255) style(Line, 2) as "5mn"
// DayBox Overlay
//
// TODO:
// * Fix last bar redraw
// * Add timeframe detection
// * Add colors customization
if day <> day[1] then
pClose = close[1]
middle = start+ROUND((barindex[1]-start)/2)
if pOpen < pClose then
DRAWRECTANGLE(start, pOpen, barindex[1], pClose) coloured(0,204,204,50) bordercolor(0,204,204,50)
DRAWRECTANGLE(middle, pOpen, (middle+1), pLow)coloured(150,150,150,255) bordercolor(150,150,150,255)
DRAWRECTANGLE(middle, pClose, (middle+1), pHigh)coloured(150,150,150,255) bordercolor(150,150,150,255)
else
DRAWRECTANGLE(start, pOpen, barindex[1], pClose) coloured(220,100,100,50) bordercolor(220,100,100,50)
DRAWRECTANGLE(middle, pOpen, (middle+1), pHigh)coloured(150,150,150,255) bordercolor(150,150,150,255)
DRAWRECTANGLE(middle, pClose, (middle+1), pLow)coloured(150,150,150,255) bordercolor(150,150,150,255)
endif
start = barindex
pOpen = open
pHigh = close
pLow = open
endif
if islastbarupdate then
pClose = close
middle = start+ROUND((barindex-start)/2)
if pOpen < pClose then
DRAWRECTANGLE(start, pOpen, barindex, pClose) coloured(0,204,204,50) bordercolor(0,204,204,50)
DRAWRECTANGLE(middle, pOpen, (middle+1), pLow)coloured(150,150,150,50) bordercolor(150,150,150,50)
DRAWRECTANGLE(middle, pClose, (middle+1), pHigh)coloured(150,150,150,50) bordercolor(150,150,150,50)
else
DRAWRECTANGLE(start, pOpen, barindex, pClose) coloured(220,100,100,50) bordercolor(220,100,100,50)
DRAWRECTANGLE(middle, pOpen, (middle+1), pHigh)coloured(150,150,150,50) bordercolor(150,150,150,50)
DRAWRECTANGLE(middle, pClose, (middle+1), pLow)coloured(150,150,150,50) bordercolor(150,150,150,50)
endif
endif
if high > pHigh then
pHigh = high
endif
if low < pLow then
pLow = low
endif
return
Résultat: