Bli medlem idag
Indikatorer/probuilder · probacktest · proorder · proscreener

ZLEMA

ZLEMA i ProBuilder returnerar Zero Lag Exponential Moving Average, en EMA-variant som minskar eftersläpningen för snabbare trendsignaler. Syntax, formel, exempel.

Syntax

probuilder
ZLEMA[period](price)

Parametrar

NamnTypStandardBeskrivning
periodheltal20Längd för det exponentiella medelvärdet och grund för eftersläpningskorrigeringen.
pricepriskällacloseSerien som medelvärdesbildas. Accepterar close, open, high, low, eller en egen variabel.

Formel

kod
lag   = (period - 1) / 2
ZLEMA = EMA[period](price + (price - price[lag]))

Termen price - price[lag] uppskattar hur långt ett konventionellt medelvärde ligger efter priset, och att lägga till det till indata förskjuter datan framåt med ungefär det beloppet innan EMA appliceras.

Så fungerar det

Varje glidande medelvärde släpar efter, eftersom det sammanfattar ett fönster av historiska data vars tyngdpunkt ligger bakom den aktuella baren. För en EMA med längden period den förskjutningen är omkring (period - 1) / 2 barer. ZLEMA kompenserar genom att mata EMA med en modifierad serie: det aktuella priset plus förändringen sedan lag barer tillbaka. När priset trendar stabilt upphäver korrigeringen större delen av fördröjningen och linjen löper nära priset; när priset är flackt är korrigeringstermen nära noll och ZLEMA beter sig som en vanlig EMA.

Kompensationen är en extrapolering, så den har ett pris. Vid skarpa vändpunkter pekar den eftersläpningsbefriade indatan en kort stund fel, vilket ger översläng och enstaka whipsaw-signaler som ett långsammare medelvärde hade filtrerat bort. ZLEMA hör till samma familj med låg eftersläpning som DEMA, TEMA, och HullAverage, som var och en byter jämnhet mot responsivitet med en annan konstruktion.

Exempel

Exempel 1, 15-perioders ZLEMA av stängningen (Indikator)

probuilder
// Zero lag exponential average over 15 bars
myZLEMA = ZLEMA[15](close)
RETURN myZLEMA

Källexemplet: beräknar och ritar 15-perioders ZLEMA av stängningspriser, som håller sig synligt närmare priset än en 15-perioders EMA.

Exempel 2, Korsning mellan ZLEMA och EMA (ProBacktest)

probuilder
// Use the faster ZLEMA against a plain EMA of the same length
fastLine = ZLEMA[20](close)
slowLine = ExponentialAverage[20](close)

IF fastLine CROSSES OVER slowLine THEN
  BUY 1 CONTRACT AT MARKET
ENDIF
IF fastLine CROSSES UNDER slowLine THEN
  SELL AT MARKET
ENDIF

Eftersom ZLEMA ligger före en EMA med samma längd ger en korsning av de två linjerna med samma period en momentum-liknande signal utan att två olika längder behövs.

Exempel 3, Screening efter en ny lutningsändring i ZLEMA (ProScreener)

probuilder
// Instruments whose 20-bar ZLEMA just turned upward
z = ZLEMA[20](close)
turnedUp = z > z[1] AND z[1] <= z[2]
SCREENER[turnedUp](((close / z) - 1) * 100 AS "% vs ZLEMA")

Returnerar instrument där ZLEMA-lutningen vände från icke-stigande till stigande på den aktuella baren, en sökning efter tidiga trendvändningar som gynnas av den minskade eftersläpningen.

Tolkning

ZLEMA läses som vilket glidande medelvärde som helst. Pris över en stigande linje antyder en upptrend, pris under en fallande linje en nedtrend, och korsningar, antingen pris mot linjen eller två medelvärden mot varandra, markerar potentiella trendförändringar. Signalerna kommer tidigare än med en EMA eller SMA av samma längd.

Tidigare betyder inte bättre. Den minskade eftersläpningen kommer från att nyligt momentum extrapoleras, så i hackiga förhållanden genererar ZLEMA fler falska starter än långsammare medelvärden. Den passar system där sena entries är den dominerande kostnaden, och den kombineras naturligt med ett bekräftelsefilter som ett längre medelvärde eller ett volatilitetsmått.

Vanliga fel och fallgropar

  • Fel typer av parenteser. Perioden står inom hakparenteser och priset inom parenteser: ZLEMA[20](close). ZLEMA(20, close) kompilerar inte.
  • Att förvänta sig EMA-liknande jämnhet. För samma period är ZLEMA ryckigare och skjuter över vid vändningar. Att släppa in den i ett system inställt för ExponentialAverage förändrar handelsfrekvens och resultat.
  • Mycket korta perioder. Med små period värden är eftersläpningstermen nästan noll och linjen faller samman mot det råa priset, vilket tillför brus utan nytta. Tekniken behöver en meningsfull eftersläpning att ta bort.
  • Att tolka noll eftersläpning bokstavligt. Namnet är en förhoppning. Korrigeringen tar bort större delen av eftersläpningen i stabilt tillstånd men kan inte förutse vändningar, och den återstående fördröjningen växer just när den betyder något, vid vändningar.
  • ExponentialAverage, den vanliga EMA som ZLEMA modifierar.
  • Average, enkelt glidande medelvärde som baslinje.
  • WeightedAverage, linjärt viktat glidande medelvärde.
  • HullAverage, ett annat medelvärde med låg eftersläpning byggt av WMA:er.
  • DEMA, double exponential moving average, liknande syfte.
  • TEMA, triple exponential moving average, ytterligare minskad eftersläpning.
  • WilderAverage, långsamt utjämnat medelvärde i den motsatta ytterligheten.
  • TimeSeriesAverage, regressionsbaserat medelvärde med låg eftersläpning.