Drawrectangle Evolutif/Astuce
Forums › ProRealTime forum Français › Support ProBuilder › Drawrectangle Evolutif/Astuce
-
-
12/10/2024 at 12:19 PM #241306
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!By Blade 1061234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889DEFPARAM DrawOnLastBarOnly = trueDEBUG = 0// Start of code, don't change anything belowIF IsLastBarUpdate THEN$RangeHigh[0] = 0$RangeLow[0] = 0$RangeIndex[0] = 0RangeIdx = 0BI = 0B = 0RI = 0TotalBars = BarIndex[0]IF DEBUG = 1 THENDRAWTEXT("Total bars: #TotalBars#", BarIndex[0], High[0])ENDIF// List all imbalanceFOR RI = 1 TO TotalBars - 2 DOBI = BarIndex[RI]//drawtext("#BI#", BI, High[RI])IF High[BI - 1] < Low[BI + 1] THENRangeIdx = RangeIdx + 1$RangeHigh[RangeIdx] = Low[BI + 1]$RangeLow[RangeIdx] = High[BI - 1]$RangeIndex[RangeIdx] = RIENDIFIF High[BI + 1] < Low[BI - 1] THENRangeIdx = RangeIdx + 1$RangeHigh[RangeIdx] = Low[BI - 1]$RangeLow[RangeIdx] = High[BI + 1]$RangeIndex[RangeIdx] = RIENDIFNEXTIF DEBUG = 1 THENDRAWTEXT("Imbalance found: #RangeIdx#", BarIndex[0], Low[0])ENDIF// Remove mitigated imbalanceFOR RI = 1 TO RangeIdx DOIF DEBUG = 1 THENDRAWRECTANGLE($RangeIndex[RI] - 1, $RangeHigh[RI], $RangeIndex[RI] + 1, $RangeLow[RI]) COLOURED(0,0,200)ENDIFValid = 1FOR B = $RangeIndex[RI] + 2 TO TotalBars DOLB = Low[BarIndex[B]]HB = High[BarIndex[B]]// Candle is above or below our zone, ignore itIF LB >= $RangeHigh[RI] OR HB <= $RangeLow[RI] THENIF DEBUG = 1 THENDRAWTEXT("Out", B, High[BarIndex[B]])ENDIFCONTINUEENDIFIF LB <= $RangeLow[RI] THEN// Candle engulfs our zone, so imbalance is mitigatedIF HB >= $RangeHigh[RI] THENIF DEBUG = 1 THENDRAWTEXT("Mitigated", B, High[BarIndex[B]])ENDIFValid = 0BREAKENDIFIF DEBUG = 1 THENDRAWTEXT("High", B, High[BarIndex[B]])ENDIF$RangeLow[RI] = HBELSE// In this case, Low is within the zoneIF DEBUG = 1 THENDRAWTEXT("Low", B, High[BarIndex[B]])ENDIF$RangeHigh[RI] = LBENDIFNEXTIF Valid = 1 THENDRAWRECTANGLE($RangeIndex[RI], $RangeHigh[RI], TotalBars+2000, $RangeLow[RI]) COLOURED(0,0,0,0) FILLCOLOR(0,0,0,30)ENDIFNEXTENDIFRETURN12/10/2024 at 12:21 PM #241309https://www.prorealcode.com/user/blade106/?view=forums-replies
1 user thanked author for this post.
12/10/2024 at 1:53 PM #24131312/10/2024 at 8:30 PM #241318C’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
-
AuthorPosts