Signatur
Beschreibung
trader_linearreg ist Teil der PECL-Erweiterung Trader, die technische Analyse-Indikatoren aus der TA-Lib-Bibliothek bereitstellt. Die Funktion berechnet für jeden Datenpunkt die lineare Regression über die letzten timePeriod Werte und gibt den jeweiligen Endwert der Regressionsgerade zurück – also den Schätzwert des letzten Punktes der angepassten Geraden.
Die lineare Regression versucht, eine Gerade so durch die letzten n Werte zu legen, dass die Summe der quadratischen Abweichungen minimiert wird (Methode der kleinsten Quadrate). Das Ergebnis ist kein Durchschnitt, sondern ein auf Basis des Trends gewichteter Schätzwert, der auf Trendrichtung und -stärke hindeutet.
Typische Anwendungsfälle sind: Trendanalyse in Finanzdaten, Glättung von Zeitreihen und als Basis für weitere Indikatoren wie trader_linearreg_slope oder trader_linearreg_angle. Gegenüber einem einfachen gleitenden Durchschnitt reagiert die lineare Regression schneller auf Trendänderungen.
Da die Funktion einen Anlauf von timePeriod - 1 Datenpunkten benötigt, enthält das Ergebnis-Array entsprechend weniger Elemente als die Eingabe. Die Schlüssel des Rückgabe-Arrays beginnen bei dem Index, ab dem genügend Daten vorhanden sind.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $real Pflicht | array | Numerisches Array mit den Eingabewerten (z. B. Schlusskurse). Die Werte müssen als float vorliegen oder automatisch konvertierbar sein. |
|
| $timePeriod | int | 14 | Anzahl der Perioden, über die die lineare Regression berechnet wird. Gültige Werte: 2–100000. Standardwert ist 14. |
Rückgabewert
timePeriod - 1 Elemente kein Wert berechnet werden kann. Bei einem Fehler (ungültige Parameter, leeres Array) wird false zurückgegeben.Beispiele
Lineare Regression auf Schlusskurse anwenden
<?php
// Beispielhafte Schlusskurse (z. B. aus einer Datenbank)
$closes = [44.34, 44.09, 44.15, 43.61, 44.33, 44.83, 45.10, 45.15,
43.61, 44.33, 44.83, 45.10, 45.15, 45.98, 45.41, 46.02];
// Lineare Regression mit Periode 5
$linreg = trader_linearreg($closes, 5);
if ($linreg === false) {
echo 'Fehler bei der Berechnung.' . PHP_EOL;
} else {
foreach ($linreg as $index => $value) {
printf("Index %2d: %.4f\n", $index, $value);
}
}
?>
Vergleich mit gleitendem Durchschnitt
<?php
$closes = [10, 11, 12, 13, 14, 15, 14, 13, 12, 11, 10];
$linreg = trader_linearreg($closes, 4);
$sma = trader_sma($closes, 4);
echo "Index | LinReg | SMA" . PHP_EOL;
foreach ($linreg as $i => $lr) {
printf("%5d | %7.4f | %7.4f\n", $i, $lr, $sma[$i]);
}
?>
// Wichtig · Fallstricke
Voraussetzung: Die Funktion steht nur zur Verfügung, wenn die PECL-Erweiterung trader installiert und geladen ist (pecl install trader). Ohne diese Erweiterung führt der Aufruf zu einem fatalen Fehler.
Array-Schlüssel: Das Ergebnis-Array behält die ursprünglichen numerischen Schlüssel der Eingabe. Der erste Schlüssel ist daher timePeriod - 1. Beim Zusammenführen mit anderen Daten (z. B. Datumsangaben) ist darauf zu achten, dass Indizes korrekt abgeglichen werden.
Randfälle: Wenn $real weniger Elemente enthält als timePeriod, gibt die Funktion false zurück. Nicht-numerische Werte im Array können zu unerwarteten Ergebnissen führen – das Array sollte vorher bereinigt werden.