LinearRegressionSlope
LinearRegressionSlope i ProBuilder returnerar lutningen på en minstakvadratregressionslinje över N barer, och mäter trendens riktning och styrka. Exempel.
Syntax
LinearRegressionSlope[N](price)Parametrar
| Namn | Typ | Standard | Beskrivning |
|---|---|---|---|
N | heltal | obligatorisk | Antal barer i regressionsfönstret. Små värden reagerar snabbt men byter tecken ofta; större värden beskriver den uthålliga trenden. |
price | priskälla | close | Serie som linjen anpassas till. Vanligtvis close; open, high, low, eller en egen variabel fungerar också. |
Formel
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 = bdär x är barindexet inom fönstret och y priset. Resultatet uttrycks i prisenheter per bar.
Så fungerar det
Medan LinearRegression returnerar nivån för den anpassade linjen, LinearRegressionSlope returnerar dess riktning. Varje bar anpassar funktionen om linjen över de senaste N priser och ger koefficienten b: hur mycket den anpassade linjen stiger eller faller per bar. Ett värde på 0.5 i ett dagsdiagram betyder att regressionstrenden klättrar en halv punkt per dag.
Eftersom anpassningen beaktar varje punkt i fönstret snarare än bara den första och den sista är lutningen mindre känslig för en enskild brusig bar än en enkel N-barers prisskillnad. Den är i praktiken en utjämnad förändringstakt, vilket är varför den också fungerar som ett momentum-mått.
Nollinjen är den naturliga vändpunkten. Korsningar från negativt till positivt flaggar för en möjlig övergång till en upptrend, korsningar i andra riktningen för en möjlig nedtrend. Att kombinera lutningen med R2 filtrerar dessa signaler, eftersom en brant lutning genom dåligt passande data är mindre tillförlitlig än en måttlig lutning genom en ren trend.
Exempel
Exempel 1, Signaler när lutningen korsar noll (Indikator)
// 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, bearishMarkerar baren där 10-barslutningen blir positiv med värdet 1 och baren där den blir negativ med -1, en kompakt detektor för trendskiften.
Exempel 2, Kvalitetsfiltrerad trendskanning (ProScreener)
// 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")Returnerar instrument med positiv 20-barslutning vars R-kvadrat överstiger 0.8, och behåller bara trender som både stiger och är väldefinierade.
Exempel 3, Lutning som entryfilter (ProBacktest)
// 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
ENDIFKräver att den medellånga regressionslutningen är positiv innan en 20-bars breakout accepteras, och stänger positionen när lutningen vänder ned.
Tolkning
Tecknet ger riktningen: positiv lutning, upptrend; negativ lutning, nedtrend. Storleken ger branthet, men i absoluta prisenheter, så den måste bedömas mot instrumentets egen skala. En lutning på 2 är brant på ett instrument som handlas vid 50 och försumbar på ett som handlas vid 5000.
Lutningens beteende beskriver också trendens mognad. En stigande lutning betyder att trenden accelererar, en fallande men fortfarande positiv lutning betyder en upptrend som tappar momentum, ett mönster som ofta föregår den faktiska prisvändningen.
Vanliga fel och fallgropar
- Inte jämförbart mellan instrument. Den råa lutningen beror på prisskalan. För screeners som täcker många instrument bör den normaliseras, till exempel
100 * LinearRegressionSlope[20](close) / close, för att få procent per bar. - Whipsaws runt nollan. I sidledes marknader ligger lutningen nära noll och byter tecken ofta. Nollkorsningslogik utan en tröskel för magnitud eller ett
R2filter genererar en ström av falska signaler. - Fel typ av parentes.
LinearRegressionSlope(10, close)kompilerar inte. Period i hakparenteser, priskälla i parenteser. - Brant betyder inte tillförlitlig. En stor lutning genom spridda data speglar några enstaka avvikare, inte en trend. Kontrollera anpassningens kvalitet med
R2innan du agerar på värdet.
Relaterade instruktioner
LinearRegression, nivån på samma anpassade linje.R2, regressionens anpassningskvalitet, det naturliga kompletterande filtret.ROC, förändringstakt, ett enklare momentum-mått.Momentum, ren prisskillnad överNbarer.Average, glidande medelvärde vars lutning fyller ett liknande syfte.ADX, trendstyrka utan riktning, ett alternativt filter.STE, standardfelet för regressionsskattningen.TimeSeriesAverage, regressionsbaserad utjämning av priset.