Bli medlem i dag
Indikatorer/probuilder · probacktest · proorder · proscreener

LinearRegressionSlope

LinearRegressionSlope i ProBuilder returnerer stigningen til en minste kvadraters regresjonslinje over N barer, og måler trendretning og trendstyrke. Eksempler.

Syntaks

probuilder
LinearRegressionSlope[N](price)

Parametere

NavnTypeStandardBeskrivelse
NheltallpåkrevdAntall barer i regresjonsvinduet. Små verdier reagerer raskt men skifter fortegn ofte; større verdier beskriver den vedvarende trenden.
pricepriskildelukkSerien linjen tilpasses til. Vanligvis close; open, high, low, eller en egendefinert variabel fungerer også.

Formel

kode
Fit y = a + b*x by least squares over the last N bars

b = ( N * sum(x*y) - sum(x) * sum(y) ) / ( N * sum(x^2) - sum(x)^2 )

LinearRegressionSlope = b

der x er barindeksen inne i vinduet og y prisen. Resultatet uttrykkes i prisenheter per bar.

Slik fungerer det

Mens LinearRegression returnerer nivået til den tilpassede linjen, LinearRegressionSlope returnerer retningen. For hver bar tilpasser funksjonen linjen på nytt over de siste N priser og gir ut koeffisienten b: hvor mye den tilpassede linjen stiger eller faller per bar. En verdi på 0.5 på et dagsdiagram betyr at regresjonstrenden stiger et halvt poeng per dag.

Fordi tilpasningen tar hensyn til hvert punkt i vinduet og ikke bare det første og det siste, er stigningstallet mindre følsomt for én enkelt støyende bar enn et vanlig N-barers prisdifferanse. Den er i praksis en utjevnet endringsrate, og derfor fungerer den også som et momentum-mål.

Nullinjen er det naturlige vendepunktet. Kryssinger fra negativ til positiv signaliserer en mulig overgang til opptrend, kryssinger den andre veien en mulig nedtrend. Å parre stigningstallet med R2 filtrerer disse signalene, siden en bratt stigning gjennom data med dårlig tilpasning er mindre pålitelig enn en moderat stigning gjennom en ren trend.

Eksempler

Eksempel 1, Signaler ved stigningens nullkryss (Indikator)

probuilder
// Slope of the 10-bar regression on the close
i1 = LinearRegressionSlope[10](close)

// Flag transitions of the slope through zero
IF i1 > 0 AND i1[1] < 0 THEN
  bullish = 1
  bearish = 0
ELSIF i1 < 0 AND i1[1] > 0 THEN
  bullish = 0
  bearish = -1
ELSE
  bullish = 0
  bearish = 0
ENDIF

RETURN bullish, bearish

Markerer baren der 10-bars stigningen blir positiv med verdien 1 og baren der den blir negativ med -1, en kompakt detektor for trendskifte.

Eksempel 2, Kvalitetsfiltrert trendsøk (ProScreener)

probuilder
// Rising instruments where the regression line actually fits the data
slope   = LinearRegressionSlope[20](close)
quality = R2[20](close)
SCREENER[slope > 0 AND quality > 0.8](slope AS "Slope")

Returnerer instrumenter med positiv 20-bars stigning der R-kvadrat overstiger 0.8, slik at bare trender som både stiger og er veldefinerte beholdes.

Eksempel 3, Stigning som inngangsfilter (ProBacktest)

probuilder
// Only take breakout longs while the 50-bar slope is positive
slope = LinearRegressionSlope[50](close)

IF NOT OnMarket AND slope > 0 AND close CROSSES OVER Highest[20](high)[1] THEN
  BUY 1 CONTRACT AT MARKET
ENDIF

IF LongOnMarket AND slope < 0 THEN
  SELL AT MARKET
ENDIF

Krever at den mellomlange regresjonsstigningen er positiv før et 20-bars breakout godtas, og lukker posisjonen når stigningen snur ned.

Tolkning

Fortegnet gir retning: positiv stigning, opptrend; negativ stigning, nedtrend. Størrelsen gir bratthet, men i absolutte prisenheter, så den må vurderes mot instrumentets egen skala. En stigning på 2 er bratt på et instrument som handles på 50 og ubetydelig på et som handles på 5000.

Stigningens oppførsel beskriver også trendens modenhet. En stigende stigning betyr at trenden akselererer, en fallende men fortsatt positiv stigning betyr en opptrend som mister momentum, et mønster som ofte kommer før selve prisvendingen.

Vanlige feil og fallgruver

  • Ikke sammenlignbart på tvers av instrumenter. Den rå stigningen avhenger av prisskalaen. For screenere som dekker mange instrumenter, normaliser den, for eksempel 100 * LinearRegressionSlope[20](close) / close, for å få prosent per bar.
  • Whipsaws rundt null. I sidelengse markeder ligger stigningen nær null og skifter fortegn ofte. Nullkryssingslogikk uten en størrelsesterskel eller et R2 filter genererer en strøm av falske signaler.
  • Feil parentestype. LinearRegressionSlope(10, close) lar seg ikke kompilere. Periode i hakeparenteser, priskilde i runde parenteser.
  • Bratt betyr ikke pålitelig. En bratt stigning gjennom spredte data gjenspeiler noen få uteliggere, ikke en trend. Sjekk tilpasningskvaliteten med R2 før du handler på verdien.
  • LinearRegression, nivået til samme tilpassede linje.
  • R2, tilpasningskvaliteten til regresjonen, det naturlige følgefilteret.
  • ROC, endringsrate, et enklere momentum-mål.
  • Momentum, rå prisdifferanse over N barer.
  • Average, glidende gjennomsnitt der stigningen tjener et liknende formål.
  • ADX, trendstyrke uten retning, et alternativt filter.
  • STE, standardfeilen til regresjonsestimatet.
  • TimeSeriesAverage, regresjonsbasert utjevning av prisen.