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