LinearRegression
LinearRegression i ProBuilder returnerar värdet på en minstakvadratregressionslinje anpassad till de senaste N barerna av pris. Syntax, formel, genomgångna exempel.
Syntax
LinearRegression[N](price)Parametrar
| Namn | Typ | Standard | Beskrivning |
|---|---|---|---|
N | heltal | obligatorisk | Antal barer i regressionsfönstret. Korta fönster som 10 följer priset nära, långa fönster som 50 eller 100 beskriver den bredare trenden. |
price | priskälla | close | Serie som linjen anpassas till. Vanligtvis close, men open, high, low, typicalprice, eller en egen variabel accepteras. |
Formel
Fit y = a + b*x by least squares over the last N bars,
minimising sum( (price[i] - (a + b*i))^2 )
LinearRegression = value of the fitted line at the current barKoefficienterna räknas om från början på varje bar, så utdatan följer den rörliga slutpunkten på en rullande regressionslinje.
Så fungerar det
Minstakvadratregression finner den räta linje som passerar så nära som möjligt de senaste N prispunkter. LinearRegression utvärderar den linjen på den senaste baren och returnerar det enskilda talet, inte hela segmentet. Bar efter bar bildar dessa ändpunkter en jämn kurva som beter sig som ett glidande medelvärde med märkbart mindre eftersläpning, eftersom en anpassad linje extrapolerar fönstrets riktning i stället för att jämna ut den symmetriskt.
Det returnerade värdet läses ofta som jämviktspriset för fönstret: där priset "borde" ligga om den senaste trenden var perfekt linjär. Skillnaden mellan det faktiska priset och det här värdet mäter hur utsträckt marknaden är i förhållande till sin egen trend, vilket är grunden för oscillatorn i Exempel 1.
Tillhörande funktioner kompletterar bilden. LinearRegressionSlope returnerar koefficienten b, riktningen och lutningen på samma anpassade linje, och R2 visar hur väl linjen faktiskt passar data.
Exempel
Exempel 1, Oscillator baserad på linjär regression (Indikator)
// Regression value of the close over the last 10 bars
a = LinearRegression[10](close)
// Current close
b = close
// Oscillator: distance between price and its regression line
c = b - a
RETURN cRitar ut skillnaden mellan stängningen och dess 10-bars regressionsvärde. Positiva värden betyder att priset handlas över sin kortsiktiga jämvikt, negativa värden under den.
Exempel 2, Regressionslinje som trendfilter (ProOrder)
// Trade long only while price holds above its 50-bar regression value
eq = LinearRegression[50](close)
IF NOT LongOnMarket AND close CROSSES OVER eq THEN
BUY 1 CONTRACT AT MARKET
ELSIF LongOnMarket AND close CROSSES UNDER eq THEN
SELL AT MARKET
ENDIFAnvänder regressionens slutpunkt på samma sätt som ett glidande medelvärde normalt används, med entry vid korsning uppåt och exit vid korsning nedåt.
Exempel 3, Utsträckt över jämvikten (ProScreener)
// Instruments trading well above their 20-bar regression value
eq = LinearRegression[20](close)
stretch = 100 * (close - eq) / eq
SCREENER[stretch > 2](stretch AS "Pct above regression")Returnerar instrument vars stängning ligger mer än 2 procent över 20-bars regressionsvärdet, en enkel skanning efter överutsträckning.
Tolkning
Att priset oscillerar runt regressionsvärdet är normalt beteende; värdet självt anger trendens nuvarande läge. Ihållande värden över linjen signalerar köptryck, ihållande värden under signalerar säljtryck, och storleken på gapet anger utsträckningen. Avvikelsebaserade verktyg som Raff-regressionskanaler bygger band runt exakt den här linjen.
Utdatan säger ingenting om anpassningens kvalitet i sig. En regression genom hackiga, sidledes data returnerar fortfarande ett värde varje bar. Att kontrollera R2 vid sidan av den skiljer meningsfulla trender från brus.
Vanliga fel och fallgropar
- Ett värde, inte en ritad linje. Funktionen returnerar ett tal per bar, slutpunkten på den aktuella anpassningen. Den ritar inte ut regressionssegmentet över diagrammet, och tidigare utdata är slutpunkter för äldre fönster, inte punkter på dagens linje.
- Fel typ av parentes.
LinearRegression(10, close)går inte att kompilera. Perioden hör i hakparenteser och kurskällan i parenteser:LinearRegression[10](close). - Känslig för extremvärden. Minsta kvadratmetoden straffar kvadrerade fel, så en enda spik inuti fönstret drar hela linjen mot sig. På tunna instrument förvränger en enda felaktig notering värdet i
Nbarer. - Korta fönster överreagerar. Med små
Nföljer linjen priset nästan tick för tick och avvikelseoscillatorn lämnar nästan aldrig noll. VäljNtillräckligt stor för att jämviktsbegreppet ska vara meningsfullt.
Relaterade instruktioner
LinearRegressionSlope, lutningskoefficient för samma anpassade linje.R2, determinationskoefficient, mäter hur väl linjen passar.TimeSeriesAverage, närbesläktad regressionsbaserad utjämning.Average, enkelt glidande medelvärde för jämförelse.ExponentialAverage, utjämningsalternativ med låg eftersläpning.STD, standardavvikelse, används för att bygga band runt en regressionslinje.EndPointAverage, ytterligare ett medelvärde baserat på slutpunkt.WeightedAverage, linjärt viktat medelvärde med minskad eftersläpning.