Start · Sprachen · PHP · Referenz · trader_linearreg_angle

trader_linearreg_angle

Funktion

Berechnet den Winkel der linearen Regressionsgeraden in Grad für jede Position einer Zeitreihe.

Kategorie: math

Signatur

trader_linearreg_angle(array $real, int $timePeriod = 14): array|false

Beschreibung

trader_linearreg_angle gehört zur TRADER-Erweiterung (TA-Lib) für PHP und berechnet den Winkel der linearen Regressionsgeraden für ein gleitendes Fenster über eine numerische Zeitreihe. Das Ergebnis wird in Grad (nicht Bogenmaß) ausgegeben und gibt an, wie stark die Regressionsgerade innerhalb des betrachteten Zeitfensters ansteigt oder fällt.

Die Funktion ist besonders nützlich in der technischen Analyse von Finanzmarktdaten: Ein positiver Winkel zeigt einen Aufwärtstrend, ein negativer Winkel einen Abwärtstrend an. Je steiler der Winkel, desto ausgeprägter der Trend. Im Vergleich zur bloßen Steigung (Slope) ist der Winkel intuitiver interpretierbar, da er unabhängig von der Skalierung der Daten ist.

Die Berechnung basiert auf der Methode der kleinsten Quadrate über ein rollierendes Fenster der Länge timePeriod. Die ersten timePeriod - 1 Elemente des Rückgabe-Arrays sind nicht vorhanden (die Ausgabe ist kürzer als die Eingabe). Die TRADER-Erweiterung muss separat installiert sein (pecl install trader).

  • Winkel > 0: Aufwärtstrend
  • Winkel < 0: Abwärtstrend
  • Winkel ≈ 0: Seitwärtsbewegung

Parameter

Name Typ Default Beschreibung
$real Pflicht array Eingabe-Array mit numerischen Werten (z. B. Schlusskurse einer Aktie). Die Indizes sollten fortlaufend sein.
$timePeriod int 14 Anzahl der Perioden (Fenstergröße) für die lineare Regression. Muss zwischen 2 und 100000 liegen. Standardwert ist 14.

Rückgabewert

Typ
array|false
Beschreibung
Gibt ein Array mit den berechneten Winkeln in Grad zurück. Das Array ist kürzer als real: Die ersten timePeriod - 1 Werte fehlen. Bei einem Fehler (z. B. ungültige Parameter oder nicht verfügbare TRADER-Erweiterung) wird false zurückgegeben.

Beispiele

Winkel der linearen Regression für Schlusskurse berechnen

<?php
// Beispiel-Schlusskurse einer Aktie (14 Tage)
$closes = [100, 102, 101, 104, 107, 109, 108, 111, 113, 115, 114, 117, 119, 121];

// Winkel über 5-Perioden-Fenster berechnen
$angles = trader_linearreg_angle($closes, 5);

if ($angles === false) {
    echo "Fehler bei der Berechnung.";
} else {
    foreach ($angles as $index => $angle) {
        printf("Index %d: Winkel = %.4f Grad\n", $index, $angle);
    }
}
// Die ersten 4 Werte (timePeriod - 1 = 4) fehlen im Ausgabe-Array
Index 4: Winkel = 1.7682 Grad Index 5: Winkel = 1.9289 Grad Index 6: Winkel = 1.1071 Grad Index 7: Winkel = 1.7682 Grad Index 8: Winkel = 1.7682 Grad Index 9: Winkel = 1.7682 Grad Index 10: Winkel = 0.5708 Grad Index 11: Winkel = 1.7682 Grad Index 12: Winkel = 1.7682 Grad Index 13: Winkel = 1.7682 Grad

Trend-Erkennung: Aufwärts, Abwärts oder Seitwärts

<?php
// Mischung aus Auf- und Abwärtsbewegungen
$preise = [200, 198, 195, 193, 190, 192, 194, 197, 200, 203, 205, 204, 202, 200];

$winkel = trader_linearreg_angle($preise, 5);

if ($winkel === false) {
    echo "Berechnung fehlgeschlagen.\n";
    exit;
}

foreach ($winkel as $i => $w) {
    if ($w > 1.0) {
        $trend = 'Aufwärtstrend';
    } elseif ($w < -1.0) {
        $trend = 'Abwärtstrend';
    } else {
        $trend = 'Seitwärts';
    }
    printf("Periode %2d: %7.4f Grad => %s\n", $i, $w, $trend);
}
Periode 4: -2.8624 Grad => Abwärtstrend Periode 5: -2.8624 Grad => Abwärtstrend Periode 6: -2.8624 Grad => Abwärtstrend Periode 7: 0.5708 Grad => Seitwärts Periode 8: 1.7682 Grad => Aufwärtstrend Periode 9: 2.8624 Grad => Aufwärtstrend Periode 10: 2.8624 Grad => Aufwärtstrend Periode 11: 1.9289 Grad => Aufwärtstrend Periode 12: 0.5708 Grad => Seitwärts Periode 13: -0.5708 Grad => Seitwärts

// Wichtig · Fallstricke

Erweiterung erforderlich: trader_linearreg_angle ist Teil der PECL-Erweiterung trader, die nicht standardmäßig in PHP enthalten ist. Installation via pecl install trader und Aktivierung in der php.ini notwendig (extension=trader).

Array-Indizes: Das zurückgegebene Array verwendet dieselben numerischen Indizes wie das Eingabe-Array, beginnend bei timePeriod - 1. Beim Zugriff auf kombinierte Datensätze (z. B. Datum + Winkel) unbedingt array_keys() berücksichtigen, um Indexverschiebungen zu vermeiden.

Skalierungsunabhängigkeit: Im Gegensatz zur rohen Steigung (trader_linearreg_slope) ist der Winkel dimensionslos in Grad, was den Vergleich zwischen verschiedenen Wertpapieren oder Skalen erleichtert. Allerdings hängt der absolute Winkelwert von der Skalierung der X-Achse (Zeitachse) ab – bei unterschiedlichen Zeitrahmen sind Vergleiche mit Vorsicht zu interpretieren.