Indicateur avec affichage Range Bars
Forums › ProRealTime forum Français › Support ProBuilder › Indicateur avec affichage Range Bars
- This topic has 8 replies, 3 voices, and was last updated 2 weeks ago by
JM.
-
-
09/25/2025 at 2:11 PM #251804Bonjour,
J’ai écris un programme qui trace le plus haut et le plus bas trouvé dans une plage horaire (ex 17h30 – 22h dans mon cas). Cependant j’ai un soucis quand j’utilise cet indicateur avec des Range Bars car je n’ai parfois pas la bougie correspondante à la minute souhaitée. Si le marché est calme, je peux avoir parfois plusieurs minutes d’écart entre 2 Range Bar. Comment améliorer mon algo pour que cela fonctionne à chaque fois ? J’ai essayé avec currentMinute mais c’est pas mieux. Ci-joint mon programme. Par avance merci.ONCE JourDebut = Dayofweek
ONCE JourFin = Dayofweek
if (JourDebut >= 6) then
JourDebut = 1
endif
if (JourFin >= 6) then
JourFin = 1
endif
If ((Hour = DebutHeure) and ((Minute >= DebutMinute-2) and (Minute <= DebutMinute+2)) and (JourDebut = Dayofweek)) then
CptBarDebut = barindex
JourDebut = JourDebut + 1
DRAWARROWUP (barindex, open) COLOURED (0, 255, 0)
endifIf ((Hour = FinHeure) and ((Minute >= FinMinute-1) and (Minute <= FinMinute+1)) and (JourFin = Dayofweek)) then
CptBarFin = barindex
JourFin = JourFin + 1
DRAWARROWDOWN (barindex, open) COLOURED (255, 0, 0)NbPeriodes = CptBarFin – CptBarDebut
pLowSeance = Lowest[NbPeriodes](Low)
pHighSeance = Highest[NbPeriodes](High)DrawSegment(barindex+4, pLowSeance, barindex + 84, pLowSeance) coloured(0,255,255)
DRAWTEXT(“Blue Bar LOW”, barindex+8, pLowSeance+5) ANCHOR(TOPLEFT, INDEX, VALUE)DrawSegment(barindex+4, pHighSeance, barindex + 84, pHighSeance) coloured(0,255,255)
DRAWTEXT(“Blue Bar HIGH”, barindex+8, pHighSeance+5) ANCHOR(TOPLEFT, INDEX, VALUE)pMoitieSeance = (pHighSeance – pLowSeance) / 2
DrawSegment(barindex+4, pMoitieSeance + pLowSeance, barindex + 84, pMoitieSeance + pLowSeance) coloured(0,255,255)endif
return09/26/2025 at 9:43 AM #251841Avec les Range Bars, on ne peut pas se baser sur une minute exacte, car il se peut qu’aucune bougie ne soit créée à 17h30 ou 22h00 si le marché est calme.
La bonne approche consiste à mémoriser la première bougie dont OpenTime est ≥ à l’heure de début et la première bougie dont OpenTime est ≥ à l’heure de fin. Ensuite, on calcule le Highest et le Lowest entre ces deux index.
De cette manière, l’algorithme fonctionne même quand plusieurs minutes s’écoulent entre deux Range Bars.
Voici un exemple corrigé :12345678910111213141516171819202122232425262728// VariablesDebut = 173000Fin = 220000// Detect start of sessionIF openTime >= Debut AND startBar = 0 THENstartBar = BarIndexendBar = 0ENDIF// Detect end of sessionIF openTime >= Fin AND endBar = 0 THENendBar = BarIndexnbPeriods = endBar - startBarif nbPeriods>0 thenpLowSeance = Lowest[nbPeriods](Low)pHighSeance = Highest[nbPeriods](High)// Draw levelsDrawSegment(barindex, pLowSeance, barindex+84, pLowSeance) coloured(0,255,255)DrawSegment(barindex, pHighSeance, barindex+84, pHighSeance) coloured(0,255,255)endif//RestartstartBar = 0ENDIFreturn1 user thanked author for this post.
09/26/2025 at 11:11 AM #251847Super merci beaucoup Ivan !
Effectivement avec ta solution je trouve la première barre a partir de l’heure que je souhaite, ca peut-être longtemps après 17h30…
Mais je peux essayer de regarder la barre précédente et mémoriser le High et le Low et ensuite comparer avec le High et le Low que je trouve pendant la période 17h30 22h00 et ajuster ainsi mon calcul du plus haut plus bas sur la période…Autre question, est-ce que sur un graphique 15 minutes ce code fonctionne aussi car j’ai un doute sur le démarrage du calcul sur la première barre à 17h30 :
Quand le programme commence on est sur la bougie de 17h45, donc on n’a pas le plus haut (plus bas) de la bougie de 17h30 ?
Ci-joint un graphique pour mieux comprendre.
Merci09/26/2025 at 1:35 PM #251853Oui, tu as bien compris. Avec le code, on prend la première barre après 17h30.
Si tu veux inclure aussi la barre de 17h30, il suffit de mémoriser leBarIndex - 1
comme point de départ, ce qui inclura la bougie précédente dans le calcul.09/26/2025 at 2:23 PM #25185409/26/2025 at 3:23 PM #251857Oui, en ProBuilder tu as plusieurs fonctions natives qui te donnent directement la date et l’heure d’une bougie :
Date → renvoie la date (format AAAAMMJJ)
Hour → renvoie l’heure d’ouverture de la bougie (0–23)
Minute → renvoie les minutes d’ouverture (0–59)
Second → renvoie les secondes d’ouverture (0–59)
OpenTime → renvoie l’heure complète sous forme HHMMSS (par ex. 173000 pour 17h30)1 user thanked author for this post.
09/26/2025 at 4:23 PM #251866Bonjour, elles sont toutes là:
https://www.prorealcode.com/documentation/category/dateandtime/
Toutes celles avec “open” devant correspondent à l’horaire d’ouverture de la bougie, et les mêmes sans préfixe “open” correspondent à l’horaire de fermeture de la bougie.
1 user thanked author for this post.
09/26/2025 at 5:40 PM #25187009/26/2025 at 5:41 PM #251871 -
AuthorPosts
Find exclusive trading pro-tools on