Affichage des cours sous forme de briques
Forums › ProRealTime forum Français › Support ProBuilder › Affichage des cours sous forme de briques
- This topic has 3 replies, 2 voices, and was last updated 26 minutes ago by
chardinternet.
-
-
03/14/2025 at 8:42 AM #244919
Bonjour à tous,
Je débute dans le code ProBuilder aussi acceptez d’avance mes excuses si je ne respecte pas les habitudes de ce forum.
Je travaille sur un indicateur personnalisé en ProBuilder, qui affiche des briques WL Bars (type Renko) basées sur des ticks. J’utilise
DRAWCANDLE
pour afficher chaque brique avec Open, High, Low, Close, mais je ne parviens pas à obtenir l’affichage correct des briques sur mon graphique.📌 Mon objectif :
- Afficher des briques individuelles (comme du Renko), sans ligne continue.
- Colorer les briques en vert (hausse) et rouge (baisse).
- Utiliser
DRAWCANDLE
pour tracer chaque brique avec les bons indices de temps (ticks).
📌 Problème rencontré :
J’ai utilisé la syntaxe suivante, mais les briques ne s’affichent pas :
prorealcodeDRAWCANDLE($barIndex[i], $open[i], $high[i], $low[i], $close[i]) COLOURED(0,255,0)
Ou encore avec une autre indexation :
prorealcodeDRAWCANDLE(barindex - i, $open[i], $high[i], $low[i], $close[i]) COLOURED(255,0,0)
Dans les deux cas, les briques ne s’affichent pas sur le graphique.
📌 Ma question :
1️⃣ Quelle est la bonne syntaxe pour afficher une brique avec DRAWCANDLE en mode ticks ?
2️⃣ Comment s’assurer que l’indexationbarIndex[i]
est bien prise en compte pour positionner les briques sur l’axe du temps ?
3️⃣ Y a-t-il une option ou un paramètre à modifier dans ProRealTime pour afficher correctement ces bougies ?BRICKSBARS12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061// BRCK Bars en ticks avec affichage sous forme de briques (Renko-like)// Paramètres personnalisablesBrickSize = 6 * pointsize // Taille des briques BRCK Bars (Renko)ActivateEMA = 1 // 1 = Activer EMA, 0 = DésactiverEMAperiod = 20 // Période de l'EMA// InitialisationONCE RenkoBase = closeONCE dir = 0ONCE bar = 0// Construction des WL Bars basées sur les ticksIF high > RenkoBase + BrickSize THENWHILE high > RenkoBase + BrickSize DORenkoBase = RenkoBase + BrickSizebar = bar + 1$open[bar] = $close[max(0, bar-1)]$barIndex[bar] = barindex - (bar - i) // Correction de l’indexation$color[bar] = 1$close[bar] = RenkoBase$high[bar] = max($open[bar], $close[bar]) // Définition du plus haut$low[bar] = min($open[bar], $close[bar]) // Définition du plus basdir = 1WENDELSIF low < RenkoBase - BrickSize THENWHILE low < RenkoBase - BrickSize DORenkoBase = RenkoBase - BrickSizebar = bar + 1$open[bar] = $close[max(0, bar-1)]$barIndex[bar] = barindex - (bar - i) // Correction de l’indexation$color[bar] = -1$close[bar] = RenkoBase$high[bar] = max($open[bar], $close[bar]) // Définition du plus haut$low[bar] = min($open[bar], $close[bar]) // Définition du plus basdir = -1WENDENDIF// Application de l'EMA si activéeIF ActivateEMA = 1 THENemaValue = Average[EMAperiod](close) // Correction de la syntaxeFOR i = bar DOWNTO 1 DO$close[i] = emaValueNEXTENDIF// Affichage des briques WL Bars avec DRAWCANDLEIF islastbarupdate AND bar > 2 THENFOR i = bar DOWNTO 1 DO// Affichage des briques haussières (vert)IF $color[i] = 1 THENDRAWCANDLE($open[i],$high[i],$low[i],$close[i]) COLOURED(0,255,0)ELSE// Affichage des briques baissières (rouge)DRAWCANDLE ($open[i],$high[i],$low[i],$close[i]) COLOURED(255,0,0)ENDIFNEXTENDIFRETURNMerci d’avance pour votre aide !
Cordialement,
03/14/2025 at 9:16 AM #244920Dans ce code toutes les briques s’affichent, mais une seule fois, à la suite, sur le dernier chandelier, dés réception d’un nouveau tick en temps réel.
Voici mes observations:
- DRAWCANDLE ne peut pas dessiner de chandeliers dans le passé
- même si cela était possible, ton code ne fournit aucune coordonnée pour le faire, sur l’axe X du temps (pour simuler des chandeliers en général on utilise des rectangles, il y a bon nombre d’exemples sur le site)
- ton calcul de moyenne mobile n’est pas correcte, si tu veux calculer une moyenne mobile sur des données qui ne sont pas linéaire (c’est le cas ici puisque chaque brique se crée non pas à chaque période, mais uniquement si les conditions sont remplies, alors ce n’est pas la bonne méthode).
- je pense que ta construction de la série de briques est correcte
- pour afficher les briques dans le passé, ta boucle est correcte, mais tu dois utiliser des rectangles en les positionnant avec ta variable $barindex[]
- tu dois ajouter DEFPARAM= DRAWONLASTBARONLY pour afficher les boîtes une seule fois que IsLastBarUpdate est triggé, sinon les boîtes vont se superposées au fur et à mesure
- ton code est une construction de bougie renko type “heikin ashi” et n’est pas celui des “vrai” WL Bars
03/14/2025 at 9:34 AM #244921Ci-dessous une version qui affiche les boîtes telle que calculées dans ton code, à noter que les high et low prennent les valeurs des open et close, donc sont identiques et inutiles ? A vérifier dans la finalité de ton projet 🙂
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253defparam drawonlastbaronly=true// BRCK Bars en ticks avec affichage sous forme de briques (Renko-like)// Paramètres personnalisablesBrickSize = 6 * pointsize // Taille des briques BRCK Bars (Renko)// InitialisationONCE RenkoBase = closeONCE bar = 0// Construction des WL Bars basées sur les ticksIF high > RenkoBase + BrickSize THENWHILE high > RenkoBase + BrickSize DORenkoBase = RenkoBase + BrickSize$open[bar] = $close[max(0, bar-1)]$barIndex[bar] = barindex// - (bar - i) // Correction de l’indexation$color[bar] = 1$close[bar] = RenkoBase$high[bar] = max($open[bar], $close[bar]) // Définition du plus haut$low[bar] = min($open[bar], $close[bar]) // Définition du plus basdir = 1bar = bar + 1WENDELSIF low < RenkoBase - BrickSize THENWHILE low < RenkoBase - BrickSize DORenkoBase = RenkoBase - BrickSize$open[bar] = $close[max(0, bar-1)]$barIndex[bar] = barindex //- (bar - i) // Correction de l’indexation$color[bar] = -1$close[bar] = RenkoBase$high[bar] = max($open[bar], $close[bar]) // Définition du plus haut$low[bar] = min($open[bar], $close[bar]) // Définition du plus basbar = bar + 1WENDENDIF// Affichage des briques WL Bars avec DRAWCANDLEIF islastbarupdate AND bar > 2 THENFOR i = bar DOWNTO 1 DO// Affichage des briques haussières (vert)IF $color[i] = 1 THEN//DRAWCANDLE($open[i],$high[i],$low[i],$close[i]) COLOURED(0,255,0)drawrectangle($barindex[i],$open[i],$barindex[i]+1,$close[i]) COLOURED(0,255,0) fillcolor(0,255,0)ELSE// Affichage des briques baissières (rouge)//DRAWCANDLE ($open[i],$high[i],$low[i],$close[i]) COLOURED(255,0,0)drawrectangle($barindex[i],$open[i],$barindex[i]+1,$close[i]) COLOURED(255,0,0) fillcolor(255,0,0)ENDIFNEXTENDIFRETURN1 user thanked author for this post.
03/14/2025 at 1:42 PM #244926Bonjour Nicolas
mille mercis pour ta réactivité, ta science du code et ta réponse.
je vais cogité sur tes excellentes remarques.Bon weekend
Patrick -
AuthorPosts
Find exclusive trading pro-tools on