Start · Sprachen · PHP · Referenz · trader_stochrsi

trader_stochrsi

Funktion

Berechnet den Stochastic RSI (StochRSI), einen technischen Indikator, der den RSI in einen stochastischen Oszillator umwandelt.

Kategorie: math

Signatur

trader_stochrsi(array $real, int $timePeriod = 14, int $fastK_Period = 5, int $fastD_Period = 3, int $fastD_MAType = TRADER_MA_TYPE_SMA): array|false

Beschreibung

Der Stochastic RSI (StochRSI) ist ein technischer Indikator aus der Technischen Analyse, der vom Quant-Analysten Tushar Chande entwickelt wurde. Er kombiniert zwei Indikatoren: den Relative Strength Index (RSI) und den Stochastischen Oszillator. Dabei wird der RSI berechnet und anschließend der stochastische Algorithmus auf diesen RSI-Wert angewendet – statt direkt auf Preisdaten. Das Ergebnis ist ein Indikator, der sensibler auf Überverkauft- und Überkauft-Signale reagiert als der klassische RSI allein.

Die Funktion gibt zwei Arrays zurück: fastK (die rohe stochastische Linie) und fastD (die geglättete Signallinie, berechnet als gleitender Durchschnitt von fastK). Beide Werte liegen im Bereich von 0 bis 100. Werte unter 20 deuten typischerweise auf eine überverkaufte Situation hin, Werte über 80 auf eine überkaufte.

Die Funktion gehört zur PECL-Erweiterung Trader, die auf der TA-Lib-Bibliothek basiert. Sie eignet sich besonders für die Auswertung von Zeitreihendaten aus Börsenkursen, Kryptowährungen oder anderen handelbaren Instrumenten. Zur Nutzung muss die Trader-Extension installiert und aktiviert sein (pecl install trader).

Da für die Berechnung mindestens timePeriod + fastK_Period - 1 Datenpunkte benötigt werden, sind die ersten Elemente im Ergebnis-Array nicht belegt (Lookback-Effekt). Der Rückgabeindex beginnt daher versetzt gegenüber dem Eingabe-Array.

Parameter

Name Typ Default Beschreibung
$real Pflicht array Eindimensionales Array mit numerischen Kursdaten (z. B. Schlusskurse) in chronologischer Reihenfolge.
$timePeriod int 14 Anzahl der Perioden für die RSI-Berechnung. Typischer Standardwert ist 14. Gültige Werte: 2–100000.
$fastK_Period int 5 Anzahl der Perioden für die FastK-Stochastics-Berechnung auf dem RSI. Gültige Werte: 1–100000.
$fastD_Period int 3 Anzahl der Perioden für die Glättung von FastK zur Berechnung der FastD-Signallinie. Gültige Werte: 1–100000.
$fastD_MAType int TRADER_MA_TYPE_SMA Glättungstyp (Moving-Average-Typ) für FastD. Mögliche Werte sind Konstanten wie TRADER_MA_TYPE_SMA, TRADER_MA_TYPE_EMA usw.

Rückgabewert

Typ
array|false
Beschreibung
Bei Erfolg ein assoziatives Array mit den Schlüsseln fastK (Array der rohen stochastischen RSI-Werte) und fastD (Array der geglätteten Signalwerte). Die Indizes entsprechen den Positionen im Eingabe-Array (unter Berücksichtigung des Lookback-Offsets). Bei einem Fehler wird false zurückgegeben.

Beispiele

Grundlegende Berechnung des StochRSI für Börsenkurse

<?php
// Beispiel-Schlusskurse (z. B. Tagesschlusskurse einer Aktie)
$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, 46.01, 46.55, 46.47,
    45.78, 46.12, 46.88, 46.91, 47.30, 47.50, 47.10, 46.80,
    46.55, 46.30, 46.10, 45.90, 45.70, 45.50
];

$result = trader_stochrsi($closePrices, 14, 5, 3, TRADER_MA_TYPE_SMA);

if ($result === false) {
    echo "Fehler bei der Berechnung des StochRSI.\n";
} else {
    echo "FastK-Werte:\n";
    foreach ($result['fastK'] as $index => $value) {
        printf("  Index %d: %.4f\n", $index, $value);
    }
    echo "\nFastD-Werte:\n";
    foreach ($result['fastD'] as $index => $value) {
        printf("  Index %d: %.4f\n", $index, $value);
    }
}

StochRSI zur Erkennung von Überverkauft-/Überkauft-Signalen

<?php
// Simulierte Zeitreihendaten (z. B. Krypto-Kurse)
$prices = array_map(
    fn($i) => 100 + sin($i / 5) * 20 + rand(-5, 5),
    range(0, 49)
);

$stochRsi = trader_stochrsi($prices, 14, 5, 3, TRADER_MA_TYPE_SMA);

if ($stochRsi !== false) {
    $fastK = $stochRsi['fastK'];
    $fastD = $stochRsi['fastD'];

    foreach ($fastD as $index => $dValue) {
        $kValue = $fastK[$index] ?? null;
        if ($kValue === null) continue;

        $signal = '';
        if ($kValue < 20 && $dValue < 20) {
            $signal = '>>> ÜBERVERKAUFT – mögliches Kaufsignal';
        } elseif ($kValue > 80 && $dValue > 80) {
            $signal = '>>> ÜBERKAUFT – mögliches Verkaufssignal';
        }

        if ($signal !== '') {
            printf("Index %d: K=%.2f, D=%.2f  %s\n", $index, $kValue, $dValue, $signal);
        }
    }
} else {
    echo "Berechnung fehlgeschlagen.\n";
}

// Wichtig · Fallstricke

Lookback-Effekt: Die ersten Ergebnisindizes fehlen im Rückgabe-Array, da für die Berechnung eine Mindestanzahl an Datenpunkten benötigt wird. Die Anzahl fehlender Werte ergibt sich aus timePeriod + fastK_Period - 2 + (fastD_Period - 1). Das Eingabe-Array und das Ausgabe-Array haben daher unterschiedliche Startindizes.

Installation: Die Trader-Extension ist nicht standardmäßig in PHP enthalten. Sie muss über PECL installiert werden (pecl install trader) und in der php.ini aktiviert sein (extension=trader).

Parametervalidierung: Werden ungültige Parameter übergeben (z. B. timePeriod < 2), gibt die Funktion false zurück. Eine Prüfung des Rückgabewertes ist daher empfehlenswert.

Genauigkeit: Da der StochRSI sehr sensitiv ist, empfiehlt es sich, die Signallinien-Glättung (fastD) für Handelsentscheidungen zu bevorzugen und den Indikator stets in Kombination mit anderen Signalen zu verwenden.