Signatur
Beschreibung
trader_ht_phasor ist Teil der PECL-Erweiterung Trader und implementiert die technische Analyse-Funktion Hilbert Transform – Phasor Components (HT_PHASOR). Die Funktion analysiert eine Preis- oder Datenzeitreihe und gibt zwei Komponenten zurück: den In-Phase-Anteil (I) und den Quadrature-Anteil (Q). Diese beiden Werte beschreiben gemeinsam den Phasor des dominanten Zyklus im Datenstrom.
Die Hilbert-Transformation ist ein mathematisches Verfahren aus der Signalverarbeitung, das im Bereich der technischen Finanzanalyse eingesetzt wird, um zyklische Muster in Marktdaten zu identifizieren. In-Phase und Quadrature ermöglichen es, Phase und Amplitude des dominanten Marktzyklus zu berechnen, was z. B. als Grundlage für den Hilbert-Transform-Phasen-Indikator oder andere adaptive Indikatoren dient.
Das Ergebnis ist ein assoziatives Array mit zwei Schlüsseln: inphase und quadrature, jeweils als numerisch indizierte Arrays. Da die Berechnung einen Vorlauf benötigt, sind die ersten Einträge im Ergebnis-Array nicht belegt (Lookback-Periode).
Die Funktion ist nützlich für Trader und Quants, die adaptive Marktzyklusanalyse betreiben und zuverlässig den dominanten Zyklus in Finanzzeitreihen bestimmen möchten.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $real Pflicht | array | Numerisch indiziertes Array mit reellen Eingabewerten (z. B. Schlusskurse). Die Werte müssen vom Typ float sein oder implizit konvertierbar. |
Rückgabewert
inphase (In-Phase-Komponente) und quadrature (Quadrature-Komponente) zurück. Beide Werte sind numerisch indizierte Arrays mit float-Werten. Bei einem Fehler (z. B. ungültige Eingabe oder Trader-Fehler) wird false zurückgegeben.Beispiele
Phasor-Komponenten für eine Kursreihe berechnen
<?php
// Beispiel-Schlusskurse (mind. ~32 Werte für sinnvolle Ergebnisse)
$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, 43.61, 44.33, 44.83,
45.10, 45.15, 43.61, 44.33, 44.83, 45.10, 45.15, 43.61,
44.33, 44.83, 45.10, 45.15, 43.61, 44.33, 44.83, 45.10,
45.15, 43.61, 44.33, 44.83, 45.10, 45.15, 43.61, 44.33
];
$result = trader_ht_phasor($close);
if ($result === false) {
echo 'Fehler bei der Berechnung.';
} else {
echo 'In-Phase-Komponenten:' . PHP_EOL;
foreach ($result['inphase'] as $idx => $val) {
echo " [{$idx}] = {$val}" . PHP_EOL;
}
echo 'Quadrature-Komponenten:' . PHP_EOL;
foreach ($result['quadrature'] as $idx => $val) {
echo " [{$idx}] = {$val}" . PHP_EOL;
}
}
Phase und Amplitude aus Phasor-Komponenten ableiten
<?php
$close = array_map(
fn($i) => 44.0 + 1.5 * sin($i * M_PI / 8),
range(0, 63)
);
$result = trader_ht_phasor($close);
if ($result !== false) {
$inphase = $result['inphase'];
$quadrature = $result['quadrature'];
// Gemeinsame Indizes bestimmen
$keys = array_intersect_key($inphase, $quadrature);
foreach (array_keys($keys) as $i) {
$phase = atan2((float)$quadrature[$i], (float)$inphase[$i]);
$amplitude = sqrt($inphase[$i] ** 2 + $quadrature[$i] ** 2);
printf("[%d] Phase: %.4f rad | Amplitude: %.4f\n", $i, $phase, $amplitude);
}
}
// Wichtig · Fallstricke
PECL-Abhängigkeit: trader_ht_phasor erfordert die PECL-Erweiterung trader, die auf der TA-Lib-Bibliothek basiert. Diese muss separat installiert und in der php.ini aktiviert sein (extension=trader).
Lookback-Periode: Die Hilbert-Transformation benötigt einen Vorlauf von etwa 32 Datenpunkten. Ergebnisarrays enthalten daher am Anfang keine Werte; die Schlüssel der Ausgabe beginnen erst ab dem Index, ab dem genug Daten vorhanden sind.
Fehlerbehandlung: Bei einem internen Trader-Fehler wird false zurückgegeben. Mit trader_errno() kann der Fehlercode abgefragt werden.