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