Start · Sprachen · PHP · Referenz · trader_stoch

trader_stoch

Funktion

Berechnet den stochastischen Oszillator (Stochastic Oscillator) aus High-, Low- und Close-Preisen und liefert <code>%K</code>- und <code>%D</code>-Linien zurück.

Kategorie: math

Signatur

trader_stoch(array $high, array $low, array $close, int $fastK_period = 5, int $slowK_period = 3, int $slowK_matype = 0, int $slowD_period = 3, int $slowD_matype = 0): array|false

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

Typ
array|false
Beschreibung
Bei Erfolg ein assoziatives Array mit den Schlüsseln 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);
    }
}
SlowK-Werte: [7] 57.6923 [8] 58.5714 [9] 75.0000 SlowD-Werte: [9] 63.7546

Ü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.