Affichage des cours sous forme de briques

Viewing 4 posts - 1 through 4 (of 4 total)
  • Author
    Posts
  • #244919 quote
    chardinternet
    Participant
    New
    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 :

    prorealcode
    DRAWCANDLE($barIndex[i], $open[i], $high[i], $low[i], $close[i]) COLOURED(0,255,0)

    Ou encore avec une autre indexation :

    prorealcode
    DRAWCANDLE(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’indexation barIndex[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 ?

    // BRCK Bars en ticks avec affichage sous forme de briques (Renko-like)
    
    // Paramètres personnalisables
    BrickSize = 6 * pointsize  // Taille des briques BRCK Bars (Renko)
    ActivateEMA = 1  // 1 = Activer EMA, 0 = Désactiver
    EMAperiod = 20  // Période de l'EMA
    
    // Initialisation
    ONCE RenkoBase = close
    ONCE dir = 0
    ONCE bar = 0
    
    // Construction des WL Bars basées sur les ticks
    IF high > RenkoBase + BrickSize THEN
    WHILE high > RenkoBase + BrickSize DO
    RenkoBase = RenkoBase + BrickSize
    bar = 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 bas
    dir = 1
    WEND
    ELSIF low < RenkoBase - BrickSize THEN
    WHILE low < RenkoBase - BrickSize DO
    RenkoBase = RenkoBase - BrickSize
    bar = 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 bas
    dir = -1
    WEND
    ENDIF
    
    // Application de l'EMA si activée
    IF ActivateEMA = 1 THEN
    emaValue = Average[EMAperiod](close)  // Correction de la syntaxe
    FOR i = bar DOWNTO 1 DO
    $close[i] = emaValue
    NEXT
    ENDIF
    
    // Affichage des briques WL Bars avec DRAWCANDLE
    IF islastbarupdate AND bar > 2 THEN
    FOR 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)
    ELSE
    // Affichage des briques baissières (rouge)
    DRAWCANDLE ($open[i],$high[i],$low[i],$close[i]) COLOURED(255,0,0)
    ENDIF
    NEXT
    ENDIF
    
    RETURN
    
     

    Merci d’avance pour votre aide !

    Cordialement,

    #244920 quote
    Nicolas
    Keymaster
    Master
    Dans 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:
    1. DRAWCANDLE ne peut pas dessiner de chandeliers dans le passé
    2. 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)
    3. 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).
    4.  je pense que ta construction de la série de briques est correcte
    5. pour afficher les briques dans le passé, ta boucle est correcte, mais tu dois utiliser des rectangles en les positionnant avec ta variable $barindex[]
    6. 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
    7. ton code est une construction de bougie renko type “heikin ashi” et n’est pas celui des “vrai” WL Bars
    #244921 quote
    Nicolas
    Keymaster
    Master
    Ci-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 🙂
    defparam drawonlastbaronly=true
    
    // BRCK Bars en ticks avec affichage sous forme de briques (Renko-like)
    
    // Paramètres personnalisables
    BrickSize = 6 * pointsize  // Taille des briques BRCK Bars (Renko)
    
    // Initialisation
    ONCE RenkoBase = close
    ONCE bar = 0
    
    // Construction des WL Bars basées sur les ticks
    IF high > RenkoBase + BrickSize THEN
    WHILE high > RenkoBase + BrickSize DO
    RenkoBase = 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 bas
    dir = 1
    bar = bar + 1
    WEND
    ELSIF low < RenkoBase - BrickSize THEN
    WHILE low < RenkoBase - BrickSize DO
    RenkoBase = 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 bas
    bar = bar + 1
    WEND
    ENDIF
    
    // Affichage des briques WL Bars avec DRAWCANDLE
    IF islastbarupdate AND bar > 2 THEN
    FOR 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)
    ENDIF
    NEXT
    ENDIF
    
    RETURN
    #244926 quote
    chardinternet
    Participant
    New
    Bonjour 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
Viewing 4 posts - 1 through 4 (of 4 total)
  • You must be logged in to reply to this topic.

Affichage des cours sous forme de briques


ProBuilder : Indicateurs & Outils Personnalisés

New Reply
Author
Summary

This topic contains 3 replies,
has 2 voices, and was last updated by chardinternet
10 months, 3 weeks ago.

Topic Details
Forum: ProBuilder : Indicateurs & Outils Personnalisés
Language: French
Started: 03/14/2025
Status: Active
Attachments: 1 files
Logo Logo
Loading...