Jetzt beitreten
Indikatoren/probuilder · probacktest · proorder · proscreener

WeightedAverage

WeightedAverage in ProBuilder gibt den gewichteten gleitenden Durchschnitt (WMA) eines Kurses über N Bars zurück und gewichtet jüngere Bars stärker. Syntax, Formel, Beispiele.

Syntax

probuilder
WeightedAverage[N](price)

Parameter

NameTypStandardBeschreibung
NGanzzahl20Rückblickperiode in Bars. Bestimmt sowohl die Fensterlänge als auch das Gewichtungsschema.
priceKursquelleSchlusskursDie gemittelte Serie. Akzeptiert close, open, high, low, typicalprice, medianprice, oder jede eigene Variable.

Formel

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

Der Nenner ist die Summe der Gewichte, N * (N + 1) / 2. Die Gewichte nehmen linear vom neuesten Bar zum ältesten ab.

So funktioniert es

Ein einfacher gleitender Durchschnitt behandelt jeden Bar im Fenster gleich, sodass eine große Bewegung, die in das Fenster eintritt oder es verlässt, die Linie um denselben Betrag verschiebt, unabhängig davon, wann sie stattfand. Der gewichtete gleitende Durchschnitt multipliziert jeden Bar stattdessen mit seiner Position im Fenster: Der letzte Bar zählt N mal so viel wie der älteste. Das Ergebnis ist eine Linie, die sich dem aktuellen Preis enger anschmiegt und an Swing-Punkten früher dreht.

Im Vergleich zu ExponentialAverage, der WMA verwendet ein hartes Fenster: Bars, die älter sind als N Perioden haben keinen Einfluss, während ein EMA allen vergangenen Bars ein kleines, exponentiell abfallendes Gewicht gibt. In der Praxis verhalten sich die beiden ähnlich, wobei der WMA etwas empfindlicher darauf reagiert, was am Rand seines Fensters passiert.

Der WMA ist auch ein Baustein für andere Durchschnitte. HullAverage, kombiniert zum Beispiel mehrere gewichtete Durchschnitte unterschiedlicher Länge, um die Verzögerung weiter zu verringern.

Beispiele

Beispiel 1, Einfacher WMA mit Periode 20 (Indikator)

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

Berechnet und zeichnet den gewichteten gleitenden 20-Bar-Durchschnitt des Schlusskurses, die aus der Quelldokumentation übernommene Standardverwendung.

Beispiel 2, Kreuzung von WMA und SMA (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

Der gewichtete Durchschnitt dient als reaktionsschnelle schnelle Linie in einem klassischen Crossover-System, mit Einstieg long, wenn er über den langsameren einfachen Durchschnitt kreuzt, und Ausstieg bei der umgekehrten Kreuzung.

Beispiel 3, Screening auf Kurs über einem steigenden 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")

Behält nur Instrumente, deren Kurs über einem 30-Bar-WMA liegt, der selbst höher ist als vor fünf Bars, und sortiert sie nach ihrem Abstand über der Linie.

Interpretation

Gewichtete Durchschnitte werden wie jeder gleitende Durchschnitt gelesen. Ein Kurs über einem steigenden WMA zeigt einen Aufwärtstrend an, ein Kurs unter einem fallenden WMA zeigt einen Abwärtstrend an, und Kreuzungen zwischen Kurs und Linie oder zwischen zwei WMAs unterschiedlicher Länge werden als Signale für einen Trendwechsel verwendet.

Wegen seiner vorderlastigen Gewichtung reagiert ein WMA der Länge N verhält sich in etwa wie ein kürzerer einfacher Durchschnitt: er dreht früher, erzeugt aber auch mehr Fehlsignale in Seitwärtsmärkten. Die Wahl zwischen Average, WeightedAverage, und ExponentialAverage ist überwiegend ein Kompromiss zwischen Lag und Rauschen, kein grundsätzlicher Unterschied.

Häufige Fehler und Stolperfallen

  • Falsche Klammertypen. Die Periode steht in eckigen Klammern und die Kursquelle in runden Klammern: WeightedAverage[20](close). Schreiben WeightedAverage(20, close) ist ein Syntaxfehler.
  • SMA-ähnliche Glätte erwarten. Für dasselbe N, ist ein WMA merklich sprunghafter als ein einfacher Durchschnitt. Beim Ersetzen Average[N] mit WeightedAverage[N] in einem bestehenden System, steigt die Signalfrequenz und die Backtest-Ergebnisse ändern sich.
  • Die Verwechslung mit WeightedClose. WeightedClose ist eine Kurskonstante für eine einzelne Bar, (high + low + 2 * close) / 4. Es ist ein gültiger Eingabewert für diese Funktion, aber ein völlig anderes Konzept.
  • Eine zu kurze Periode. Sehr kleine N Werte machen die Linie nahezu identisch mit dem Rohkurs und erzeugen Rechenaufwand ohne sinnvolle Glättung.
  • Average, einfacher gleitender Durchschnitt mit gleichen Gewichten.
  • ExponentialAverage, exponentiell abnehmende Gewichte über die gesamte Historie.
  • WilderAverage, der geglättete Durchschnitt, der in RSI und ATR verwendet wird.
  • HullAverage, verzögerungsarmer Durchschnitt, aufgebaut aus gewichteten Durchschnitten.
  • TriangularAverage, doppelt geglätteter Durchschnitt mit Schwerpunkt auf der Mitte.
  • TimeSeriesAverage, auf linearer Regression basierender gleitender Durchschnitt.
  • ZLEMA, exponentieller gleitender Durchschnitt ohne Verzögerung.
  • WeightedClose, gewichteter Preis eines einzelnen Bars, der häufig in Durchschnitte einfließt.