Signatur
Beschreibung
trader_linearreg_slope gehört zur TRADER-Erweiterung (Technical Analysis Library) und berechnet für jeden Datenpunkt einer Zeitreihe die Steigung der linearen Regressionsgerade. Die Steigung gibt an, wie stark sich der Wert pro Zeiteinheit im betrachteten Fenster (Periode) ändert – sie ist das m aus der Geradengleichung y = m·x + b.
In der technischen Analyse von Finanzmärkten wird die Steigung genutzt, um die Richtung und Intensität eines Trends zu quantifizieren. Ein positiver Wert zeigt einen Aufwärtstrend an, ein negativer Wert einen Abwärtstrend; je größer der Betrag, desto steiler der Trend im betrachteten Zeitfenster.
Die Funktion verwendet die Methode der kleinsten Quadrate (Ordinary Least Squares). Das Zeitfenster verschiebt sich gleitend über das Eingabe-Array, sodass für jeden Datenpunkt ab Index timePeriod - 1 ein Steigungswert berechnet wird. Die ersten timePeriod - 1 Elemente fehlen im Rückgabe-Array (sie werden übersprungen).
Typische Einsatzgebiete sind algorithmisches Trading, Trendstärken-Analysen sowie die Entwicklung von Handelsstrategien, die auf der Dynamik von Kursbewegungen basieren.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $real Pflicht | array | Eindimensionales Array mit numerischen Eingabewerten (z. B. Schlusskurse). Die Werte müssen in chronologischer Reihenfolge vorliegen. | |
| $timePeriod | int | 14 | Anzahl der Datenpunkte (Perioden), über die die lineare Regression berechnet wird. Muss mindestens 2 betragen. Standardwert ist 14. |
Rückgabewert
timePeriod - 1 Einträge des Eingabe-Arrays haben keinen korrespondierenden Ausgabewert. Bei ungültigen Parametern oder einem Fehler wird false zurückgegeben.Beispiele
Grundlegende Berechnung der Regressionssteigung
<?php
// Beispielhafte Schlusskurse einer Aktie
$closes = [100.0, 102.5, 101.0, 103.0, 105.5, 107.0, 106.0, 108.5, 110.0, 111.5,
112.0, 113.5, 115.0, 114.5, 116.0, 117.5, 119.0, 118.0, 120.5, 122.0];
$timePeriod = 5;
$slopes = trader_linearreg_slope($closes, $timePeriod);
if ($slopes === false) {
echo 'Fehler bei der Berechnung.' . PHP_EOL;
} else {
echo 'Berechnete Steigungswerte:' . PHP_EOL;
foreach ($slopes as $index => $slope) {
printf("Index %2d: Steigung = %.4f\n", $index, $slope);
}
}
Trendrichtung anhand der Steigung bestimmen
<?php
$closes = [200.0, 198.5, 197.0, 195.5, 194.0, 193.0, 194.5, 196.0, 198.0, 200.5,
202.0, 203.5, 205.0, 207.0, 206.5, 208.0, 210.5, 212.0, 211.5, 213.0];
$slopes = trader_linearreg_slope($closes, 10);
if ($slopes !== false) {
$lastSlope = end($slopes);
if ($lastSlope > 0) {
echo sprintf("Aufwärtstrend — Steigung: %.4f pro Periode\n", $lastSlope);
} elseif ($lastSlope < 0) {
echo sprintf("Abwärtstrend — Steigung: %.4f pro Periode\n", $lastSlope);
} else {
echo "Kein klarer Trend (Steigung = 0)\n";
}
}
// Wichtig · Fallstricke
Voraussetzung: Die TRADER-Erweiterung muss kompiliert und aktiviert sein (extension=trader in der php.ini). Sie basiert auf der TA-Lib (Technical Analysis Library).
Rückgabe-Index: Das zurückgegebene Array beginnt nicht bei Index 0, sondern bei Index timePeriod - 1. Beim Zugriff auf Ergebnisse muss dies berücksichtigt werden, da es sonst zu Undefined offset-Warnungen kommen kann.
Gleitende vs. kumulative Berechnung: Die Steigung wird gleitend (rollierend) berechnet. Jeder Ausgabewert repräsentiert ausschließlich das Zeitfenster der letzten timePeriod Werte, nicht die gesamte Zeitreihe.
Verwandte Funktionen: Für den Achsenabschnitt (Intercept) der selben Regressionsgerade siehe trader_linearreg_intercept; für den aktuellen Regressionswert am letzten Punkt des Fensters trader_linearreg.