Rejoignez-nous
Graphiques/probuilder

DrawOnLastBarOnly

DrawOnLastBarOnly en ProBuilder est un paramètre DEFPARAM qui limite les dessins graphiques au dernier bar, réduisant le coût de redessin et gardant le graphique propre.

Syntaxe

probuilder
DEFPARAM DrawOnLastBarOnly = true

Paramètres

NomTypePar défautDescription
DrawOnLastBarOnlybooléenfalseQuand true, les objets graphiques ne sont dessinés que sur le dernier bar. Déclaré avec DEFPARAM en haut du script.

Comment ça marche

DrawOnLastBarOnly est un DEFPARAM drapeau défini une seule fois au début d'un indicateur ProBuilder. Lorsqu'il est true, tout DRAW commande qui suit ne dessine que sur le dernier bar du graphique, au lieu de se répéter sur chaque bar historique. Cela compte parce que les instructions de dessin s'exécutent par défaut sur chaque bar, si bien qu'une ligne ou une étiquette placée sans ce drapeau est redessinée des milliers de fois, ce qui ralentit le graphique et peut laisser des objets superposés.

Elle convient bien aux objets qui décrivent l'état actuel, comme les lignes de support et de résistance, les pivots ou un libellé d'état. Elle est souvent associée à CalculateOnLastBars pour limiter le calcul autant que le dessin. Comme le dessin se fait sur le dernier bar, les recherches de coordonnées dans l'historique fonctionnent toujours : la boucle qui trouve un point de swing s'exécute sur le dernier bar et l'objet y est dessiné.

Exemples

Exemple 1, Une seule étiquette sur le dernier bar (Indicateur)

probuilder
// Print "LastBar" once, at the current close
DEFPARAM DrawOnLastBarOnly = true
ONCE font = "Arial"
DRAWTEXT("LastBar", BarIndex, close) COLOURED(255, 0, 0)
RETURN

Le texte n'est dessiné que sur le bar en cours plutôt que sur chaque bar de l'historique.

Exemple 2, Lignes de plus haut et plus bas récents (Indicateur)

probuilder
// Draw the 15-bar high and low once
DEFPARAM DrawOnLastBarOnly = true
hh = Highest[15](high)
ll = Lowest[15](low)
DRAWHLINE(hh) COLOURED(0, 200, 0)
DRAWHLINE(ll) COLOURED(200, 0, 0)
RETURN

Sans le flag, ces deux lignes seraient redessinées sur chaque bar. Avec lui, elles apparaissent une seule fois.

Exemple 3, Une ligne de tendance construite sur le dernier bar (Indicateur)

probuilder
// Find two lows across 20 bars and connect them, once
DEFPARAM DrawOnLastBarOnly = true
period = 20
y2 = Lowest[period](low)
FOR i = 0 TO period DO
    IF low[i] = y2 THEN
        x2 = BarIndex[i]
    ELSIF low[i] < y2 THEN
        y1 = low[i]
        x1 = BarIndex[i]
    ENDIF
NEXT
DRAWLINE(x1, y1, x2, y2) COLOURED(0, 120, 255)
RETURN

La boucle balaie l'historique sur le dernier bar et la ligne unique y est dessinée.

Erreurs et pièges courants

  • Réglage d'indicateur uniquement. DrawOnLastBarOnly s'applique aux tracés d'indicateur ProBuilder. Elle n'a aucun sens dans ProScreener, ProOrder ou ProBacktest.
  • Déclarer avec DEFPARAM en haut du code. Il doit être défini avec DEFPARAM avant le code de dessin, pas au milieu du script.
  • Affecte les dessins, pas le calcul. Elle limite l'endroit où les objets sont dessinés, pas la quantité de calcul. À associer avec CalculateOnLastBars pour réduire aussi le calcul.
  • Les marqueurs d'historique disparaissent. Avec l'option activée, les signaux passés ne sont pas dessinés. Si vous voulez une flèche à chaque événement passé, laissez-la désactivée et conditionnez chaque dessin par sa propre condition.
  • DRAWLINE, un dessin qui gagne à être limité au dernier bar.
  • DRAWHLINE, une ligne de niveau généralement dessinée une seule fois.
  • DRAWVLINE, un marqueur vertical généralement dessiné une seule fois.
  • DRAWTEXT, une étiquette généralement dessinée une seule fois.
  • CalculateOnLastBars, limite le calcul aux bars récents.
  • IsLastBarUpdate, une autre façon d'exécuter du code sur le dernier bar.
  • ONCE, initialise une valeur une seule fois.
  • BarIndex, fournit des coordonnées pour les dessins.