Start · Sprachen · PHP · Referenz · trader_ad

trader_ad

Funktion

Berechnet die Chaikin Accumulation/Distribution-Linie (A/D-Linie) aus OHLCV-Kursdaten.

Kategorie: math

Signatur

trader_ad(array $high, array $low, array $close, array $volume): array|false

Beschreibung

Die Funktion trader_ad() gehört zur TRADER-Erweiterung (PHP-Wrapper für die TA-Lib) und implementiert den Chaikin Accumulation/Distribution Indicator. Dieser Indikator misst den kumulierten Geldfluss in ein Wertpapier hinein oder heraus, indem er den Schlusskurs in Relation zum Hoch-Tief-Bereich einer Periode gewichtet und mit dem Volumen multipliziert.

Die A/D-Linie wird häufig in der technischen Analyse verwendet, um Trendstärke zu bestätigen oder Divergenzen zwischen Kursbewegung und Geldfluss aufzudecken. Steigt der Kurs, während die A/D-Linie fällt, kann das auf eine bevorstehende Trendwende hindeuten (bearish divergence) – und umgekehrt.

Die Berechnung basiert auf dem Money Flow Multiplier ((Close - Low) - (High - Close)) / (High - Low), multipliziert mit dem Volumen der jeweiligen Periode. Die so erhaltenen Werte werden kumuliert, sodass die A/D-Linie einen fortlaufenden Gesamtwert darstellt. Da kein Lookback-Zeitraum benötigt wird, liefert die Funktion für jeden Eingabewert (außer bei ungültigem Hoch-Tief-Bereich) einen Ausgabewert.

Die Funktion eignet sich besonders für den Einsatz in Handelssystemen, Backtesting-Frameworks oder Finanzanalyse-Anwendungen, die auf PHP basieren und Kursdaten aus Datenbanken oder APIs verarbeiten.

Parameter

Name Typ Default Beschreibung
$high Pflicht array Numerisch indiziertes Array mit den Tageshöchstkursen (High) der Perioden als Float-Werte.
$low Pflicht array Numerisch indiziertes Array mit den Tagestiefkursen (Low) der Perioden als Float-Werte.
$close Pflicht array Numerisch indiziertes Array mit den Schlusskursen (Close) der Perioden als Float-Werte.
$volume Pflicht array Numerisch indiziertes Array mit den Handelsvolumina der Perioden als Float- oder Integer-Werte.

Rückgabewert

Typ
array|false
Beschreibung
Gibt ein numerisch indiziertes Array mit den berechneten A/D-Linienwerten als float zurück. Bei einem Fehler (z. B. unterschiedlich lange Eingabe-Arrays oder fehlerhafter TA-Lib-Aufruf) wird false zurückgegeben.

Beispiele

Einfache Berechnung der Chaikin A/D-Linie

<?php
// Beispielhafte OHLCV-Daten für 5 Tage
$high   = [44.34, 44.09, 44.15, 43.61, 44.33];
$low    = [43.80, 43.55, 43.95, 43.31, 43.80];
$close  = [44.09, 43.61, 44.30, 43.52, 44.10];
$volume = [92000, 128000, 73000, 95000, 116000];

$result = trader_ad($high, $low, $close, $volume);

if ($result === false) {
    echo "Fehler bei der Berechnung.";
} else {
    foreach ($result as $index => $value) {
        printf("Tag %d: A/D = %.4f\n", $index + 1, $value);
    }
}
Tag 1: A/D = -13570.4348 Tag 2: A/D = -89015.5556 Tag 3: A/D = -12456.2319 Tag 4: A/D = -87400.8696 Tag 5: A/D = -26474.8276

A/D-Linie aus Datenbankdaten berechnen und Divergenz prüfen

<?php
// Simulierte Kursdaten aus einer Datenbank (z. B. 10 Perioden)
$data = [
    ['h' => 105.0, 'l' => 102.0, 'c' => 104.5, 'v' => 500000],
    ['h' => 106.5, 'l' => 103.5, 'c' => 105.0, 'v' => 520000],
    ['h' => 107.0, 'l' => 104.0, 'c' => 104.0, 'v' => 480000],
    ['h' => 108.0, 'l' => 104.5, 'c' => 107.5, 'v' => 610000],
    ['h' => 109.0, 'l' => 106.0, 'c' => 106.5, 'v' => 590000],
];

$high   = array_column($data, 'h');
$low    = array_column($data, 'l');
$close  = array_column($data, 'c');
$volume = array_column($data, 'v');

$ad = trader_ad($high, $low, $close, $volume);

if ($ad !== false) {
    $last  = end($ad);
    $first = reset($ad);
    $trend = ($last > $first) ? 'akkumulierend (bullish)' : 'distributierend (bearish)';
    echo "A/D-Trend: $trend\n";
    echo "Letzter A/D-Wert: " . round($last, 2) . "\n";
}
A/D-Trend: akkumulierend (bullish) Letzter A/D-Wert: 633333.33

// Wichtig · Fallstricke

Voraussetzung: Die PHP-TRADER-Erweiterung muss installiert und aktiviert sein (pecl install trader, anschließend extension=trader.so in der php.ini). Ohne diese Erweiterung ist trader_ad() nicht verfügbar.

Eingabe-Arrays: Alle vier Arrays müssen dieselbe Länge haben und numerisch indiziert sein. Andernfalls gibt die Funktion false zurück.

Hoch gleich Tief: Wenn High == Low für eine Periode gilt, ist der Nenner des Money Flow Multiplier gleich Null. TA-Lib behandelt diesen Fall intern (Ergebnis ist 0 für diese Periode), dennoch sollten solche Datenpunkte vor der Übergabe geprüft werden.

Kein Lookback: Im Gegensatz zu vielen anderen TA-Lib-Indikatoren hat trader_ad() keinen Lookback-Zeitraum, d. h. das Ergebnis-Array hat dieselbe Länge wie die Eingabe-Arrays.