IMBALANCE CODE ..

Viewing 2 posts - 16 through 17 (of 17 total)
  • Author
    Posts
  • #265082 quote
    bertrandpinoybertrandpinoy
    Participant
    Veteran

    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
    
    #265093 quote
    JSJS
    Participant
    Master

    Bonjour bertrandpinoy,

    Une grande différence entre les indices et le Forex concerne le « pipsize »…

    Lorsque tu utilises par exemple dans ton code minZoneSize = 5, cette valeur peut être adaptée aux indices utilisés, mais pour le Forex, une valeur de minZoneSize = 5 est beaucoup trop élevée…

    Une solution pourrait être de modifier cette valeur, par exemple, en minZoneSize = pipsize * 5, afin que cela puisse fonctionner aussi bien sur un indice que sur une paire Forex…

    Il y a plusieurs endroits dans le code où cette modification doit être effectuée…

    bertrandpinoy, Nicolas and robertogozzi thanked this post
Viewing 2 posts - 16 through 17 (of 17 total)
  • You must be logged in to reply to this topic.
ProRealAI ProRealAI New

Stuck on this ProBuilder code?

Describe what this topic is trying to build, in plain English, and ProRealAI writes the ProRealTime™ indicator, screener or system for you.

Available in 7 languages
Try ProRealAI

IMBALANCE CODE ..


ProBuilder : Indicateurs & Outils Personnalisés

New Reply
Author
author-avatar
Armand2020 @armand2020 Participant
Summary

This topic contains 16 replies,
has 9 voices, and was last updated by JSJS
1 month, 2 weeks ago.

Topic Details
Forum: ProBuilder : Indicateurs & Outils Personnalisés
Language: French
Started: 06/29/2022
Status: Active
Attachments: 12 files
ProRealCode ProRealCode
Loading...