Start · Sprachen · PHP · Referenz · trader_rocr100

trader_rocr100

Funktion

Berechnet die Änderungsrate im 100er-Maßstab: <code>(Preis / vorherigerPreis) * 100</code> für ein Array von Kursdaten.

Kategorie: math

Signatur

trader_rocr100(array $real, int $timePeriod = 10): array|false

Beschreibung

trader_rocr100 ist Teil der TRADER-Erweiterung für PHP, die auf der TA-Lib (Technical Analysis Library) basiert. Die Funktion berechnet den Rate of Change Ratio scaled to 100 (ROCR100) – also das Verhältnis eines aktuellen Preises zum Preis vor timePeriod Perioden, multipliziert mit 100.

Die Formel lautet: ROCR100 = (Preis[i] / Preis[i - timePeriod]) * 100. Ein Wert von 100 bedeutet, dass der Preis gegenüber der Vorperiode unverändert ist. Werte über 100 zeigen eine Preissteigerung, Werte unter 100 einen Preisrückgang an.

Der Unterschied zu trader_roc besteht darin, dass ROCR100 das Verhältnis mit 100 multipliziert, anstatt die prozentuale Veränderung auszugeben. Dies eignet sich besonders für den Vergleich von Preisveränderungen und die Normierung von Zeitreihen in der technischen Analyse, z. B. im Algorithmic Trading.

Die Funktion ist nützlich, wenn Preisbewegungen relativ zum Ausgangswert normiert dargestellt werden sollen, ohne negative Basiswerte zu Problemen führen zu lassen (wie es bei prozentualen Berechnungen der Fall sein kann).

Parameter

Name Typ Default Beschreibung
$real Pflicht array Ein numerisch indiziertes Array mit Kursdaten (z. B. Schlusskurse als float-Werte). Die Werte müssen chronologisch sortiert sein.
$timePeriod int 10 Die Anzahl der Perioden, über die die Änderungsrate berechnet wird. Muss ein positiver ganzzahliger Wert sein. Standardmäßig 10.

Rückgabewert

Typ
array|false
Beschreibung
Gibt ein numerisch indiziertes Array mit den berechneten ROCR100-Werten zurück. Die ersten timePeriod Elemente des Eingabe-Arrays haben keinen korrespondierenden Ausgabewert (der Ausgabe-Array ist kürzer als der Eingabe-Array). Bei einem Fehler (z. B. ungültige Parameter) wird false zurückgegeben.

Beispiele

Einfache Berechnung der ROCR100 auf Schlusskursen

<?php
// Beispiel-Schlusskurse einer Aktie
$closes = [100.0, 102.0, 101.5, 105.0, 107.0, 106.5, 110.0, 112.0, 111.0, 115.0, 118.0, 120.0];

// ROCR100 mit einer Periode von 3 berechnen
$rocr100 = trader_rocr100($closes, 3);

if ($rocr100 === false) {
    echo "Fehler bei der Berechnung.";
} else {
    foreach ($rocr100 as $index => $value) {
        printf("Index %d: ROCR100 = %.4f\n", $index, $value);
    }
}
Index 3: ROCR100 = 105.0000 Index 4: ROCR100 = 104.9020 Index 5: ROCR100 = 104.9261 Index 6: ROCR100 = 104.7619 Index 7: ROCR100 = 105.1643 Index 8: ROCR100 = 100.9091 Index 9: ROCR100 = 104.5455 Index 10: ROCR100 = 105.3571 Index 11: ROCR100 = 108.1081

Verwendung von ROCR100 zur Signalauswertung

<?php
// Schlusskurse der letzten 15 Handelstage
$closes = [200.0, 198.5, 201.0, 203.5, 202.0, 205.0, 207.5, 210.0, 208.0, 211.0, 214.0, 213.5, 216.0, 219.0, 220.5];

$timePeriod = 5;
$rocr100 = trader_rocr100($closes, $timePeriod);

if ($rocr100 !== false) {
    $lastKey   = array_key_last($rocr100);
    $lastValue = $rocr100[$lastKey];

    echo "Letzter ROCR100-Wert: " . number_format($lastValue, 4) . "\n";

    if ($lastValue > 100) {
        echo "Signal: Aufwärtstrend (Preis gestiegen im Vergleich zu vor {$timePeriod} Perioden)";
    } elseif ($lastValue < 100) {
        echo "Signal: Abwärtstrend (Preis gesunken im Vergleich zu vor {$timePeriod} Perioden)";
    } else {
        echo "Signal: Keine Veränderung";
    }
}
Letzter ROCR100-Wert: 107.5610 Signal: Aufwärtstrend (Preis gestiegen im Vergleich zu vor 5 Perioden)

// Wichtig · Fallstricke

Voraussetzung: Die TRADER-Erweiterung (php_trader) muss installiert und aktiviert sein. Sie ist nicht im PHP-Kern enthalten und muss über PECL installiert werden: pecl install trader.

Unterschied zu ähnlichen Funktionen: trader_roc berechnet ((Preis / vorherigerPreis) - 1) * 100 (prozentuale Veränderung), während trader_rocr100 den reinen Quotienten mit 100 skaliert. Bei einem unveränderten Preis liefert trader_roc den Wert 0, trader_rocr100 hingegen 100.

Array-Länge: Der Rückgabe-Array enthält weniger Elemente als der Eingabe-Array. Die ersten timePeriod Einträge fehlen im Ergebnis, da für sie kein Vergleichswert existiert. Der Index des ersten Ergebnisses beginnt daher bei timePeriod.