Bli medlem idag
Grafik/probuilder

DrawOnLastBarOnly

DrawOnLastBarOnly i ProBuilder är en DEFPARAM-flagga som begränsar grafiska ritningar till den sista baren, vilket minskar kostnaden för omritning och håller diagrammet rent.

Syntax

probuilder
DEFPARAM DrawOnLastBarOnly = true

Parametrar

NamnTypStandardBeskrivning
DrawOnLastBarOnlybooleskfalseNär true, ritas grafiska objekt bara på den sista baren. Deklarerad med DEFPARAM i början av skriptet.

Så fungerar det

DrawOnLastBarOnly är en DEFPARAM flagga som sätts en gång i början av en ProBuilder-indikator. När den är true, någon DRAW kommandot som följer ritar bara på diagrammets sista bar i stället för att upprepas på varje historisk bar. Det spelar roll eftersom ritinstruktioner som standard körs på varje bar, så en linje eller etikett som placeras utan flaggan ritas om tusentals gånger, vilket gör diagrammet långsammare och kan lämna överlappande objekt.

Den är väl lämpad för objekt som beskriver det aktuella tillståndet, såsom stöd- och motståndslinjer, pivoter eller en statusetikett. Den paras ofta med CalculateOnLastBars för att begränsa både beräkning och ritning. Eftersom ritningen sker på den sista baren fungerar koordinatuppslagningar över historiken ändå: loopen som hittar en swingpunkt körs på den sista baren och objektet ritas där.

Exempel

Exempel 1, En enda etikett på den sista baren (Indikator)

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

Texten ritas endast på den aktuella baren istället för på varje bar i historiken.

Exempel 2, Linjer för senaste högsta och lägsta (Indikator)

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

Utan flaggan skulle dessa två linjer ritas om på varje bar. Med den visas de en gång.

Exempel 3, En trendlinje byggd på den sista baren (Indikator)

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

Loopen skannar historiken på den sista baren och den enda linjen ritas där.

Vanliga fel och fallgropar

  • Endast en indikatorinställning. DrawOnLastBarOnly gäller för ritningar i ProBuilder-indikatorer. Den har ingen betydelse i ProScreener, ProOrder eller ProBacktest.
  • Deklarera med DEFPARAM i början. Den måste sättas med DEFPARAM före ritkoden, inte mitt i skriptet.
  • Påverkar ritningar, inte beräkning. Den begränsar var objekt ritas, inte hur mycket som beräknas. Kombinera den med CalculateOnLastBars för att även minska beräkningen.
  • Historiska markeringar försvinner. Med flaggan påslagen ritas inte tidigare signaler. Om du vill ha en pil vid varje tidigare händelse, låt den vara avstängd och villkorsstyr varje ritning med sitt eget villkor.
  • DRAWLINE, en ritning som gynnas av att begränsas till den sista baren.
  • DRAWHLINE, en nivålinje som vanligtvis ritas en gång.
  • DRAWVLINE, en vertikal markering som vanligtvis ritas en gång.
  • DRAWTEXT, en etikett som vanligtvis ritas en gång.
  • CalculateOnLastBars, begränsar beräkningen till de senaste barerna.
  • IsLastBarUpdate, ett annat sätt att köra kod på den sista baren.
  • ONCE, initierar ett värde en enda gång.
  • BarIndex, ger koordinater till ritningarna.