Start · Sprachen · PHP · Referenz · trader_adosc

trader_adosc

Funktion

Berechnet den Chaikin A/D Oszillator (Accumulation/Distribution Oscillator) auf Basis von OHLCV-Daten.

Kategorie: math

Signatur

trader_adosc(array $high, array $low, array $close, array $volume, int $fastPeriod = 3, int $slowPeriod = 10): array|false

Beschreibung

Die Funktion trader_adosc() gehört zur TRADER-Erweiterung (TA-Lib) für PHP und berechnet den Chaikin Accumulation/Distribution Oscillator. Dieser Indikator misst die Dynamik des Accumulation/Distribution-Index (ADL), indem er die Differenz zweier exponentieller gleitender Durchschnitte (EMA) des ADL bildet – standardmäßig über eine kurze Periode (3 Tage) und eine lange Periode (10 Tage).

Der Chaikin A/D Oszillator wird in der technischen Analyse genutzt, um Kauf- oder Verkaufsdruck in einem Markt zu identifizieren. Ein positiver Wert deutet auf einen Akkumulationsdruck (Kaufdruck) hin, ein negativer Wert auf Distributionsdruck (Verkaufsdruck). Kreuzt der Oszillator die Nulllinie, kann dies als Trendwechselsignal interpretiert werden.

Die Eingabearrays müssen alle die gleiche Länge haben und chronologisch geordnete OHLCV-Daten (Hoch, Tief, Schluss, Volumen) enthalten. Der Rückgabe-Array enthält weniger Elemente als die Eingabe, da für die Berechnung der langsamsten EMA-Periode Vorlaufdaten benötigt werden.

Diese Funktion setzt voraus, dass die PHP-Erweiterung trader installiert und aktiviert ist, was über PECL möglich ist.

Parameter

Name Typ Default Beschreibung
$high Pflicht array Numerisches Array mit den Tageshöchstkursen (High-Werten) in chronologischer Reihenfolge.
$low Pflicht array Numerisches Array mit den Tagestiefstkursen (Low-Werten) in chronologischer Reihenfolge.
$close Pflicht array Numerisches Array mit den Schlusskursen (Close-Werten) in chronologischer Reihenfolge.
$volume Pflicht array Numerisches Array mit den Handelvolumina je Periode in chronologischer Reihenfolge.
$fastPeriod int 3 Anzahl der Perioden für die schnelle EMA (kurzfristiger gleitender Durchschnitt). Muss kleiner als slowPeriod sein. Gültige Werte: 2–100000.
$slowPeriod int 10 Anzahl der Perioden für die langsame EMA (langfristiger gleitender Durchschnitt). Muss größer als fastPeriod sein. Gültige Werte: 2–100000.

Rückgabewert

Typ
array|false
Beschreibung
Gibt ein numerisches Array mit den berechneten A/D-Oszillator-Werten zurück. Das Array ist kürzer als die Eingabearrays, da für die Berechnungsvorlaufzeit (lookback) der langsamsten Periode Einträge entfallen. Im Fehlerfall (z. B. ungültige Parameter oder zu kurze Eingabedaten) wird false zurückgegeben.

Beispiele

Einfache Berechnung des Chaikin A/D Oszillators

<?php
// Beispiel-OHLCV-Daten (10 Perioden)
$high   = [10.5, 11.0, 11.5, 12.0, 11.8, 12.5, 13.0, 12.8, 13.5, 14.0];
$low    = [ 9.5, 10.0, 10.5, 11.0, 10.8, 11.5, 12.0, 11.8, 12.5, 13.0];
$close  = [10.0, 10.8, 11.2, 11.9, 11.0, 12.2, 12.8, 12.0, 13.2, 13.8];
$volume = [1000, 1200,  900, 1100, 1300,  800, 1500, 1000, 1200,  950];

$result = trader_adosc($high, $low, $close, $volume, 3, 10);

if ($result === false) {
    echo "Fehler bei der Berechnung.";
} else {
    echo "Chaikin A/D Oszillator Werte:" . PHP_EOL;
    foreach ($result as $index => $value) {
        printf("Index %d: %.4f\n", $index, $value);
    }
}
Chaikin A/D Oszillator Werte: Index 9: ...

Signalerkennung: Nulllinien-Crossover

<?php
// Längere Zeitreihe für sinnvolle Signale
$high   = [10,11,12,13,12,11,10, 9,10,11,12,13,14,15,14,13,12,11,12,13];
$low    = [ 9,10,11,12,11,10, 9, 8, 9,10,11,12,13,14,13,12,11,10,11,12];
$close  = [ 9.5,10.5,11.5,12.5,11.5,10.5,9.5,8.5,9.5,10.5,11.5,12.5,13.5,14.5,13.5,12.5,11.5,10.5,11.5,12.5];
$volume = [500,600,700,800,700,600,500,400,500,600,700,800,900,1000,900,800,700,600,700,800];

$adosc = trader_adosc($high, $low, $close, $volume, 3, 10);

if ($adosc === false) {
    die("Berechnung fehlgeschlagen.");
}

$values = array_values($adosc);
for ($i = 1; $i < count($values); $i++) {
    $prev = $values[$i - 1];
    $curr = $values[$i];
    if ($prev < 0 && $curr >= 0) {
        echo "Kaufsignal bei Index " . $i . ": Oszillator kreuzt Nulllinie von unten." . PHP_EOL;
    } elseif ($prev > 0 && $curr <= 0) {
        echo "Verkaufssignal bei Index " . $i . ": Oszillator kreuzt Nulllinie von oben." . PHP_EOL;
    }
}

// Wichtig · Fallstricke

Vorlaufzeit (Lookback): Die Ausgabe enthält weniger Werte als die Eingabe. Die Anzahl der übersprungenen Anfangswerte entspricht dem Lookback, der von slowPeriod - 1 abhängt. Mit den Standardwerten (3, 10) werden daher die ersten 9 Eingabewerte nicht in der Ausgabe berücksichtigt.

Voraussetzung: Die PHP-Erweiterung trader muss über PECL installiert sein (pecl install trader) und in der php.ini als extension=trader aktiviert werden.

Array-Indizierung: Die zurückgegebenen Array-Schlüssel entsprechen den Original-Indizes aus den Eingabearrays, nicht zwingend 0-basiert. Bei der Iteration sollte array_values() verwendet oder auf die Schlüssel geachtet werden.

Datenqualität: Ungültige Werte (z. B. high < low) können zu falschen Ergebnissen führen. Die Eingabedaten sollten vor der Verwendung validiert werden.