Únete hoy
Gráficos/probuilder

DrawOnLastBarOnly

DrawOnLastBarOnly en ProBuilder es un flag de DEFPARAM que limita los dibujos gráficos a la última barra, reduciendo el coste de redibujado y manteniendo el gráfico limpio.

Sintaxis

probuilder
DEFPARAM DrawOnLastBarOnly = true

Parámetros

NombreTipoPor defectoDescripción
DrawOnLastBarOnlybooleanofalseCuando true, los objetos gráficos se dibujan solo en el último bar. Declarado con DEFPARAM al principio del script.

Cómo funciona

DrawOnLastBarOnly es un DEFPARAM flag que se establece una sola vez al inicio de un indicador de ProBuilder. Cuando está true, cualquier DRAW El comando que sigue dibuja solo en el último bar del gráfico, en lugar de repetirse en cada bar histórico. Esto importa porque, por defecto, las instrucciones de dibujo se ejecutan en cada bar, de modo que una línea o una etiqueta colocada sin el marcador se redibuja miles de veces, lo que ralentiza el gráfico y puede dejar objetos superpuestos.

Es muy adecuado para objetos que describen el estado actual, como líneas de soporte y resistencia, pivotes o una etiqueta de estado. A menudo se combina con CalculateOnLastBars para limitar el cálculo además del dibujo. Como el dibujo ocurre en el último bar, las búsquedas de coordenadas en el histórico siguen funcionando: el bucle que encuentra un punto de swing se ejecuta en el último bar y el objeto se dibuja ahí.

Ejemplos

Ejemplo 1, Una única etiqueta en la última barra (Indicador)

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

El texto se dibuja solo en la barra actual en lugar de en cada barra del historial.

Ejemplo 2, Líneas de máximo y mínimo recientes (Indicador)

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

Sin el flag estas dos líneas se redibujarían en cada bar. Con él aparecen una sola vez.

Ejemplo 3, Una línea de tendencia construida en la última barra (Indicador)

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

El bucle recorre el historial en la última barra y la única línea se dibuja allí.

Errores y trampas habituales

  • Solo ajuste de indicador. DrawOnLastBarOnly se aplica a los dibujos de indicadores de ProBuilder. No tiene significado en ProScreener, ProOrder ni ProBacktest.
  • Decláralo con DEFPARAM al principio. Debe fijarse con DEFPARAM antes del código de dibujo, no a mitad del script.
  • Afecta a los dibujos, no al cálculo. Limita dónde se dibujan los objetos, no cuánto se calcula. Combínalo con CalculateOnLastBars para reducir también el cálculo.
  • Los marcadores del historial desaparecen. Con el flag activado, las señales pasadas no se dibujan. Si quieres una flecha en cada evento pasado, déjalo desactivado y condiciona cada dibujo con su propia condición.
  • DRAWLINE, un dibujo que se beneficia de limitarse a la última barra.
  • DRAWHLINE, una línea de nivel que normalmente se dibuja una sola vez.
  • DRAWVLINE, un marcador vertical que normalmente se dibuja una sola vez.
  • DRAWTEXT, una etiqueta que normalmente se dibuja una sola vez.
  • CalculateOnLastBars, limita el cálculo a las barras recientes.
  • IsLastBarUpdate, otra forma de ejecutar código en la última barra.
  • ONCE, inicializa un valor una sola vez.
  • BarIndex, proporciona coordenadas para los dibujos.