Signatur
Beschreibung
Der Ultimate Oscillator ist ein technischer Indikator aus der Finanzanalyse, der 1976 von Larry Williams entwickelt wurde. Er kombiniert die Preisentwicklung über drei verschiedene Zeiträume (kurz-, mittel- und langfristig), um kurzfristige Überkauft- und Überverkauft-Situationen zuverlässiger zu erkennen als einfache Oszillatoren, die nur einen einzigen Zeitraum verwenden.
Die Funktion gehört zur PECL-Erweiterung trader, die auf der TA-Lib (Technical Analysis Library) basiert. Sie erwartet Arrays mit Hoch- ($high), Tief- ($low) und Schlusskursen ($close) und gibt ein Array mit den berechneten Oszillatorwerten zurück. Der Rückgabewert liegt typischerweise im Bereich von 0 bis 100, wobei Werte über 70 als überkauft und Werte unter 30 als überverkauft gelten.
Die drei Zeitperioden fließen gewichtet in die Berechnung ein: Die kurzfristigste Periode ($timePeriod1) erhält das größte Gewicht (4), die mittlere ($timePeriod2) das mittlere Gewicht (2) und die langfristigste ($timePeriod3) das geringste Gewicht (1). Dadurch reagiert der Indikator sensibel auf kurzfristige Bewegungen, bleibt aber durch die längeren Zeiträume stabil.
Typische Einsatzgebiete sind die Identifikation von Divergenzen zwischen Preis und Indikator als Handelssignale sowie die Bestätigung von Trendwenden. trader_ultosc eignet sich für alle handelbaren Instrumente wie Aktien, Devisen oder Kryptowährungen.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $high Pflicht | array | Array mit den Höchstkursen (Hochpreisen) jeder Periode als numerische Werte. | |
| $low Pflicht | array | Array mit den Tiefstkursen (Tiefpreisen) jeder Periode als numerische Werte. | |
| $close Pflicht | array | Array mit den Schlusskursen jeder Periode als numerische Werte. | |
| $timePeriod1 | int | 7 | Kurzfristige Zeitperiode. Erhält in der Gewichtung den Faktor 4. Muss zwischen 2 und 100000 liegen. |
| $timePeriod2 | int | 14 | Mittelfristige Zeitperiode. Erhält in der Gewichtung den Faktor 2. Muss zwischen 2 und 100000 liegen. |
| $timePeriod3 | int | 28 | Langfristige Zeitperiode. Erhält in der Gewichtung den Faktor 1. Muss zwischen 2 und 100000 liegen. |
Rückgabewert
false zurückgegeben.Beispiele
Grundlegende Verwendung mit OHLC-Daten
<?php
// Beispiel-Kursdaten (z.B. Tageskurse einer Aktie)
$high = [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, 45.34, 45.50];
$low = [43.61, 43.35, 43.38, 43.31, 43.60, 44.32, 44.80, 44.11, 43.31, 43.60, 44.32, 44.80, 44.11, 43.31, 43.60, 44.32, 44.80, 44.11, 43.31, 43.60, 44.32, 44.80, 44.11, 43.31, 43.60, 44.32, 44.80, 44.11, 44.80, 45.00];
$close = [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, 45.34, 45.50, 45.62];
// Ultimate Oscillator mit Standardparametern berechnen
$result = trader_ultosc($high, $low, $close);
if ($result !== false) {
echo "Ultimate Oscillator Werte:" . PHP_EOL;
foreach ($result as $index => $value) {
printf("Index %d: %.4f\n", $index, $value);
}
} else {
echo "Fehler bei der Berechnung." . PHP_EOL;
}
Handelssignal-Erkennung mit angepassten Perioden
<?php
// Kursdaten (vereinfacht — in der Praxis aus einer Datenbank oder API)
$high = array_fill(0, 50, 0);
$low = array_fill(0, 50, 0);
$close = array_fill(0, 50, 0);
// Zufällige, aber plausible Kursdaten simulieren
srand(42);
for ($i = 0; $i < 50; $i++) {
$base = 100 + $i * 0.5 + (rand(-200, 200) / 100);
$high[$i] = $base + rand(10, 50) / 100;
$low[$i] = $base - rand(10, 50) / 100;
$close[$i] = $base + (rand(-20, 20) / 100);
}
// Kürzere Zeitperioden für schnellere Signale
$result = trader_ultosc($high, $low, $close, 4, 8, 16);
if ($result !== false) {
$lastValue = end($result);
echo "Letzter UO-Wert: " . round($lastValue, 2) . PHP_EOL;
if ($lastValue > 70) {
echo "Signal: ÜBERKAUFT — Mögliche Verkaufsgelegenheit" . PHP_EOL;
} elseif ($lastValue < 30) {
echo "Signal: ÜBERVERKAUFT — Mögliche Kaufgelegenheit" . PHP_EOL;
} else {
echo "Signal: Neutral (Bereich: " . round($lastValue, 2) . ")" . PHP_EOL;
}
} else {
echo "Berechnung fehlgeschlagen." . PHP_EOL;
}
// Wichtig · Fallstricke
Voraussetzung: Die trader-Erweiterung muss über PECL installiert sein (pecl install trader). Sie ist nicht im PHP-Kern enthalten und muss ggf. in der php.ini aktiviert werden (extension=trader.so).
Lookback-Periode: Der Rückgabe-Array enthält weniger Elemente als die Eingabe-Arrays, da für die Berechnung mindestens timePeriod3 Datenpunkte benötigt werden. Die Indizes im Ergebnisarray entsprechen den originalen Eingabe-Indizes.
Parameterreihenfolge: Die drei Zeitperioden müssen nicht zwingend aufsteigend sortiert sein, es empfiehlt sich jedoch, timePeriod1 < timePeriod2 < timePeriod3 zu wählen, um das klassische Verhalten des Indikators beizubehalten.
Nicht für Echtzeit-Handelsentscheidungen: Wie alle technischen Indikatoren liefert der Ultimate Oscillator keine garantierten Signale. Er sollte stets in Kombination mit weiteren Analysemethoden eingesetzt werden.