Start · Sprachen · PHP · Referenz · trader_trange

trader_trange

Funktion

Berechnet die <code>True Range</code> (TR) für eine Zeitreihe von OHLC-Kursdaten.

Kategorie: math

Signatur

trader_trange(array $high, array $low, array $close): array|false

Beschreibung

Die Funktion trader_trange() gehört zur PHP-Erweiterung TRADER (Technical Analysis for Traders) und berechnet die True Range (TR) – einen Indikator aus der technischen Analyse, der die tatsächliche Handelsspanne einer Periode misst.

Die True Range ist definiert als das Maximum der drei folgenden Werte:

  • Aktuelles Tageshoch minus aktuelles Tagestief
  • Absolutwert: Aktuelles Tageshoch minus vorheriger Schlusskurs
  • Absolutwert: Aktuelles Tagestief minus vorheriger Schlusskurs
Sie berücksichtigt damit auch Kurslücken (Gaps) zwischen zwei Handelssitzungen, was sie aussagekräftiger als die einfache Differenz von Hoch und Tief macht.

Die True Range ist die Grundlage vieler weiterer Volatilitätsindikatoren, insbesondere des Average True Range (ATR). Sie wird häufig eingesetzt, um Marktvolatilität zu messen, Stop-Loss-Abstände zu berechnen oder Ausbrüche zu identifizieren.

Die Eingabearrays $high, $low und $close müssen dieselbe Länge haben und numerisch indiziert sein. Das Ergebnis-Array enthält weniger Werte als die Eingabe, da der erste Datenpunkt keinen Vorgänger-Schlusskurs hat.

Parameter

Name Typ Default Beschreibung
$high Pflicht array Array der Tageshöchstkurse (High-Preise), numerisch indiziert, chronologisch geordnet.
$low Pflicht array Array der Tagestiefkurse (Low-Preise), numerisch indiziert, chronologisch geordnet.
$close Pflicht array Array der Tagesschlusskurse (Close-Preise), numerisch indiziert, chronologisch geordnet.

Rückgabewert

Typ
array|false
Beschreibung
Gibt ein assoziatives Array mit dem Schlüssel 'real' zurück, das die berechneten True-Range-Werte enthält. Das Array ist kürzer als die Eingabearrays, da der erste Wert nicht berechnet werden kann. Bei einem Fehler (z. B. unterschiedlich lange Eingabearrays oder fehlende TRADER-Erweiterung) wird false zurückgegeben.

Beispiele

Einfache True-Range-Berechnung

<?php
// Beispiel-OHLC-Daten (5 Handelstage)
$high  = [102.5, 104.0, 103.8, 106.2, 105.5];
$low   = [100.0, 101.5, 101.0, 103.5, 103.0];
$close = [101.5, 103.0, 102.5, 105.0, 104.2];

$result = trader_trange($high, $low, $close);

if ($result === false) {
    echo 'Fehler bei der Berechnung der True Range.' . PHP_EOL;
} else {
    echo 'True Range Werte:' . PHP_EOL;
    foreach ($result['real'] as $index => $value) {
        printf('Tag %d: %.4f' . PHP_EOL, $index + 1, $value);
    }
}
True Range Werte: Tag 1: 2.5000 Tag 2: 2.5000 Tag 3: 2.8000 Tag 4: 3.5000

True Range als Grundlage für Stop-Loss-Berechnung

<?php
// Kursdaten aus einer Datenbank oder API (hier vereinfacht)
$high  = [150.0, 152.5, 151.0, 154.0, 153.5, 156.0];
$low   = [148.0, 149.5, 149.0, 151.5, 151.0, 153.0];
$close = [149.5, 151.5, 150.0, 153.0, 152.5, 155.0];

$tr = trader_trange($high, $low, $close);

if ($tr !== false) {
    $trValues = $tr['real'];
    $lastTR   = end($trValues);
    $lastClose = end($close);

    // Stop-Loss = letzter Schlusskurs minus 2 × True Range (Beispiel-Strategie)
    $multiplier = 2.0;
    $stopLoss = $lastClose - ($multiplier * $lastTR);

    printf('Letzter Schlusskurs: %.2f' . PHP_EOL, $lastClose);
    printf('Letzte True Range:   %.4f' . PHP_EOL, $lastTR);
    printf('Stop-Loss (2×TR):    %.2f' . PHP_EOL, $stopLoss);
} else {
    echo 'Berechnung fehlgeschlagen.' . PHP_EOL;
}
Letzter Schlusskurs: 155.00 Letzte True Range: 3.0000 Stop-Loss (2×TR): 149.00

// Wichtig · Fallstricke

Voraussetzung: Die TRADER-Erweiterung muss in PHP installiert und aktiviert sein (pecl install trader). Sie ist nicht standardmäßig in PHP enthalten. Prüfen Sie die Verfügbarkeit mit extension_loaded('trader').

Array-Länge: Das Ergebnis-Array enthält genau n - 1 Werte, wenn die Eingabe n Elemente hat, da für den allerersten Datenpunkt kein Vorgänger-Schlusskurs existiert. Beachten Sie die veränderten Array-Indizes beim Zugriff auf die Ergebnisse.

Konsistenz: Die drei Eingabearrays $high, $low und $close müssen stets dieselbe Anzahl an Elementen haben, sonst schlägt die Berechnung fehl.