Average
Average in ProBuilder gibt einen gleitenden Durchschnitt einer beliebigen Serie zurück, mit einem optionalen Typ-Argument zur Auswahl von SMA, EMA, WMA, Wilder, Hull und mehr. Beispiele.
Syntax
Average[N](price)
Average[N,M](price)Parameter
| Name | Typ | Standard | Beschreibung |
|---|---|---|---|
N | Ganzzahl | 20 | Anzahl der Bars im Durchschnitt. Kürzere Perioden folgen dem Kurs enger; längere Perioden glätten stärker und laufen stärker nach. |
M | Ganzzahl | 0 | Optionaler Selektor für den Durchschnittstyp. Siehe die Tabelle unten. |
price | Kursquelle | Schlusskurs | Die zu glättende Serie. Akzeptiert jede Kurskonstante oder eigene Variable, einschließlich anderer Indikatoren. |
Werte für M:
M | Durchschnittstyp |
|---|---|
| 0 | Einfacher gleitender Durchschnitt (SMA) |
| 1 | Exponentieller gleitender Durchschnitt (EMA) |
| 2 | Gewichteter gleitender Durchschnitt (WMA) |
| 3 | Wilders gleitender Durchschnitt |
| 4 | Triangulärer gleitender Durchschnitt |
| 5 | Endpunkt-gleitender Durchschnitt |
| 6 | Zeitreihen-gleitender Durchschnitt |
| 7 | Hull gleitender Durchschnitt (ProRealTime™ v11 und später) |
| 8 | Zero-Lag gleitender Durchschnitt (ProRealTime™ v11 und später) |
Formel
SMA = (price + price[1] + ... + price[N-1]) / NMit M weggelassen oder 0, ist das Ergebnis das arithmetische Mittel der letzten N Werte. Jeder andere M Wert wendet das Gewichtungsschema des entsprechenden Durchschnittstyps an; die eigenen Befehle (ExponentialAverage, WeightedAverage, WilderAverage, und so weiter) dokumentieren diese Definitionen.
So funktioniert es
Average ist die universelle Glättungsfunktion von ProBuilder. Auf jedem Bar berechnet sie den Mittelwert der jüngsten N Werte der angegebenen Serie und erzeugt eine Linie, die das Rauschen von Bar zu Bar filtert, dafür aber auf Veränderungen mit einer Verzögerung reagiert, die proportional ist zu N.
Das zweite Klammerargument macht aus einer Funktion neun. Average[20,1](close) ist gleichbedeutend mit ExponentialAverage[20](close), Average[20,3](close) zu WilderAverage[20](close), und so weiter. Das ist praktisch, wenn der Durchschnittstyp selbst eine Variable ist, zum Beispiel wenn ein Optimierer oder eine Indikatoreinstellung zwischen SMA und EMA wechseln soll, ohne den Code umzuschreiben.
Die Eingabe muss kein Preis sein. Jede numerische Serie funktioniert, daher Average wird routinemäßig verwendet, um Oszillatoren, Volumen, Spreads oder die Ausgabe anderer Berechnungen zu glätten.
Beispiele
Beispiel 1, Schneller und langsamer einfacher Durchschnitt (Indikator)
// Plot a 7-period and a 20-period simple moving average
FastMA = Average[7](Close)
SlowMA = Average[20](Close)
RETURN FastMA coloured(221,33,33), SlowMA coloured(35,194,57)Zeichnet zwei SMAs des Schlusskurses, den schnellen in Rot und den langsamen in Grün. Das Paar veranschaulicht das kurzfristige Momentum gegenüber der übergeordneten Drift.
Beispiel 2, Crossover-System mit gleitenden Durchschnitten (ProOrder)
// Reverse position on each crossover of the 20 and 50 SMA
fastMA = Average[20](close)
slowMA = Average[50](close)
IF fastMA CROSSES OVER slowMA THEN
BUY 1 CONTRACT AT MARKET
ENDIF
IF fastMA CROSSES UNDER slowMA AND LongOnMarket THEN
SELL AT MARKET
ENDIFDie Strategie hält eine long Position, solange der Durchschnitt über 20 Perioden über dem Durchschnitt über 50 Perioden liegt, und steigt aus, wenn sich das Verhältnis umkehrt, die minimale Vorlage für trendfolgende Logik.
Beispiel 3, Abstand zum 200-Bar-Durchschnitt (ProScreener)
// List instruments trading above their 200-period average
ma200 = Average[200](close)
gap = (close / ma200 - 1) * 100
SCREENER[close > ma200](gap AS "% above MA200")Filtert die Watchlist auf Instrumente über ihrem langfristigen Durchschnitt und sortiert sie nach dem prozentualen Abstand, ein einfacher Scan der relativen Stärke.
Interpretation
Kurs gegenüber dem Durchschnitt. Ein Kurs, der sich über einem steigenden Durchschnitt hält, ist die Standarddefinition eines Aufwärtstrends auf diesem Horizont; ein Kurs unter einem fallenden Durchschnitt die eines Abwärtstrends. Die Durchschnitte über 50 und 200 Perioden sind die am meisten beachteten Referenzlinien.
Kreuzungen. Ein schneller Durchschnitt, der über einen langsamen kreuzt, signalisiert, dass die jüngsten Kurse die älteren überholen, eine Verschiebung im Momentum. Kreuzungen laufen konstruktionsbedingt nach, daher bestätigen sie Trends statt sie vorwegzunehmen, und sie erzeugen Fehlsignale in Seitwärtsmärkten.
Steigung. Die Richtung des Durchschnitts selbst ist oft aussagekräftiger als eine einzelne Kreuzung. Ein flacher Durchschnitt zeigt eine Seitwärtsphase an, in der Crossover-Signale stark an Qualität verlieren.
Häufige Fehler und Stolperfallen
- Falscher Klammertyp.
Average(20, close)löst einen Syntaxfehler aus. Periode und Typ stehen in eckigen Klammern, die Serie in runden Klammern:Average[20,1](close). - Ungültiger Typ-Selektor.
Maußerhalb von 0 bis 8 ist kein gültiger Durchschnittstyp. Die Werte 7 und 8 erfordern zusätzlich ProRealTime™ v11 oder höher. - EMA als Standard annehmen. Mit einem Argument gibt die Funktion immer einen einfachen Durchschnitt zurück. Von Plattformen übertragener Code, deren Standard exponentiell ist, verhält sich anders, bis
,1wird hinzugefügt. - Crossover-Systeme in Seitwärtsphasen. Zwei Durchschnitte einer Seitwärtsserie kreuzen sich wiederholt. Ohne Trend- oder Volatilitätsfilter sammelt die Crossover-Vorlage aus Beispiel 2 in flachen Märkten Verlust-Trades an.
Verwandte Befehle
ExponentialAverage, dedizierter EMA, entsprichtM = 1.WeightedAverage, linear gewichteter Durchschnitt, entsprichtM = 2.WilderAverage, Wilders Glättung, entsprichtM = 3.TriangularAverage, doppelt geglätteter Durchschnitt, entsprichtM = 4.EndPointAverage, Regressions-Endpunkt-Durchschnitt, entsprichtM = 5.TimeSeriesAverage, Zeitreihen-Durchschnitt, entsprichtM = 6.HullAverage, Hull-Durchschnitt mit geringer Verzögerung, entsprichtM = 7.ZLEMA, Zero-Lag-Exponential-Durchschnitt, entsprichtM = 8.RSI, Oszillator, häufig geglättet mitAverage.