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

AdaptiveAverage

AdaptiveAverage i ProBuilder returnerar Adaptive Moving Average, ett glidande medelvärde som anpassar sin hastighet till volatiliteten. Syntax, parametrar, exempel.

Syntax

probuilder
AdaptiveAverage[MAperiod, fastSC, slowSC](price)

Parametrar

NamnTypStandardBeskrivning
MAperiodheltal9Tillbakablickande period som används för att mäta hur riktad den senaste prisrörelsen har varit.
fastSCheltal2Period för snabb utjämningskonstant. Styr hur snabbt genomsnittet reagerar när priset trendar rent.
slowSCheltal30Period för långsam utjämningskonstant. Styr hur trögt genomsnittet blir när priset är stökigt.
pricepriskällaclosePrisserien som jämnas ut, till exempel close, open, eller typicalprice.

Formel

kod
ER    = Abs(price - price[MAperiod]) / Sum of Abs(price - price[1]) over MAperiod bars
fast  = 2 / (fastSC + 1)
slow  = 2 / (slowSC + 1)
SC    = (ER * (fast - slow) + slow)^2
AMA   = AMA[1] + SC * (price - AMA[1])

ER är effektivitetskvoten. Den närmar sig 1 när priset rör sig i en rak linje över tillbakablicksfönstret och närmar sig 0 när priset rör sig fram och tillbaka utan nettoförflyttning. Den kvadrerade utjämningskonstanten SC interpolerar sedan mellan den snabba och den långsamma EMA-hastigheten.

Så fungerar det

Ett glidande medelvärde med fast period tvingar fram en och samma kompromiss i alla marknadsförhållanden: korta perioder ger whipsaw i intervall, långa perioder släpar efter i trender. Adaptive Moving Average kringgår kompromissen genom att räkna om sin egen utjämningskonstant på varje bar.

När effektivitetsförhållandet är högt, vilket betyder att de senaste barerna mestadels rörde sig i en riktning, förskjuts utjämningskonstanten mot den snabba änden och genomsnittet följer priset tätt. När förhållandet är lågt, vilket betyder att priset täckte en stor sträcka men hamnade ingenstans, förskjuts konstanten mot den långsamma änden och genomsnittet planar ut och ignorerar bruset.

Den praktiska effekten är en linje som planar ut under konsolideringar och accelererar när en riktad rörelse börjar. Detta minskar både eftersläpningsstraffet hos långsamma genomsnitt och whipsaw-straffet hos snabba, till priset av ytterligare två parametrar att konfigurera.

Exempel

Exempel 1, Standard-AMA på stängningskurser (Indicator)

probuilder
// Adaptive average: 9-bar efficiency window, fast constant 2, slow constant 30
myAMA = AdaptiveAverage[9, 2, 30](close)
RETURN myAMA

Den klassiska konfigurationen. Ritad på prisdiagrammet håller linjen sig nära priset i trender och blir nästan horisontell under sidledes faser.

Exempel 2, Adaptivt trendfilter för entries (ProOrder)

probuilder
// Trade long only while price holds above a flattening-resistant average
ama = AdaptiveAverage[10, 2, 30](close)

IF NOT LongOnMarket AND close CROSSES OVER ama THEN
  BUY 1 CONTRACT AT MARKET
ENDIF

IF LongOnMarket AND close CROSSES UNDER ama THEN
  SELL AT MARKET
ENDIF

Ett crossover-system som använder den adaptiva linjen istället för ett genomsnitt med fast period. Eftersom AMA planar ut i intervall klustrar crossovers under konsolidering mindre än med ett enkelt glidande medelvärde av liknande hastighet.

Exempel 3, Screening för pris över en stigande AMA (ProScreener)

probuilder
// Instruments trading above an adaptive average that slopes upward
ama = AdaptiveAverage[9, 2, 30](close)
rising = ama > ama[5]
SCREENER[close > ama AND rising]((close / ama - 1) * 100 AS "% above AMA")

Returnerar instrument där priset ligger över ett uppåtlutande adaptivt genomsnitt, sorterade efter procentuellt avstånd från linjen.

Tolkning

ObservationAvläsning
Pris över en stigande AMARiktad uppåtrörelse pågår.
Pris under en fallande AMARiktad nedåtrörelse pågår.
AMA nästan plattLågt effektivitetsförhållande, priset rör sig i intervall. Crossover-signaler är opålitliga här.
AMA-lutningen blir brantareEffektivitetsförhållandet stiger, rörelsen blir mer enkelriktad.

Det platta linjetillståndet är informativt i sig. Många system använder AMA-lutningen som ett regimfilter och accepterar bara signaler från andra indikatorer medan den adaptiva linjen har en tydlig lutning.

Vanliga fel och fallgropar

  • Parameterordningen spelar roll. Signaturen är [MAperiod, fastSC, slowSC]. Att kasta om den snabba och den långsamma konstanten, till exempel [9, 30, 2], inverterar det adaptiva beteendet och ger en linje som snabbar upp i brus och saktar ner i trender.
  • Utjämningskonstanter är perioder, inte alfavärden. fastSC och slowSC uttrycks som motsvarande EMA-perioder (2 och 30), inte som decimala utjämningsfaktorer. Att skicka 0.6667 där 2 förväntas ger inget fel men leder till en annan beräkning än den avsedda.
  • Crossovers misslyckas fortfarande i snäva intervall. AMA minskar whipsaws, den tar inte bort dem. I mycket snäva intervall kan priset gång på gång pendla kring den platta linjen. Ett villkor för minsta lutning eller minsta avstånd filtrerar bort de flesta av dessa.
  • Kort MAperiod destabiliserar effektivitetsförhållandet. Värden under ungefär 5 gör att förhållandet hoppar oregelbundet från bar till bar, vilket motverkar syftet med anpassningen. Håll effektivitetsfönstret på måttlig längd och justera reaktionsförmågan med utjämningskonstanterna istället.
  • Average, enkelt glidande medelvärde, baslinjen med fast hastighet.
  • ExponentialAverage, EMA med en konstant utjämningsfaktor.
  • WilderAverage, Wilders utjämning, en långsammare EMA-variant.
  • HullAverage, genomsnitt med låg fördröjning som använder viktade genomsnitt.
  • ZLEMA, zero-lag exponentiellt glidande medelvärde.
  • TEMA, trippelt exponentiellt glidande medelvärde.
  • DEMA, dubbelt exponentiellt glidande medelvärde.
  • TimeSeriesAverage, glidande medelvärde baserat på linjär regression.
  • WeightedAverage, linjärt viktat glidande medelvärde.