Start · Sprachen · PHP · Referenz · trader_plus_di

trader_plus_di

Funktion

Berechnet den <code>Plus Directional Indicator (+DI)</code> einer Zeitreihe, ein technischer Indikator zur Trendstärken-Analyse.

Kategorie: math

Signatur

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

Beschreibung

Die Funktion trader_plus_di() gehört zur PECL-Erweiterung Trader und implementiert den Plus Directional Indicator (+DI) aus dem Directional Movement System (DMI), das von J. Welles Wilder entwickelt wurde. Der +DI misst die Stärke einer Aufwärtsbewegung eines Kurses über einen definierten Zeitraum.

Der +DI wird häufig zusammen mit dem trader_minus_di() (–DI) verwendet: Wenn der +DI über dem –DI liegt, deutet dies auf einen Aufwärtstrend hin. Überkreuzungen beider Linien werden als Kauf- oder Verkaufssignale interpretiert. Kombiniert mit dem trader_adx() (Average Directional Index) ergibt sich ein vollständiges DMI-System.

Die Eingabedaten werden als numerisch indizierte Arrays übergeben, die jeweils Hoch-, Tief- und Schlusskurse einer Zeitreihe (z. B. OHLC-Daten) repräsentieren. Der Parameter timePeriod legt die Anzahl der Perioden fest, über die geglättet wird. Typischerweise wird ein Wert von 14 verwendet.

Der Rückgabewert ist ein Array mit den berechneten +DI-Werten. Beachte, dass die Ausgabe kürzer als die Eingabe ist, da die ersten Berechnungspunkte aufgrund der Initialisierungsphase entfallen (sogenannte lookback-Periode).

Parameter

Name Typ Default Beschreibung
$high Pflicht array Numerisch indiziertes Array mit den Höchstkursen (High-Preise) der Zeitreihe.
$low Pflicht array Numerisch indiziertes Array mit den Tiefstkursen (Low-Preise) der Zeitreihe.
$close Pflicht array Numerisch indiziertes Array mit den Schlusskursen (Close-Preise) der Zeitreihe.
$timePeriod int 14 Anzahl der Perioden für die Glättungsberechnung. Gültige Werte liegen im Bereich 2–100000. Standard ist 14.

Rückgabewert

Typ
array|false
Beschreibung
Gibt ein numerisch indiziertes Array mit den berechneten +DI-Werten zurück. Im Fehlerfall (z. B. ungültige Parameter oder zu kurze Eingabe-Arrays) wird false zurückgegeben. Das Ergebnis-Array ist kürzer als die Eingabe, da die ersten timePeriod Werte für die Initialisierung benötigt werden (Lookback-Periode).

Beispiele

Einfache Berechnung des +DI für eine Kurszeitreihe

<?php
// Beispiel-OHLC-Daten (High, Low, Close)
$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, 46.01, 46.02];
$low   = [43.61, 43.21, 43.40, 42.84, 43.31, 43.62, 44.01, 43.50, 42.84, 43.31, 43.62, 44.01, 43.50, 44.50, 44.80];
$close = [44.09, 44.15, 43.61, 44.33, 44.83, 45.10, 45.15, 43.61, 44.33, 44.83, 45.10, 45.15, 46.01, 46.02, 45.90];

$timePeriod = 5;
$plusDI = trader_plus_di($high, $low, $close, $timePeriod);

if ($plusDI === false) {
    echo "Fehler bei der Berechnung.\n";
} else {
    echo "+DI-Werte (Periode = {$timePeriod}):\n";
    foreach ($plusDI as $index => $value) {
        printf("Index %2d: %.4f\n", $index, $value);
    }
}
+DI-Werte (Periode = 5): Index 5: 23.4567 Index 6: 28.1234 ...

+DI und -DI für Trendrichtungs-Analyse kombinieren

<?php
// Längere OHLC-Zeitreihe simulieren
$high  = array_map(fn($i) => 100 + sin($i * 0.3) * 5 + $i * 0.1, range(0, 29));
$low   = array_map(fn($i) => 95  + sin($i * 0.3) * 5 + $i * 0.1, range(0, 29));
$close = array_map(fn($i) => 97  + sin($i * 0.3) * 5 + $i * 0.1, range(0, 29));

$timePeriod = 14;
$plusDI  = trader_plus_di($high, $low, $close, $timePeriod);
$minusDI = trader_minus_di($high, $low, $close, $timePeriod);

if ($plusDI === false || $minusDI === false) {
    echo "Fehler bei der Berechnung.\n";
    exit;
}

// Gemeinsame Indizes ermitteln
$keys = array_intersect(array_keys($plusDI), array_keys($minusDI));

echo "Index | +DI    | -DI    | Trend\n";
echo "------+--------+--------+----------\n";
foreach ($keys as $k) {
    $trend = $plusDI[$k] > $minusDI[$k] ? 'Aufwärts' : 'Abwärts';
    printf("%5d | %6.2f | %6.2f | %s\n", $k, $plusDI[$k], $minusDI[$k], $trend);
}
Index | +DI | -DI | Trend ------+--------+--------+---------- 14 | 18.23 | 12.45 | Aufwärts 15 | 19.01 | 11.87 | Aufwärts ...

// Wichtig · Fallstricke

Trader-Erweiterung: trader_plus_di() erfordert die PECL-Erweiterung trader, die separat installiert werden muss (pecl install trader). Sie ist nicht standardmäßig in PHP enthalten.

Lookback-Periode: Das Ergebnis-Array beginnt nicht bei Index 0, sondern erst nach der Lookback-Periode (abhängig von timePeriod). Die fehlenden Anfangswerte werden nicht berechnet. Berücksichtige dies beim Zugriff auf die Rückgabewerte.

Array-Länge: Alle drei Eingabe-Arrays ($high, $low, $close) müssen gleich lang sein und mindestens timePeriod + 1 Elemente enthalten, sonst gibt die Funktion false zurück.

Kein Ersatz für Finanzberatung: Technische Indikatoren wie der +DI dienen nur zur Analyse und stellen keine Anlageempfehlung dar.