Start · Sprachen · PHP · Referenz · trader_dx

trader_dx

Funktion

Berechnet den <code>DX</code> (Directional Movement Index) aus Hoch-, Tief- und Schlusskursen über einen definierten Zeitraum.

Kategorie: math

Signatur

trader_dx(array $high, array $low, array $close, int $timePeriod = 14): array|false

Beschreibung

Die Funktion trader_dx() gehört zur PECL-Erweiterung Trader, die auf der TA-Lib (Technical Analysis Library) basiert. Sie berechnet den Directional Movement Index (DX), einen Indikator aus der technischen Analyse, der die Stärke eines Trends misst – unabhängig von dessen Richtung.

Der DX setzt die positiven und negativen Directional Movement-Werte (+DI und -DI) ins Verhältnis zueinander. Ein hoher DX-Wert deutet auf einen starken Trend hin, ein niedriger Wert signalisiert einen schwachen oder seitwärts gerichteten Markt. Er bildet die Grundlage für den ADX-Indikator, der eine geglättete Variante des DX darstellt.

Die Eingabe-Arrays müssen numerisch indiziert sein und die gleiche Länge besitzen. Das Rückgabe-Array enthält weniger Elemente als die Eingabe-Arrays, da für die ersten timePeriod - 1 Elemente kein Wert berechnet werden kann (Lookback-Periode). Die Schlüssel des Rückgabe-Arrays beginnen daher versetzt.

Typische Anwendungsfälle sind Handelssysteme und Chartanalyse-Tools, bei denen die Trendstärke eines Wertpapiers über Zeit visualisiert oder algorithmisch ausgewertet werden soll.

Parameter

Name Typ Default Beschreibung
$high Pflicht array Numerisch indiziertes Array mit den Tageshöchstkursen (High-Preise) der Zeitreihe.
$low Pflicht array Numerisch indiziertes Array mit den Tagestiefstkursen (Low-Preise) der Zeitreihe.
$close Pflicht array Numerisch indiziertes Array mit den Tagesschlusskursen (Close-Preise) der Zeitreihe.
$timePeriod int 14 Anzahl der Perioden (Tage/Kerzen), über die der DX berechnet wird. Gültige Werte liegen zwischen 2 und 100000. Standardmäßig 14.

Rückgabewert

Typ
array|false
Beschreibung
Gibt ein numerisch indiziertes Array mit den berechneten DX-Werten zurück. Die Werte liegen im Bereich von 0 bis 100. Das Array ist kürzer als die Eingabe-Arrays (Lookback-Offset). Im Fehlerfall (z. B. ungültige Parameter oder zu kurze Eingabe-Arrays) wird false zurückgegeben.

Beispiele

Einfache DX-Berechnung mit Beispiel-Kursdaten

<?php
// Voraussetzung: PECL Trader-Erweiterung ist installiert
$high  = [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.98, 45.55, 46.10];
$low   = [43.61, 43.09, 43.15, 42.61, 43.33, 43.83, 44.10, 44.15, 42.61, 43.33, 43.83, 44.10, 44.15, 44.98, 44.55, 45.10];
$close = [44.00, 43.61, 44.09, 43.15, 44.15, 44.83, 44.74, 45.00, 43.61, 44.15, 44.33, 44.83, 45.10, 45.55, 44.98, 45.80];

$dx = trader_dx($high, $low, $close, 14);

if ($dx === false) {
    echo "Fehler bei der DX-Berechnung.\n";
} else {
    foreach ($dx as $index => $value) {
        printf("Index %d: DX = %.4f\n", $index, $value);
    }
}
Index 14: DX = 35.7143 Index 15: DX = 44.4444

Trendstärken-Klassifikation anhand des DX-Werts

<?php
// Kurs-Arrays (hier: vereinfachte Beispielwerte)
$high  = [10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29];
$low   = [ 9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28];
$close = [ 9.5,10.5,11.5,12.5,13.5,14.5,15.5,16.5,17.5,18.5,19.5,20.5,21.5,22.5,23.5,24.5,25.5,26.5,27.5,28.5];

$dx = trader_dx($high, $low, $close, 14);

if (is_array($dx)) {
    $latestDx = end($dx);
    echo "Aktueller DX-Wert: " . round($latestDx, 2) . "\n";

    if ($latestDx < 20) {
        echo "Trend: schwach oder Seitwärtsbewegung";
    } elseif ($latestDx < 40) {
        echo "Trend: moderat";
    } else {
        echo "Trend: stark";
    }
}

// Wichtig · Fallstricke

Voraussetzung: Die Funktion trader_dx() ist nur verfügbar, wenn die PECL-Erweiterung trader installiert und aktiviert ist (pecl install trader, dann extension=trader.so in der php.ini).

Lookback-Periode: Die Anzahl der berechnenbaren Ausgabewerte beträgt count($high) - timePeriod + 1 (minus interne Berechnungsoffsets). Der Index des Rückgabe-Arrays beginnt deshalb nicht bei 0, sondern entsprechend versetzt — dies sollte beim Zuordnen zu Datumsreihen beachtet werden.

Wertebereiche: Der DX-Wert liegt stets zwischen 0 und 100. Werte über 25 oder 30 werden in der klassischen Analyse als Beginn eines Trends interpretiert. Für eine geglättete Variante empfiehlt sich trader_adx().