Signatur
Beschreibung
Der stochastische Oszillator ist ein Momentum-Indikator aus der technischen Analyse, der die aktuelle Schlusskurslage relativ zur Hoch-/Tief-Spanne eines definierten Zeitraums misst. Er bewegt sich zwischen 0 und 100 und zeigt überkaufte (> 80) bzw. überverkaufte (< 20) Marktbereiche an.
trader_stoch ist Teil der TRADER-Erweiterung (basierend auf TA-Lib) und berechnet sowohl die schnelle %K-Linie als auch die geglättete %D-Signallinie. Die Parameter slowK_matype und slowD_matype steuern den verwendeten Glättungstyp (z. B. SMA = 0, EMA = 1, WMA = 2 usw.).
Typische Einsatzgebiete sind das Erkennen von Trendumkehrpunkten, Divergenzen zwischen Kurs und Indikator sowie Kreuzungssignale zwischen %K und %D. Die Funktion eignet sich besonders gut für den Einsatz in automatisierten Handelssystemen oder Kursauswertungsskripten.
Der Rückgabewert ist ein Array mit zwei Schlüsseln: SlowK und SlowD, jeweils als indexiertes Array der berechneten Werte. Die ersten Elemente können aufgrund der benötigten Lookback-Periode fehlen (NaN-Einträge werden weggelassen).
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $high Pflicht | array | Array der Höchstkurse (High-Werte) als numerisch indexiertes Float-Array. | |
| $low Pflicht | array | Array der Tiefstkurse (Low-Werte) als numerisch indexiertes Float-Array. | |
| $close Pflicht | array | Array der Schlusskurse (Close-Werte) als numerisch indexiertes Float-Array. | |
| $fastK_period | int | 5 | Anzahl der Perioden für die Berechnung der schnellen %K-Linie. Muss mindestens 1 sein. |
| $slowK_period | int | 3 | Glättungsperiode für die langsame %K-Linie (Slow K). Bestimmt, wie stark FastK geglättet wird. |
| $slowK_matype | int | 0 | Glättungstyp für SlowK: 0 = SMA, 1 = EMA, 2 = WMA, 3 = DEMA, 4 = TEMA usw. Entspricht den TRADER_MA_TYPE_*-Konstanten. |
| $slowD_period | int | 3 | Glättungsperiode für die Signallinie %D (Slow D). |
| $slowD_matype | int | 0 | Glättungstyp für SlowD: 0 = SMA, 1 = EMA, 2 = WMA usw. Entspricht den TRADER_MA_TYPE_*-Konstanten. |
Rückgabewert
SlowK und SlowD, jeweils als numerisch indexiertes Array mit den berechneten Werten. Bei einem Fehler (z. B. ungültige Parameter oder zu kurze Eingabe-Arrays) wird false zurückgegeben.Beispiele
Stochastischen Oszillator für Kursdaten berechnen
<?php
// Beispiel-Kursdaten (High, Low, Close)
$high = [44.34, 44.09, 44.15, 43.61, 44.33, 44.83, 45.10, 45.15, 43.61, 44.33];
$low = [43.61, 43.89, 43.72, 43.46, 43.83, 44.32, 44.83, 44.15, 43.46, 43.83];
$close = [44.09, 44.15, 43.61, 44.33, 44.83, 45.10, 45.15, 43.61, 44.33, 44.83];
$result = trader_stoch($high, $low, $close, 5, 3, 0, 3, 0);
if ($result === false) {
echo "Fehler bei der Berechnung.\n";
} else {
echo "SlowK-Werte:\n";
foreach ($result['SlowK'] as $index => $value) {
printf(" [%d] %.4f\n", $index, $value);
}
echo "SlowD-Werte:\n";
foreach ($result['SlowD'] as $index => $value) {
printf(" [%d] %.4f\n", $index, $value);
}
}
Überkaufte/überverkaufte Bereiche erkennen
<?php
// Längere Zeitreihe simulieren
$high = array_map(fn($i) => 100 + sin($i * 0.3) * 10 + 2, range(0, 29));
$low = array_map(fn($i) => 100 + sin($i * 0.3) * 10 - 2, range(0, 29));
$close = array_map(fn($i) => 100 + sin($i * 0.3) * 10, range(0, 29));
$result = trader_stoch($high, $low, $close);
if ($result) {
foreach ($result['SlowK'] as $i => $k) {
$d = $result['SlowD'][$i] ?? null;
$signal = '';
if ($k > 80) {
$signal = '>>> ÜBERKAUFT';
} elseif ($k < 20) {
$signal = '<<< ÜBERVERKAUFT';
}
printf("Bar %2d: SlowK=%.2f SlowD=%.2f %s\n", $i, $k, $d ?? 0, $signal);
}
}
// Wichtig · Fallstricke
Voraussetzung: Die PHP-Erweiterung trader muss installiert und in der php.ini aktiviert sein (extension=trader). Sie basiert auf der quelloffenen Bibliothek TA-Lib.
Lookback-Periode: Aufgrund der benötigten Vorperioden enthält das Ergebnis-Array weniger Einträge als die Eingabe-Arrays. Die ersten Indizes ohne gültige Berechnung werden übersprungen. Verwende die Originalindizes, um Ergebnisse korrekt zeitlich zuzuordnen.
Glättungstypen: Der Typ 0 entspricht einem einfachen gleitenden Durchschnitt (SMA). Höhere Werte für slowK_matype und slowD_matype stehen für komplexere Verfahren – die verfügbaren Konstanten (TRADER_MA_TYPE_SMA, TRADER_MA_TYPE_EMA usw.) sollten bevorzugt gegenüber nackten Integer-Werten verwendet werden.