Signatur
Beschreibung
Der Absolute Price Oscillator (APO) ist ein technischer Indikator aus der Finanzanalyse. Er berechnet die Differenz zwischen zwei gleitenden Durchschnitten (Moving Averages) unterschiedlicher Periodenlänge und gibt das Ergebnis als absolute Zahl zurück – im Gegensatz zum Percentage Price Oscillator (PPO), der relative Werte liefert.
Die Funktion ist Teil der TRADER-Erweiterung für PHP, die auf der TA-Lib (Technical Analysis Library) basiert. Sie eignet sich insbesondere für die Entwicklung von Trading-Algorithmen, Backtesting-Systemen und Finanzauswertungen in PHP.
Ein positiver APO-Wert zeigt an, dass der kurzfristige Durchschnitt über dem langfristigen liegt (bullisches Signal), ein negativer Wert signalisiert das Gegenteil. Die Wahl des Moving-Average-Typs (mAType) erlaubt es, verschiedene Glättungsverfahren wie SMA, EMA, WMA u. a. einzusetzen.
Zu beachten ist, dass der Rückgabe-Array weniger Elemente enthält als der Eingabe-Array, da für die ersten Perioden noch nicht genügend Datenpunkte für die Berechnung vorhanden sind (Lookback-Periode).
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $real Pflicht | array | Numerisches Array mit den Preisdaten (z. B. Schlusskurse) als float-Werte. Die Reihenfolge sollte chronologisch aufsteigend sein. |
|
| $fastPeriod | int | 12 | Anzahl der Perioden für den schnellen (kurzfristigen) gleitenden Durchschnitt. Muss kleiner als slowPeriod sein. Übliche Werte: 12 oder 10. |
| $slowPeriod | int | 26 | Anzahl der Perioden für den langsamen (langfristigen) gleitenden Durchschnitt. Muss größer als fastPeriod sein. Übliche Werte: 26 oder 20. |
| $mAType | int | 0 | Typ des gleitenden Durchschnitts. Mögliche Werte sind TRADER_MA_TYPE_*-Konstanten, z. B. TRADER_MA_TYPE_SMA (0), TRADER_MA_TYPE_EMA (1), TRADER_MA_TYPE_WMA (2) etc. |
Rückgabewert
slowPeriod - 1). Im Fehlerfall wird false zurückgegeben.Beispiele
Einfache APO-Berechnung mit Standardwerten
<?php
// Beispiel-Schlusskurse (z. B. aus einer Datenbank geladen)
$closePrices = [
44.34, 44.09, 44.15, 43.61, 44.33, 44.83, 45.10, 45.15,
43.61, 44.33, 44.83, 45.10, 45.15, 43.61, 44.33, 44.83,
45.10, 45.15, 43.61, 44.33, 44.83, 45.10, 45.15, 43.61,
44.33, 44.83, 45.10, 45.15, 43.61, 44.33, 44.83, 45.10
];
// APO mit Fast=12, Slow=26, EMA (mAType=1)
$apo = trader_apo($closePrices, 12, 26, TRADER_MA_TYPE_EMA);
if ($apo === false) {
echo 'Fehler bei der APO-Berechnung.' . PHP_EOL;
} else {
foreach ($apo as $index => $value) {
printf("Index %d: APO = %.4f\n", $index, $value);
}
}
APO mit SMA und Auswertung von Kauf-/Verkaufssignalen
<?php
// Preisdaten (vereinfacht)
$prices = array_map('floatval', [
100, 101, 102, 103, 100, 99, 98, 97, 96, 95,
94, 93, 94, 95, 96, 97, 98, 99, 100, 101,
102, 103, 104, 105, 106, 107, 108, 109, 110, 111
]);
// APO mit SMA (mAType=0), Fast=5, Slow=10
$apo = trader_apo($prices, 5, 10, TRADER_MA_TYPE_SMA);
if ($apo === false) {
die('Berechnung fehlgeschlagen.');
}
echo "APO-Signalauswertung:\n";
foreach ($apo as $index => $value) {
$signal = $value > 0 ? 'KAUFSIGNAL (bullisch)' : ($value < 0 ? 'VERKAUFSSIGNAL (bärisch)' : 'NEUTRAL');
printf("Bar %d: APO=%.4f => %s\n", $index, $value, $signal);
}
// Wichtig · Fallstricke
TRADER-Erweiterung: Die Funktion trader_apo() setzt voraus, dass die PHP-TRADER-Erweiterung installiert und aktiviert ist (pecl install trader). Ohne diese Erweiterung ist die Funktion nicht verfügbar.
Lookback-Periode: Die ersten slowPeriod - 1 Werte können nicht berechnet werden. Der Rückgabe-Array hat daher weniger Elemente als der Eingabe-Array. Die Array-Schlüssel im Rückgabewert beginnen beim ersten berechenbaren Index.
Fehlerbehandlung: Bei ungültigen Parametern (z. B. fastPeriod >= slowPeriod oder leeres Array) gibt die Funktion false zurück. Es empfiehlt sich, den Rückgabewert immer mit === false zu prüfen.