Bonsoir a tous, j espère que le sujet n a pas déjà été traité sinon je m excuse par avance , cela dit l I.A peut surement aider. J utilise le code ci dessous sur mes graphiques indice TF 1H, je ne suis pas ici pour le promouvoir, les traders adepte de cette technique peuvent se l appropriés. Ma problématique est lorsque je l’applique au paires forex exemple EUR BBP , l indicateur n’apparaît pas. //———————————————-
// Imbalances MTF avec projection dans le present
// Version 1H — multiples de 1H
// 1H + 2H + 4H + 8H + Daily
//———————————————-
DEFPARAM DrawOnLastBarOnly = false
DEFPARAM calculateonlastbars = 2000
minZoneSize = 5
// ================================================================
// DETECTION 2H
// ================================================================
TIMEFRAME(120 minute, updateonclose)
newTop2h = 0
newBot2h = 0
topTop2h = 0
topBot2h = 0
botTop2h = 0
botBot2h = 0
TopSize2h = low[3] – high[1]
IF low[3] <= open[2] AND high[1] >= close[2] AND TopSize2h > minZoneSize THEN
newTop2h = 1
topTop2h = low[3]
topBot2h = high[1]
ENDIF
BotSize2h = low[1] – high[3]
IF high[3] >= open[2] AND low[1] <= close[2] AND BotSize2h > minZoneSize THEN
newBot2h = 1
botTop2h = low[1]
botBot2h = high[3]
ENDIF
Top2hdraw = topTop2h
Bot2hdraw = topBot2h
Top2hbdraw = botTop2h
Bot2hbdraw = botBot2h
// ================================================================
// DETECTION 4H
// ================================================================
TIMEFRAME(240 minute, updateonclose)
newTop4h = 0
newBot4h = 0
topTop4h = 0
topBot4h = 0
botTop4h = 0
botBot4h = 0
TopSize4h = low[3] – high[1]
IF low[3] <= open[2] AND high[1] >= close[2] AND TopSize4h > minZoneSize THEN
newTop4h = 1
topTop4h = low[3]
topBot4h = high[1]
ENDIF
BotSize4h = low[1] – high[3]
IF high[3] >= open[2] AND low[1] <= close[2] AND BotSize4h > minZoneSize THEN
newBot4h = 1
botTop4h = low[1]
botBot4h = high[3]
ENDIF
Top4hdraw = topTop4h
Bot4hdraw = topBot4h
Top4hbdraw = botTop4h
Bot4hbdraw = botBot4h
// ================================================================
// DETECTION 8H
// ================================================================
TIMEFRAME(480 minute, updateonclose)
newTop8h = 0
newBot8h = 0
topTop8h = 0
topBot8h = 0
botTop8h = 0
botBot8h = 0
TopSize8h = low[3] – high[1]
IF low[3] <= open[2] AND high[1] >= close[2] AND TopSize8h > minZoneSize THEN
newTop8h = 1
topTop8h = low[3]
topBot8h = high[1]
ENDIF
BotSize8h = low[1] – high[3]
IF high[3] >= open[2] AND low[1] <= close[2] AND BotSize8h > minZoneSize THEN
newBot8h = 1
botTop8h = low[1]
botBot8h = high[3]
ENDIF
Top8hdraw = topTop8h
Bot8hdraw = topBot8h
Top8hbdraw = botTop8h
Bot8hbdraw = botBot8h
// ================================================================
// DETECTION DAILY
// ================================================================
TIMEFRAME(daily, updateonclose)
newTopD = 0
newBotD = 0
topTopD = 0
topBotD = 0
botTopD = 0
botBotD = 0
TopSizeD = low[3] – high[1]
IF low[3] <= open[2] AND high[1] >= close[2] AND TopSizeD > minZoneSize THEN
newTopD = 1
topTopD = low[3]
topBotD = high[1]
ENDIF
BotSizeD = low[1] – high[3]
IF high[3] >= open[2] AND low[1] <= close[2] AND BotSizeD > minZoneSize THEN
newBotD = 1
botTopD = low[1]
botBotD = high[3]
ENDIF
TopDdraw = topTopD
BotDdraw = topBotD
TopDbdraw = botTopD
BotDbdraw = botBotD
// ================================================================
// TIMEFRAME DEFAULT — 1H
// ================================================================
TIMEFRAME(default)
// ================================================================
// ZONES 1H (detection native)
// ================================================================
// ================================================================
// ZONES 1H (detection native)
// ================================================================
ONCE z1hCount = 0
ONCE z1hIdx = 0
z1hMax = 50
TopImb1h = 0
BotImb1h = 0
TopSize1h = low[2] – high[0]
BotSize1h = low[0] – high[2]
IF low[2] <= open[1] AND high[0] >= close[1] AND TopSize1h >= minZoneSize THEN
TopImb1h = 1
ENDIF
IF high[2] >= open[1] AND low[0] <= close[1] AND BotSize1h >= minZoneSize THEN
BotImb1h = 1
ENDIF
IF TopImb1h = 1 THEN
$z1hTop[z1hIdx] = low[2]
$z1hBot[z1hIdx] = high[0]
$z1hType[z1hIdx] = 1
$z1hFill[z1hIdx] = high
z1hIdx = z1hIdx + 1
IF z1hIdx >= z1hMax THEN
z1hIdx = 0
ENDIF
IF z1hCount < z1hMax THEN
z1hCount = z1hCount + 1
ENDIF
ENDIF
IF BotImb1h = 1 THEN
$z1hTop[z1hIdx] = low[0]
$z1hBot[z1hIdx] = high[2]
$z1hType[z1hIdx] = -1
$z1hFill[z1hIdx] = low
z1hIdx = z1hIdx + 1
IF z1hIdx >= z1hMax THEN
z1hIdx = 0
ENDIF
IF z1hCount < z1hMax THEN
z1hCount = z1hCount + 1
ENDIF
ENDIF
// ================================================================
// ZONES 2H
// ================================================================
ONCE z2hCount = 0
ONCE z2hIdx = 0
z2hMax = 30
IF newTop2h = 1 AND newTop2h[1] = 0 THEN
$z2hTop[z2hIdx] = topTop2h
$z2hBot[z2hIdx] = topBot2h
$z2hType[z2hIdx] = 1
$z2hFill[z2hIdx] = high
z2hIdx = z2hIdx + 1
IF z2hIdx >= z2hMax THEN
z2hIdx = 0
ENDIF
IF z2hCount < z2hMax THEN
z2hCount = z2hCount + 1
ENDIF
ENDIF
IF newBot2h = 1 AND newBot2h[1] = 0 THEN
$z2hTop[z2hIdx] = botTop2h
$z2hBot[z2hIdx] = botBot2h
$z2hType[z2hIdx] = -1
$z2hFill[z2hIdx] = low
z2hIdx = z2hIdx + 1
IF z2hIdx >= z2hMax THEN
z2hIdx = 0
ENDIF
IF z2hCount < z2hMax THEN
z2hCount = z2hCount + 1
ENDIF
ENDIF
// ================================================================
// ZONES 4H
// ================================================================
ONCE z4hCount = 0
ONCE z4hIdx = 0
z4hMax = 20
IF newTop4h = 1 AND newTop4h[1] = 0 THEN
$z4hTop[z4hIdx] = topTop4h
$z4hBot[z4hIdx] = topBot4h
$z4hType[z4hIdx] = 1
$z4hFill[z4hIdx] = high
z4hIdx = z4hIdx + 1
IF z4hIdx >= z4hMax THEN
z4hIdx = 0
ENDIF
IF z4hCount < z4hMax THEN
z4hCount = z4hCount + 1
ENDIF
ENDIF
IF newBot4h = 1 AND newBot4h[1] = 0 THEN
$z4hTop[z4hIdx] = botTop4h
$z4hBot[z4hIdx] = botBot4h
$z4hType[z4hIdx] = -1
$z4hFill[z4hIdx] = low
z4hIdx = z4hIdx + 1
IF z4hIdx >= z4hMax THEN
z4hIdx = 0
ENDIF
IF z4hCount < z4hMax THEN
z4hCount = z4hCount + 1
ENDIF
ENDIF
// ================================================================
// ZONES 8H
// ================================================================
ONCE z8hCount = 0
ONCE z8hIdx = 0
z8hMax = 15
IF newTop8h = 1 AND newTop8h[1] = 0 THEN
$z8hTop[z8hIdx] = topTop8h
$z8hBot[z8hIdx] = topBot8h
$z8hType[z8hIdx] = 1
$z8hFill[z8hIdx] = high
z8hIdx = z8hIdx + 1
IF z8hIdx >= z8hMax THEN
z8hIdx = 0
ENDIF
IF z8hCount < z8hMax THEN
z8hCount = z8hCount + 1
ENDIF
ENDIF
IF newBot8h = 1 AND newBot8h[1] = 0 THEN
$z8hTop[z8hIdx] = botTop8h
$z8hBot[z8hIdx] = botBot8h
$z8hType[z8hIdx] = -1
$z8hFill[z8hIdx] = low
z8hIdx = z8hIdx + 1
IF z8hIdx >= z8hMax THEN
z8hIdx = 0
ENDIF
IF z8hCount < z8hMax THEN
z8hCount = z8hCount + 1
ENDIF
ENDIF
// ================================================================
// ZONES DAILY
// ================================================================
ONCE zDCount = 0
ONCE zDIdx = 0
zDMax = 10
IF newTopD = 1 AND newTopD[1] = 0 THEN
$zDTop[zDIdx] = topTopD
$zDBot[zDIdx] = topBotD
$zDType[zDIdx] = 1
$zDFill[zDIdx] = high
zDIdx = zDIdx + 1
IF zDIdx >= zDMax THEN
zDIdx = 0
ENDIF
IF zDCount < zDMax THEN
zDCount = zDCount + 1
ENDIF
ENDIF
IF newBotD = 1 AND newBotD[1] = 0 THEN
$zDTop[zDIdx] = botTopD
$zDBot[zDIdx] = botBotD
$zDType[zDIdx] = -1
$zDFill[zDIdx] = low
zDIdx = zDIdx + 1
IF zDIdx >= zDMax THEN
zDIdx = 0
ENDIF
IF zDCount < zDMax THEN
zDCount = zDCount + 1
ENDIF
ENDIF
// ================================================================
// MISE A JOUR FILLS EN TEMPS REEL
// ================================================================
FOR i = 0 TO z1hCount – 1 DO
IF $z1hType[i] = 1 THEN
IF high > $z1hFill[i] THEN
$z1hFill[i] = high
ENDIF
ELSE
IF low < $z1hFill[i] THEN
$z1hFill[i] = low
ENDIF
ENDIF
NEXT
FOR i = 0 TO z2hCount – 1 DO
IF $z2hType[i] = 1 THEN
IF high > $z2hFill[i] THEN
$z2hFill[i] = high
ENDIF
ELSE
IF low < $z2hFill[i] THEN
$z2hFill[i] = low
ENDIF
ENDIF
NEXT
FOR i = 0 TO z4hCount – 1 DO
IF $z4hType[i] = 1 THEN
IF high > $z4hFill[i] THEN
$z4hFill[i] = high
ENDIF
ELSE
IF low < $z4hFill[i] THEN
$z4hFill[i] = low
ENDIF
ENDIF
NEXT
FOR i = 0 TO z8hCount – 1 DO
IF $z8hType[i] = 1 THEN
IF high > $z8hFill[i] THEN
$z8hFill[i] = high
ENDIF
ELSE
IF low < $z8hFill[i] THEN
$z8hFill[i] = low
ENDIF
ENDIF
NEXT
FOR i = 0 TO zDCount – 1 DO
IF $zDType[i] = 1 THEN
IF high > $zDFill[i] THEN
$zDFill[i] = high
ENDIF
ELSE
IF low < $zDFill[i] THEN
$zDFill[i] = low
ENDIF
ENDIF
NEXT
// ================================================================
// PROJECTION DANS LE PRESENT
// ================================================================
IF islastbarupdate THEN
xG = barindex – 2
xD = barindex + 8
// — ZONES 1H (jaune) —
FOR i = 0 TO z1hCount – 1 DO
zT = $z1hTop[i]
zB = $z1hBot[i]
zF = $z1hFill[i]
zTyp = $z1hType[i]
IF zTyp = 1 THEN
IF zF < zT THEN
IF zF > zB THEN
DrawRectangle(xG, zF, xD, zB) coloured(255,255,255,255) bordercolor(255,255,255,255)
DrawRectangle(xG, zT, xD, zF) coloured(255,255,0,80) bordercolor(255,255,0,200)
ELSE
DrawRectangle(xG, zT, xD, zB) coloured(255,255,0,80) bordercolor(255,255,0,200)
ENDIF
ENDIF
ELSE
IF zF > zB THEN
IF zF < zT THEN
DrawRectangle(xG, zT, xD, zF) coloured(255,255,255,255) bordercolor(255,255,255,255)
DrawRectangle(xG, zF, xD, zB) coloured(255,255,0,80) bordercolor(255,255,0,200)
ELSE
DrawRectangle(xG, zT, xD, zB) coloured(255,255,0,80) bordercolor(255,255,0,200)
ENDIF
ENDIF
ENDIF
NEXT
// — ZONES 2H (orange) —
FOR i = 0 TO z2hCount – 1 DO
zT = $z2hTop[i]
zB = $z2hBot[i]
zF = $z2hFill[i]
zTyp = $z2hType[i]
IF zTyp = 1 THEN
IF zF < zT THEN
IF zF > zB THEN
DrawRectangle(xG, zF, xD, zB) coloured(255,255,255,255) bordercolor(255,255,255,255)
DrawRectangle(xG, zT, xD, zF) coloured(255,165,0,200) bordercolor(255,165,0,255) //coloured(255,165,0,200) bordercolor(255,165,0,255)
ELSE
DrawRectangle(xG, zT, xD, zB) coloured(255,165,0,200) bordercolor(255,165,0,255)
ENDIF
ENDIF
ELSE
IF zF > zB THEN
IF zF < zT THEN
DrawRectangle(xG, zT, xD, zF) coloured(255,255,255,255) bordercolor(255,255,255,255)
DrawRectangle(xG, zF, xD, zB) coloured(255,165,0,80) bordercolor(255,165,0,200)
ELSE
DrawRectangle(xG, zT, xD, zB) coloured(255,165,0,80) bordercolor(255,165,0,200)
ENDIF
ENDIF
ENDIF
NEXT
// — ZONES 4H (vert) —
FOR i = 0 TO z4hCount – 1 DO
zT = $z4hTop[i]
zB = $z4hBot[i]
zF = $z4hFill[i]
zTyp = $z4hType[i]
IF zTyp = 1 THEN
IF zF < zT THEN
IF zF > zB THEN
DrawRectangle(xG, zF, xD, zB) coloured(255,255,255,255) bordercolor(255,255,255,255)
DrawRectangle(xG, zT, xD, zF) coloured(0,200,100,80) bordercolor(0,200,100,200)
ELSE
DrawRectangle(xG, zT, xD, zB) coloured(0,200,100,80) bordercolor(0,200,100,200)
ENDIF
ENDIF
ELSE
IF zF > zB THEN
IF zF < zT THEN
DrawRectangle(xG, zT, xD, zF) coloured(255,255,255,255) bordercolor(255,255,255,255)
DrawRectangle(xG, zF, xD, zB) coloured(0,200,100,80) bordercolor(0,200,100,200)
ELSE
DrawRectangle(xG, zT, xD, zB) coloured(0,200,100,80) bordercolor(0,200,100,200)
ENDIF
ENDIF
ENDIF
NEXT
// — ZONES 8H (violet) —
FOR i = 0 TO z8hCount – 1 DO
zT = $z8hTop[i]
zB = $z8hBot[i]
zF = $z8hFill[i]
zTyp = $z8hType[i]
IF zTyp = 1 THEN
IF zF < zT THEN
IF zF > zB THEN
DrawRectangle(xG, zF, xD, zB) coloured(255,255,255,255) bordercolor(255,255,255,255)
DrawRectangle(xG, zT, xD, zF) coloured(160,32,240,80) bordercolor(160,32,240,200)
ELSE
DrawRectangle(xG, zT, xD, zB) coloured(160,32,240,80) bordercolor(160,32,240,200)
ENDIF
ENDIF
ELSE
IF zF > zB THEN
IF zF < zT THEN
DrawRectangle(xG, zT, xD, zF) coloured(255,255,255,255) bordercolor(255,255,255,255)
DrawRectangle(xG, zF, xD, zB) coloured(160,32,240,80) bordercolor(160,32,240,200)
ELSE
DrawRectangle(xG, zT, xD, zB) coloured(160,32,240,80) bordercolor(160,32,240,200)
ENDIF
ENDIF
ENDIF
NEXT
// — ZONES DAILY (cyan) —
FOR i = 0 TO zDCount – 1 DO
zT = $zDTop[i]
zB = $zDBot[i]
zF = $zDFill[i]
zTyp = $zDType[i]
IF zTyp = 1 THEN
IF zF < zT THEN
IF zF > zB THEN
DrawRectangle(xG, zF, xD, zB) coloured(255,255,255,255) bordercolor(255,255,255,255)
DrawRectangle(xG, zT, xD, zF) coloured(0,255,255,80) bordercolor(0,255,255,200)
ELSE
DrawRectangle(xG, zT, xD, zB) coloured(0,255,255,80) bordercolor(0,255,255,200)
ENDIF
ENDIF
ELSE
IF zF > zB THEN
IF zF < zT THEN
DrawRectangle(xG, zT, xD, zF) coloured(255,255,255,255) bordercolor(255,255,255,255)
DrawRectangle(xG, zF, xD, zB) coloured(0,255,255,80) bordercolor(0,255,255,200)
ELSE
DrawRectangle(xG, zT, xD, zB) coloured(0,255,255,80) bordercolor(0,255,255,200)
ENDIF
ENDIF
ENDIF
NEXT
// ================================================================
// CARTOUCHE LEGENDE — centre en haut
// ================================================================
DrawText(“IMBALANCES 1H :”, barindex – 40, highest[100](high) + averagetruerange[14](close) * 3.0, Dialog, Bold, 10) coloured(255,255,255)
DrawText(“JAUNE = 1H”, barindex – 40, highest[100](high) + averagetruerange[14](close) * 2.2, Dialog, Bold, 10) coloured(255,255,0)
DrawText(“ORANGE = 2H”, barindex – 40, highest[100](high) + averagetruerange[14](close) * 1.6, Dialog, Bold, 10) coloured(255,165,0)
DrawText(“VERT = 4H”, barindex – 40, highest[100](high) + averagetruerange[14](close) * 1.0, Dialog, Bold, 10) coloured(0,200,100)
DrawText(“VIOLET = 8H”, barindex – 40, highest[100](high) + averagetruerange[14](close) * 0.4, Dialog, Bold, 10) coloured(160,32,240)
DrawText(“CYAN = DAILY”, barindex – 40, highest[100](high) + averagetruerange[14](close) * (-0.2), Dialog, Bold, 10) coloured(0,255,255)
DrawText(“BLANC = REVISITE”, barindex – 40, highest[100](high) + averagetruerange[14](close) * (-0.8), Dialog, Bold, 10) coloured(255,255,255)
ENDIF
RETURN