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