Word nu lid
Indicatoren/probuilder · probacktest · proorder · proscreener

WeightedAverage

WeightedAverage in ProBuilder geeft het gewogen voortschrijdend gemiddelde (WMA) van een prijs over N bars, waarbij recente bars meer gewicht krijgen. Syntaxis, formule, voorbeelden.

Syntaxis

probuilder
WeightedAverage[N](price)

Parameters

NaamTypeStandaardBeschrijving
Ngeheel getal20Terugkijkperiode in bars. Bepaalt zowel de lengte van het venster als het wegingsschema.
priceprijsbroncloseDe reeks waarvan het gemiddelde wordt genomen. Accepteert close, open, high, low, typicalprice, medianprice, of een eigen variabele.

Formule

code
WMA = (N*price + (N-1)*price[1] + ... + 2*price[N-2] + 1*price[N-1])
      / (N + (N-1) + ... + 2 + 1)

De noemer is de som van de gewichten, N * (N + 1) / 2. De gewichten nemen lineair af van de nieuwste bar naar de oudste.

Hoe het werkt

Een simple moving average behandelt elke bar in het venster gelijk, dus een grote beweging die het venster in of uit komt verschuift de lijn met hetzelfde bedrag, ongeacht wanneer die plaatsvond. De weighted moving average vermenigvuldigt elke bar in plaats daarvan met zijn positie in het venster: de laatste bar weegt N keer zoveel als de oudste. Het resultaat is een lijn die de huidige prijs dichter volgt en eerder draait op swing punten.

Vergeleken met ExponentialAverage, de WMA gebruikt een hard venster: bars ouder dan N periodes geen enkele invloed hebben, terwijl een EMA alle voorgaande bars een klein, exponentieel afnemend gewicht geeft. In de praktijk gedragen de twee zich vergelijkbaar, waarbij de WMA iets gevoeliger is voor wat er aan de rand van zijn venster gebeurt.

De WMA is ook een bouwsteen voor andere gemiddelden. HullAverage, bijvoorbeeld, combineert meerdere gewogen gemiddelden van verschillende lengtes om de lag verder te verkleinen.

Voorbeelden

Voorbeeld 1, Eenvoudige WMA over 20 periodes (Indicator)

probuilder
// 20-period weighted moving average of closing prices
myWMA = WeightedAverage[20](close)
RETURN myWMA

Berekent en plot het gewogen voortschrijdend gemiddelde van de close over 20 bars, het standaardgebruik dat uit de brondocumentatie is behouden.

Voorbeeld 2, WMA versus SMA crossover (ProBacktest)

probuilder
// Fast weighted average against a slower simple average
fastWMA = WeightedAverage[10](close)
slowSMA = Average[40](close)

IF fastWMA CROSSES OVER slowSMA THEN
  BUY 1 CONTRACT AT MARKET
ENDIF
IF fastWMA CROSSES UNDER slowSMA THEN
  SELL AT MARKET
ENDIF

Het gewogen gemiddelde dient als de reactieve snelle lijn in een klassiek crossover-systeem, dat long gaat wanneer het boven het langzamere eenvoudige gemiddelde kruist en uitstapt bij de omgekeerde kruising.

Voorbeeld 3, Screenen op een prijs boven een stijgende WMA (ProScreener)

probuilder
// Instruments trading above a rising 30-bar weighted average
wma = WeightedAverage[30](close)
rising = wma > wma[5]
SCREENER[close > wma AND rising](((close / wma) - 1) * 100 AS "% above WMA")

Houdt alleen instrumenten over waarvan de prijs boven een WMA over 30 bars ligt die zelf hoger staat dan vijf bars terug, en rangschikt ze op hun afstand boven de lijn.

Interpretatie

Gewogen gemiddelden worden gelezen als elk voortschrijdend gemiddelde. Een prijs boven een stijgende WMA duidt op een opwaartse trend, een prijs onder een dalende WMA duidt op een neerwaartse trend, en kruisingen tussen prijs en de lijn, of tussen twee WMA's van verschillende lengte, worden gebruikt als signalen voor een trendwisseling.

Door zijn naar voren verschoven weging is een WMA met lengte N gedraagt zich ongeveer als een korter simpel gemiddelde: het draait eerder maar levert ook meer whipsaws op in zijwaartse markten. De keuze tussen Average, WeightedAverage, en ExponentialAverage is vooral een afweging tussen lag en ruis, niet een verschil in soort.

Veelvoorkomende fouten en valkuilen

  • Verkeerde types haakjes. De periode komt tussen vierkante haken en de prijsbron tussen ronde haken: WeightedAverage[20](close). Schrijven WeightedAverage(20, close) is een syntaxisfout.
  • Een vloeiend verloop als bij de SMA verwachten. Voor dezelfde N, is een WMA merkbaar onrustiger dan een eenvoudig gemiddelde. Bij het vervangen van Average[N] met WeightedAverage[N] in een bestaand systeem neemt de signaalfrequentie toe en veranderen de backtestresultaten.
  • Verwarring met WeightedClose. WeightedClose is een prijsconstante van één bar, (high + low + 2 * close) / 4. Het is een geldige invoer voor deze functie, maar een volledig ander concept.
  • Een te korte periode. Zeer kleine N waarden maken de lijn vrijwel identiek aan de ruwe koers, wat rekenwerk toevoegt zonder noemenswaardige smoothing.
  • Average, eenvoudig voortschrijdend gemiddelde met gelijke gewichten.
  • ExponentialAverage, exponentieel afnemende gewichten over de hele historie.
  • WilderAverage, het afgevlakte gemiddelde dat in RSI en ATR wordt gebruikt.
  • HullAverage, gemiddelde met weinig vertraging, opgebouwd uit gewogen gemiddelden.
  • TriangularAverage, dubbel afgevlakt gemiddelde met de nadruk op het midden.
  • TimeSeriesAverage, voortschrijdend gemiddelde op basis van lineaire regressie.
  • ZLEMA, zero lag exponentieel voortschrijdend gemiddelde.
  • WeightedClose, gewogen prijs van een enkele bar die vaak in gemiddelden wordt gebruikt.