Signatur
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
+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 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);
}
// 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.