Start · Sprachen · PHP · Referenz · trader_atr

trader_atr

Funktion

Berechnet die <code>Average True Range</code> (ATR) – ein Maß für die Marktvolatilität – auf Basis von Hoch-, Tief- und Schlusskursdaten.

Kategorie: math

Signatur

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

Beschreibung

Die Funktion trader_atr gehört zur PECL-Erweiterung Trader, die technische Analysefunktionen aus der TA-Lib in PHP verfügbar macht. Die Average True Range (ATR) ist ein von J. Welles Wilder entwickelter Indikator, der die durchschnittliche Spanne (Volatilität) eines Marktes über einen definierten Zeitraum misst.

Die True Range eines einzelnen Zeitraums ergibt sich als Maximum aus drei Werten: der Differenz zwischen Hoch und Tief, dem absoluten Abstand zwischen dem vorherigen Schlusskurs und dem aktuellen Hoch sowie dem absoluten Abstand zwischen dem vorherigen Schlusskurs und dem aktuellen Tief. Über den $timePeriod wird daraus ein gleitender Durchschnitt gebildet.

Die ATR wird häufig im Risikomanagement eingesetzt – etwa zur Bestimmung von Stop-Loss-Niveaus oder zur Einschätzung, ob ein Markt gerade in einer ruhigen oder turbulenten Phase ist. Ein steigender ATR-Wert signalisiert zunehmende Volatilität, ein sinkender ATR-Wert zeigt Beruhigung des Marktes an.

Die Rückgabe ist ein assoziatives Array, dessen Schlüssel den Indizes der Eingabedaten entsprechen. Die ersten Einträge fehlen, da für die Berechnung eine Mindestanzahl an Datenpunkten benötigt wird (abhängig von $timePeriod).

Parameter

Name Typ Default Beschreibung
$high Pflicht array Array der Hochkurse (Tageshöchstpreise). Muss die gleiche Länge wie $low und $close haben.
$low Pflicht array Array der Tiefstkurse (Tagestiefstpreise). Muss die gleiche Länge wie $high und $close haben.
$close Pflicht array Array der Schlusskurse. Muss die gleiche Länge wie $high und $low haben.
$timePeriod int 14 Anzahl der Perioden für die Durchschnittsberechnung. Üblich sind Werte zwischen 7 und 21. Muss zwischen 2 und 100000 liegen.

Rückgabewert

Typ
array|false
Beschreibung
Gibt ein Array mit den berechneten ATR-Werten zurück. Die Schlüssel entsprechen den Indizes der Eingabe-Arrays (versetzt um den Lookback-Wert). Bei einem Fehler (z. B. ungültige Parameter oder nicht geladene Trader-Erweiterung) wird false zurückgegeben.

Beispiele

Einfache ATR-Berechnung für 20 Handelstage

<?php
// Beispiel-Kursdaten (Hoch, Tief, Schluss) für 20 Tage
$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, 43.61, 44.33, 44.83, 45.10, 45.15, 45.20, 45.50];
$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, 42.61, 43.33, 43.83, 44.10, 44.15, 44.20, 44.50];
$close = [43.91, 43.59, 43.58, 43.61, 44.02, 44.33, 44.83, 45.10, 43.15, 43.80,
           44.00, 44.90, 45.00, 43.00, 44.10, 44.50, 45.00, 45.10, 45.15, 45.40];

// ATR mit Standardperiode 14
$atr = trader_atr($high, $low, $close, 14);

if ($atr === false) {
    echo 'Fehler bei der ATR-Berechnung.' . PHP_EOL;
} else {
    foreach ($atr as $index => $value) {
        printf("Tag %2d: ATR = %.4f\n", $index, $value);
    }
}
Tag 14: ATR = 0.9571 Tag 15: ATR = 0.9388 Tag 16: ATR = 0.9218 Tag 17: ATR = 0.9059 Tag 18: ATR = 0.8912 Tag 19: ATR = 0.8776

ATR zur Stop-Loss-Bestimmung verwenden

<?php
// Kursdaten eines Instruments
$high  = [102.5, 103.0, 104.5, 103.8, 105.0, 106.0, 105.5, 107.0, 106.5, 108.0,
           107.5, 109.0, 108.5, 110.0, 109.5, 111.0, 110.5, 112.0, 111.5, 113.0];
$low   = [100.5, 101.0, 102.5, 101.8, 103.0, 104.0, 103.5, 105.0, 104.5, 106.0,
           105.5, 107.0, 106.5, 108.0, 107.5, 109.0, 108.5, 110.0, 109.5, 111.0];
$close = [101.5, 102.5, 103.5, 102.5, 104.0, 105.5, 104.5, 106.5, 105.5, 107.5,
           106.5, 108.5, 107.5, 109.5, 108.5, 110.5, 109.5, 111.5, 110.5, 112.5];

$atr = trader_atr($high, $low, $close, 14);

if ($atr !== false) {
    // Letzten ATR-Wert für Stop-Loss-Berechnung verwenden
    $lastAtr   = end($atr);
    $lastClose = end($close);

    // Typisches Stop-Loss: 2 × ATR unterhalb des Schlusskurses
    $stopLoss  = $lastClose - (2 * $lastAtr);

    printf("Letzter Schlusskurs : %.2f\n", $lastClose);
    printf("Aktueller ATR (14)  : %.4f\n", $lastAtr);
    printf("Stop-Loss (2×ATR)   : %.2f\n", $stopLoss);
}
Letzter Schlusskurs : 112.50 Aktueller ATR (14) : 1.9286 Stop-Loss (2×ATR) : 108.64

// Wichtig · Fallstricke

Voraussetzung: Die Funktion ist nur verfügbar, wenn die PECL-Erweiterung trader installiert und in der php.ini mit extension=trader aktiviert ist. Unter Linux kann sie über pecl install trader installiert werden.

Lookback-Periode: Die ersten $timePeriod Einträge des Ergebnis-Arrays fehlen, da für die initiale ATR-Berechnung mindestens $timePeriod Datenpunkte benötigt werden. Der erste gültige Index im Rückgabe-Array ist daher $timePeriod - 1.

Eingabedaten: Alle drei Arrays ($high, $low, $close) müssen dieselbe Länge haben und numerische Werte enthalten. Nicht-numerische oder fehlende Werte können zu false als Rückgabe oder falschen Ergebnissen führen.