Drawrectangle Evolutif/Astuce

Viewing 4 posts - 1 through 4 (of 4 total)
  • Author
    Posts
  • #241306 quote
    Alai-n
    Participant
    Veteran

    Ce post n’a d’autre but que de faire connaître le travail d’un membre du forum, “Blade 106” bien trop peu actif à mon sens!
    Dans le cadre de la représentation graphique de “Fair Value Gap(FVG)” selon l’approche ICT-SMC, il a créé un “Drawrectangle” rétractable. J’ignorais que ce procédé était possible sur Probuilder.
    Il est d’habitude de voir des “Drawrectangle” qui restent fixes et figés dans le temps sur nos graphiques. Avec la formulation de “Blade 106”, les “Drawrectangle” vont disparaître au fur et à mesure que les “FVG” vont être comblés.
    Je trouve ça génial et cela rend vraiment les graphiques beaucoup plus lisibles!
    Je le mets en avant ici, afin de peut-être démocratiser la formule dans la perspective de nouveaux algorithmes…
    Je joins le code et une image, mais il va de soi que seul un accès en temps réel peut permettre de se rendre compte de la beauté de la chose!

    DEFPARAM DrawOnLastBarOnly = true
    DEBUG = 0
    
    // Start of code, don't change anything below
    
    IF IsLastBarUpdate THEN
    $RangeHigh[0] = 0
    $RangeLow[0] = 0
    $RangeIndex[0] = 0
    RangeIdx = 0
    BI = 0
    B = 0
    RI = 0
    TotalBars = BarIndex[0]
    
    IF DEBUG = 1 THEN
    DRAWTEXT("Total bars: #TotalBars#", BarIndex[0], High[0])
    ENDIF
    
    // List all imbalance
    FOR RI = 1 TO TotalBars - 2 DO
    BI = BarIndex[RI]
    //drawtext("#BI#", BI, High[RI])
    IF High[BI - 1] < Low[BI + 1] THEN
    RangeIdx = RangeIdx + 1
    $RangeHigh[RangeIdx] = Low[BI + 1]
    $RangeLow[RangeIdx] = High[BI - 1]
    $RangeIndex[RangeIdx] = RI
    ENDIF
    IF High[BI + 1] < Low[BI - 1] THEN
    RangeIdx = RangeIdx + 1
    $RangeHigh[RangeIdx] = Low[BI - 1]
    $RangeLow[RangeIdx] = High[BI + 1]
    $RangeIndex[RangeIdx] = RI
    ENDIF
    NEXT
    
    IF DEBUG = 1 THEN
    DRAWTEXT("Imbalance found: #RangeIdx#", BarIndex[0], Low[0])
    ENDIF
    
    // Remove mitigated imbalance
    FOR RI = 1 TO RangeIdx DO
    IF DEBUG = 1 THEN
    DRAWRECTANGLE($RangeIndex[RI] - 1, $RangeHigh[RI], $RangeIndex[RI] + 1, $RangeLow[RI]) COLOURED(0,0,200)
    ENDIF
    
    Valid = 1
    FOR B = $RangeIndex[RI] + 2 TO TotalBars DO
    LB = Low[BarIndex[B]]
    HB = High[BarIndex[B]]
    // Candle is above or below our zone, ignore it
    IF LB >= $RangeHigh[RI] OR HB <= $RangeLow[RI] THEN
    IF DEBUG = 1 THEN
    DRAWTEXT("Out", B, High[BarIndex[B]])
    ENDIF
    CONTINUE
    ENDIF
    
    IF LB <= $RangeLow[RI] THEN
    // Candle engulfs our zone, so imbalance is mitigated
    IF HB >= $RangeHigh[RI] THEN
    IF DEBUG = 1 THEN
    DRAWTEXT("Mitigated", B, High[BarIndex[B]])
    ENDIF
    Valid = 0
    BREAK
    ENDIF
    IF DEBUG = 1 THEN
    DRAWTEXT("High", B, High[BarIndex[B]])
    ENDIF
    $RangeLow[RI] = HB
    ELSE
    // In this case, Low is within the zone
    IF DEBUG = 1 THEN
    DRAWTEXT("Low", B, High[BarIndex[B]])
    ENDIF
    $RangeHigh[RI] = LB
    ENDIF
    NEXT
    IF Valid = 1 THEN
    DRAWRECTANGLE($RangeIndex[RI], $RangeHigh[RI], TotalBars+2000, $RangeLow[RI]) COLOURED(0,0,0,0) FILLCOLOR(0,0,0,30)
    ENDIF
    
    NEXT
    
    ENDIF
    
    RETURN
    
    #241309 quote
    Alai-n
    Participant
    Veteran
    #241313 quote
    Iván González
    Moderator
    Master

    gracias

    #241318 quote
    LucasBest
    Participant
    Junior

    C’est l’instruction ci-dessous qui efface tous les éléments graphiques à chaque nouvelle bougie (c”est par ailleurs le seul moyen d’effacer à ma connaissance), pour ne retracer que les éléments que l’on demande au code de tracer lors de la dernière lecture du code (suite à la dernière bougie donc). Il suffit de stocker tous les éléments que l’on veut retracer dans un tableau (avec possibilité d’en éliminer au passage) pour les retracer tous à chaque nouvelle bougie en parcourant le tableau… Cela fonctionne bien sûre avec toutes les instructions graphiques (segments, ligne triangle, etc)

    DEFPARAM DrawOnLastBarOnly = true

Viewing 4 posts - 1 through 4 (of 4 total)
  • You must be logged in to reply to this topic.

Drawrectangle Evolutif/Astuce


ProBuilder : Indicateurs & Outils Personnalisés

New Reply
Author
author-avatar
Alai-n @alai-n Participant
Summary

This topic contains 3 replies,
has 3 voices, and was last updated by LucasBest
1 year, 1 month ago.

Topic Details
Forum: ProBuilder : Indicateurs & Outils Personnalisés
Language: French
Started: 12/10/2024
Status: Active
Attachments: 2 files
Logo Logo
Loading...