TimeSeriesAverage
TimeSeriesAverage in ProBuilder geeft een op regressie gebaseerd voortschrijdend gemiddelde van de koers over N bars terug, dat sneller reageert dan een eenvoudig gemiddelde. Syntaxis en voorbeelden.
Syntaxis
TimeSeriesAverage[N](price)Parameters
| Naam | Type | Standaard | Beschrijving |
|---|---|---|---|
N | geheel getal | geen | Aantal bars in het lookbackvenster. Kleine waarden volgen de koers nauw, grote waarden leveren een vloeiendere, langzamere lijn op. |
price | prijsbron | geen | De te middelen reeks. Meestal close, maar open, high, low, typicalprice of een eigen variabele wordt geaccepteerd. |
Formule
TSMA = value at the current bar of the least squares
regression line fitted to the last N values of priceEen rechte lijn wordt gefit door de laatste N waarden van price met lineaire regressie, en het gemiddelde neemt de waarde van die lijn op de meest recente bar. Omdat de fit de huidige richting van de data projecteert in plaats van alle bars gelijk te wegen, volgt het resultaat een trendende reeks strakker dan een gewoon gemiddelde over dezelfde periode.
Hoe het werkt
Op elke bar fit de functie de regressielijn opnieuw over het rollende venster van de laatste N waarden en geeft het eindpunt van die lijn als output. De output is een gesmoothe koersreeks in dezelfde eenheden als de invoer, dus hij kan direct op de koersgrafiek worden getekend, met andere moving averages worden vergeleken of als dynamisch steun- en referentieniveau worden gebruikt.
Vergeleken met Average (simple moving average) heeft de time series-methode minder lag in aanhoudende trends, omdat de regressiefit de helling van het venster extrapoleert. De afweging zit in het gedrag op omslagpunten: draait de koers scherp om, dan kan de gefitte lijn kort de verkeerde kant op wijzen of doorschieten voordat het venster bijtrekt.
De keuze van N bepaalt de balans tussen reactiesnelheid en stabiliteit. Een kort venster zoals 10 reageert binnen een paar bars maar levert meer valse richtingwisselingen. Een langer venster zoals 50 of 100 filtert ruis en is beter geschikt om de onderliggende trend te bepalen.
Voorbeelden
Voorbeeld 1, Basiseffening over 20 bars (Indicator)
// Smooth the closing prices over the last 20 bars
averagePrice = TimeSeriesAverage[20](close)
RETURN averagePriceBerekent het time series voortschrijdend gemiddelde over 20 periodes van de slotkoers en plot het. De lijn blijft dicht bij de koers in trends en filtert tegelijk de ruis van bar tot bar.
Voorbeeld 2, Crossover van een snel en een langzaam gemiddelde (ProOrder)
// Regression based fast line against a simple slow line
fastLine = TimeSeriesAverage[20](close)
slowLine = Average[50](close)
IF fastLine CROSSES OVER slowLine THEN
BUY 1 CONTRACT AT MARKET
ELSIF fastLine CROSSES UNDER slowLine THEN
SELL AT MARKET
ENDIFEen klassieke strategie met twee voortschrijdende gemiddelden. Met TimeSeriesAverage voor de snelle lijn triggert crossovers iets eerder dan een eenvoudig gemiddelde van dezelfde periode zou doen.
Voorbeeld 3, Instrumenten die boven hun gemiddelde handelen (ProScreener)
tsa = TimeSeriesAverage[20](close)
SCREENER[close > tsa] ((close / tsa - 1) * 100 AS "Pct above TSA")Geeft instrumenten terug waarvan de laatste koers boven hun time series gemiddelde over 20 periodes ligt, gesorteerd op de procentuele afstand tussen de koers en de lijn.
Interpretatie
Het uitlezen volgt de gebruikelijke conventies voor voortschrijdende gemiddelden. Een koers boven een stijgende lijn duidt op een opwaartse trend, een koers onder een dalende lijn duidt op een neerwaartse trend. Kruisingen tussen de koers en de lijn, of tussen een snel en een langzaam gemiddelde, worden vaak gebruikt als signalen voor een trendomslag. Omdat het eindpunt van de regressie snel reageert, verschijnen signalen eerder dan bij een eenvoudig gemiddelde, maar bevatten ze meer whipsaws in zijwaartse markten. Bevestigen met een voorwaarde op de helling, bijvoorbeeld dat de lijn hoger staat dan vijf bars terug, filtert een deel van die ruis.
Veelvoorkomende fouten en valkuilen
- Verkeerd type haakjes.
TimeSeriesAverage(20, close)compileert niet. De periode gaat tussen vierkante haken en de prijsbron tussen ronde haken:TimeSeriesAverage[20](close). - Overshoot bij omkeringen. De regressiefit extrapoleert de huidige helling, waardoor de lijn na een scherpe omslag nog een paar bars in de oude richting kan blijven bewegen. Signalen die precies op omslagpunten worden genomen, zijn minder betrouwbaar dan bij langzamere gemiddelden.
- Onvoldoende historie. De eerste
Nbars van een grafiek bevatten geen volledig venster, dus vroege waarden zijn onbetrouwbaar. Backtests moeten de opwarmperiode uitsluiten of genoeg bars vooraf inladen. - Periode te kort. Waarden zoals
TimeSeriesAverage[3]volgen de prijs bijna tick voor tick en genereren constante richtingswisselingen. Voor trendidentificatie zijn periodes van 20 of meer gebruikelijk.
Gerelateerde instructies
Average, eenvoudig voortschrijdend gemiddelde, de basismethode voor effening.ExponentialAverage, exponentiële weging met minder lag dan een eenvoudig gemiddelde.WeightedAverage, lineair gewogen voortschrijdend gemiddelde.TriangularAverage, dubbel geëffend eenvoudig voortschrijdend gemiddelde.EndPointAverage, nauw verwant gemiddelde op basis van het eindpunt van een regressie.LinearRegression, de onderliggende kleinste-kwadratenfit als zelfstandig instrument.HullAverage, voortschrijdend gemiddelde met weinig lag, opgebouwd uit gewogen gemiddelden.ZLEMA, zero-lag exponentieel voortschrijdend gemiddelde.