Start · Sprachen · PHP · Referenz · trader_ht_dcphase

trader_ht_dcphase

Funktion

Berechnet die dominante Zyklusphase eines Zeitreihendatensatzes mittels der Hilbert-Transformation.

Kategorie: math

Signatur

trader_ht_dcphase(array $real): array|false

Beschreibung

trader_ht_dcphase ist Teil der TRADER-Erweiterung für PHP (basierend auf der TA-Lib) und berechnet die Hilbert-Transformation – Dominant Cycle Phase (HT_DCPHASE). Diese Funktion analysiert eine Zeitreihe (z. B. Schlusskurse einer Aktie) und ermittelt die Phase des dominanten Zyklus im Signal.

Die Hilbert-Transformation ist ein mathematisches Werkzeug aus der Signalverarbeitung, das es ermöglicht, den instantanen Phasenwinkel eines Signals zu bestimmen. Der Ausgabewert gibt für jeden Datenpunkt den Phasenwinkel (in Grad, 0–360) des dominanten Zyklus an. Dies ist besonders nützlich in der technischen Analyse von Finanzzeitreihen, um Wendepunkte im Markt zu identifizieren.

Die Funktion liefert ein Array mit den berechneten Phasenwerten. Da die HT_DCPHASE einen Anlauf benötigt, enthält das Ergebnis-Array weniger Elemente als das Eingabe-Array – die ersten Werte werden weggelassen (sogenannter Lookback-Bereich). Die Schlüssel des Ergebnis-Arrays beginnen daher bei einem Offset, der dem Lookback-Wert entspricht.

Typische Einsatzgebiete sind algorithmisches Trading, quantitative Finanzanalyse sowie jede Anwendung, bei der zyklische Muster in Zeitreihendaten erkannt werden sollen.

Parameter

Name Typ Default Beschreibung
$real Pflicht array Ein numerisches Array mit den Eingabewerten der Zeitreihe (z. B. Schlusskurse). Die Werte müssen als float vorliegen oder in float konvertierbar sein.

Rückgabewert

Typ
array|false
Beschreibung
Gibt ein assoziatives Array mit den berechneten Phasenwinkeln (in Grad) zurück. Die Schlüssel des Arrays entsprechen den Indizes der Eingabedaten, versetzt um den Lookback-Wert der Funktion. Bei einem Fehler (z. B. ungültige Eingabe oder zu wenige Datenpunkte) wird false zurückgegeben.

Beispiele

Dominante Zyklusphase für Schlusskurse berechnen

<?php
// Beispiel-Schlusskurse (mindestens ~64 Werte empfohlen)
$close = [
    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.02, 45.00, 44.90,
    44.50, 44.20, 44.60, 45.00, 45.50, 46.00, 46.30, 46.10,
    45.80, 45.50, 45.20, 45.00, 44.80, 44.60, 44.40, 44.20,
    44.00, 43.80, 43.60, 43.40, 43.20, 43.00, 42.80, 42.60,
    42.40, 42.20, 42.00, 42.20, 42.40, 42.60, 42.80, 43.00,
    43.20, 43.40, 43.60, 43.80, 44.00, 44.20, 44.40, 44.60,
    44.80, 45.00, 45.20, 45.40, 45.60, 45.80, 46.00, 46.20,
    46.40, 46.60, 46.80, 47.00, 47.20, 47.40, 47.60, 47.80,
];

$result = trader_ht_dcphase($close);

if ($result === false) {
    echo "Berechnung fehlgeschlagen.\n";
} else {
    echo "Anzahl berechneter Phasenwerte: " . count($result) . "\n";
    foreach ($result as $index => $phase) {
        printf("Index %d => Phase: %.4f Grad\n", $index, $phase);
    }
}
Anzahl berechneter Phasenwerte: 8 Index 63 => Phase: ... ...

Phasenwechsel als Handelssignal erkennen

<?php
// Beispiel: Phasenwechsel (Übergang von 360° auf 0°) als potenzielle Trendwende
$close = array_map(fn($i) => 45 + 3 * sin($i * M_PI / 18), range(0, 99));

$phases = trader_ht_dcphase($close);

if ($phases === false) {
    echo "Fehler bei der Berechnung.\n";
} else {
    $keys = array_keys($phases);
    for ($i = 1; $i < count($keys); $i++) {
        $prev = $phases[$keys[$i - 1]];
        $curr = $phases[$keys[$i]];
        // Phasenwechsel: vorheriger Wert nahe 360, aktueller nahe 0
        if ($prev > 300 && $curr < 60) {
            printf("Mögliche Trendwende bei Index %d (Phase: %.2f -> %.2f)\n",
                $keys[$i], $prev, $curr);
        }
    }
}

// Wichtig · Fallstricke

Lookback: Die Hilbert-Transformation benötigt eine Mindestanzahl an Datenpunkten, bevor ein sinnvoller Ausgabewert berechnet werden kann. Es werden üblicherweise mindestens 63 Eingabewerte benötigt; mit weniger Datenpunkten gibt die Funktion false zurück.

Erweiterung: trader_ht_dcphase ist nur verfügbar, wenn die PHP-Erweiterung trader installiert und aktiviert ist (pecl install trader). Ohne diese Erweiterung existiert die Funktion nicht.

Ausgabe-Indizes: Das Ergebnis-Array beginnt nicht bei Index 0, sondern bei dem Index, der dem Lookback-Wert entspricht. Dies ist zu beachten, wenn Ergebnisse mit den Originaldaten verglichen oder geplottet werden.