Start · Sprachen · PHP · Referenz · trader_roc

trader_roc

Funktion

Berechnet die Änderungsrate (Rate of Change) eines Kursverlaufs nach der Formel <code>((Preis / vorherigerPreis) - 1) * 100</code>.

Kategorie: math

Signatur

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

Beschreibung

trader_roc ist Teil der TRADER-Erweiterung (PHP-Binding für TA-Lib) und berechnet die prozentuale Änderungsrate eines Datenpunkts im Verhältnis zu einem früheren Datenpunkt. Die Formel lautet: ((Preis[i] / Preis[i - timePeriod]) - 1) * 100. Das Ergebnis drückt also aus, um wie viel Prozent sich ein Wert gegenüber dem Wert vor timePeriod Perioden verändert hat.

Der Indikator wird häufig in der technischen Analyse von Finanzmärkten eingesetzt, um die Stärke und Richtung eines Kurs-Momentums zu beurteilen. Positive Werte signalisieren eine Aufwärtsbewegung, negative Werte eine Abwärtsbewegung. Nulldurchgänge können als Kauf- oder Verkaufssignale interpretiert werden.

Die Funktion gibt ein Array zurück, das kürzer als die Eingabe ist, da für die ersten timePeriod Elemente keine Berechnung möglich ist. Die Rückgabe beginnt erst ab dem Index, ab dem genügend historische Daten vorliegen. Dadurch verschiebt sich die Indexierung gegenüber dem Eingabe-Array.

Im Gegensatz zu trader_rocp (Rate of Change in Prozent ohne Multiplikation) und trader_rocr (Rate of Change als reines Verhältnis) liefert trader_roc die intuitivste, prozentual skalierte Darstellung.

Parameter

Name Typ Default Beschreibung
$real Pflicht array Ein numerisches Array mit Kursdaten (z. B. Schlusskurse) in chronologischer Reihenfolge.
$timePeriod int 10 Die Anzahl der Perioden, die für den Vergleich rückwärts herangezogen werden. Muss im Bereich 2–100000 liegen. Standard ist 10.

Rückgabewert

Typ
array|false
Beschreibung
Gibt ein numerisches Array mit den berechneten ROC-Werten zurück. Das Array enthält weniger Elemente als das Eingabe-Array, da die ersten timePeriod Werte keine Berechnung ermöglichen. Bei einem Fehler (z. B. ungültige Parameter oder zu wenige Datenpunkte) wird false zurückgegeben.

Beispiele

Einfache ROC-Berechnung für Schlusskurse

<?php
// Tägliche Schlusskurse einer Aktie
$closes = [100.0, 102.0, 101.5, 105.0, 107.0, 106.5, 110.0, 112.0, 111.5, 115.0, 118.0];

// ROC mit Standard-Periode 10
$roc = trader_roc($closes, 10);

if ($roc === false) {
    echo "Fehler bei der Berechnung." . PHP_EOL;
} else {
    foreach ($roc as $index => $value) {
        echo "Index $index: ROC = " . round($value, 4) . "%" . PHP_EOL;
    }
}
Index 10: ROC = 18%

ROC mit kürzerer Periode zur Momentum-Analyse

<?php
// Etwas längere Kursreihe
$closes = [
    50.0, 51.5, 52.0, 51.0, 53.0,
    54.5, 55.0, 54.0, 56.0, 57.5,
    58.0, 57.0, 59.0, 60.5, 61.0
];

// Kurze Periode von 3 für schnelle Momentum-Erkennung
$roc = trader_roc($closes, 3);

if ($roc !== false) {
    echo "ROC-Werte (Periode 3):" . PHP_EOL;
    foreach ($roc as $i => $val) {
        $trend = $val >= 0 ? 'Aufwärts' : 'Abwärts';
        echo "  Index $i: " . round($val, 2) . "% → $trend" . PHP_EOL;
    }
} else {
    echo "Berechnung fehlgeschlagen." . PHP_EOL;
}
ROC-Werte (Periode 3): Index 3: -1.94% → Abwärts Index 4: 3.92% → Aufwärts Index 5: 6.73% → Aufwärts Index 6: 5.77% → Aufwärts Index 7: 5.83% → Aufwärts Index 8: 5.66% → Aufwärts Index 9: 5.5% → Aufwärts Index 10: 6.42% → Aufwärts Index 11: 5.5% → Aufwärts Index 12: 7.27% → Aufwärts Index 13: 7.09% → Aufwärts Index 14: 8.93% → Aufwärts

// Wichtig · Fallstricke

Voraussetzung: Die PHP-TRADER-Erweiterung muss installiert und aktiviert sein (pecl install trader, dann extension=trader.so in der php.ini).

Indexverschiebung: Das Rückgabe-Array beginnt intern bei Index timePeriod der Eingabe. Wird das Ergebnis mit den Originaldaten verglichen, muss diese Verschiebung berücksichtigt werden — am besten mit array_values() kombinieren oder die Schlüssel explizit auswerten.

Für sehr kurze Eingabe-Arrays (weniger als timePeriod + 1 Elemente) gibt die Funktion false zurück. Prüfe die Rückgabe daher immer mit einem strikten Vergleich (=== false).