Signatur
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
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;
}
}
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;
}
// 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).