Signatur
Beschreibung
trader_ht_trendmode ist Teil der PECL-Erweiterung Trader, die technische Analyse-Indikatoren für Finanzdaten bereitstellt. Die Funktion analysiert eine Zeitreihe von Kursdaten mit dem Hilbert-Transformations-Algorithmus (HT) und ermittelt für jeden Zeitpunkt, ob der Markt sich im Trend-Modus (Rückgabewert 1) oder im Zyklusmodus (Rückgabewert 0) befindet.
Die Hilbert-Transformation ist ein mathematisches Werkzeug aus der Signalverarbeitung, das in der technischen Analyse genutzt wird, um zyklische und trendende Marktphasen zu unterscheiden. Im Trend-Modus überwiegen gerichtete Preisbewegungen, während im Zyklusmodus der Preis in einem wellenartigen Seitwärtsbereich pendelt. Diese Information ist für Händler und quantitative Analysten wertvoll, um ihre Handelsstrategie situationsgerecht zu wählen.
Die Funktion eignet sich insbesondere zur Filterung von Handelssignalen: Trendfolgestrategien sollten bevorzugt im Trend-Modus eingesetzt werden, während Oszillatoren und Mean-Reversion-Strategien im Zyklusmodus bessere Ergebnisse erzielen.
Beachte, dass die Ergebnisse einen Lookup-Zeitraum (Lookback) erfordern, sodass die ersten Einträge des Eingabe-Arrays keine Ausgabewerte erzeugen und das Ergebnis-Array kürzer sein kann als das Eingabe-Array.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $real Pflicht | array | Numerisches Array mit Schlusskursen oder anderen Zeitreihendaten (typischerweise float-Werte), die analysiert werden sollen. Die Indizes sollten sequenziell und lückenlos sein. |
Rückgabewert
0 (Zyklusmodus) oder 1 (Trend-Modus). Bei ungültiger Eingabe oder einem Fehler wird false zurückgegeben.Beispiele
Einfache Anwendung mit historischen Schlusskursen
<?php
// Beispielhafte Schlusskurse (z. B. täglich)
$closes = [100.0, 101.5, 103.2, 102.8, 104.0, 105.5, 106.0, 105.0,
104.5, 104.8, 105.2, 106.5, 107.0, 107.8, 108.5, 109.0,
109.5, 110.0, 110.8, 111.2, 111.5, 112.0, 112.5, 113.0,
113.5, 114.0, 114.5, 115.0, 115.5, 116.0, 116.5, 117.0];
$result = trader_ht_trendmode($closes);
if ($result === false) {
echo "Fehler bei der Berechnung." . PHP_EOL;
} else {
foreach ($result as $index => $mode) {
$label = ($mode == 1) ? 'Trend-Modus' : 'Zyklusmodus';
echo "Index {$index}: {$label}" . PHP_EOL;
}
}
?>
Kombination mit Handelssignal-Filterung
<?php
// Schlusskurse aus einer Datenbank oder API-Quelle
$closes = array_map('floatval', $rawCloses); // $rawCloses enthält rohe Preisdaten
$trendMode = trader_ht_trendmode($closes);
$macdResult = trader_macd($closes, 12, 26, 9);
if ($trendMode === false || $macdResult === false) {
echo "Berechnung fehlgeschlagen." . PHP_EOL;
exit;
}
// Letzter bekannter Index, der in beiden Ergebnissen vorhanden ist
$lastIndex = max(array_keys($trendMode));
if (isset($trendMode[$lastIndex])) {
if ($trendMode[$lastIndex] == 1) {
echo "Markt im Trend-Modus: Trendfolge-Strategie anwenden." . PHP_EOL;
// MACD-Signal für Trendeinstieg prüfen
$macdLine = $macdResult['real'][$lastIndex] ?? null;
$signalLine = $macdResult['signal'][$lastIndex] ?? null;
if ($macdLine !== null && $signalLine !== null && $macdLine > $signalLine) {
echo "MACD-Kaufsignal im Trend-Modus erkannt!" . PHP_EOL;
}
} else {
echo "Markt im Zyklusmodus: Oszillator-Strategie bevorzugen." . PHP_EOL;
}
}
?>
// Wichtig · Fallstricke
Voraussetzung: Die PECL-Erweiterung trader muss installiert und aktiviert sein (pecl install trader). Sie ist nicht in der Standard-PHP-Distribution enthalten.
Lookback-Zeitraum: Der Hilbert-Transformations-Algorithmus benötigt eine Mindestanzahl an Datenpunkten (typischerweise 63), bevor er einen Ausgabewert liefern kann. Das Ergebnis-Array ist daher kürzer als das Eingabe-Array. Prüfe mit count($result), wie viele Werte tatsächlich zurückgegeben wurden.
Eingabedaten: Stelle sicher, dass das Eingabe-Array ausschließlich gültige numerische Werte enthält und keine Lücken oder null-Werte aufweist, da dies zu falschen Ergebnissen oder false als Rückgabe führen kann.
Der Algorithmus basiert auf der Arbeit von John Ehlers (Cybernetic Analysis for Stocks and Futures) und ist Teil der TA-Lib-Bibliothek, auf der die Trader-Erweiterung aufbaut.