Signatur
Beschreibung
Der Commodity Channel Index (CCI) ist ein technischer Indikator aus der Finanzanalyse, der misst, wie weit ein Kurs von seinem statistischen Mittelwert entfernt ist. Er wurde 1980 von Donald Lambert entwickelt und wird eingesetzt, um überkaufte und überverkaufte Marktphasen zu identifizieren sowie Trendwenden zu signalisieren.
Die Funktion gehört zur TRADER-Erweiterung (ext/trader) für PHP, die auf der TA-Lib-Bibliothek basiert. Sie erwartet drei Arrays mit Hoch-, Tief- und Schlusskursen sowie eine Periodenangabe. Der CCI wird nach der Formel (Typischer Preis − SMA) / (0.015 × Mittlere Abweichung) berechnet, wobei der typische Preis der Durchschnitt aus High, Low und Close ist.
Typische Interpretation: Ein CCI-Wert über +100 gilt als überkauft, ein Wert unter -100 als überverkauft. Händler nutzen den CCI sowohl für Trendfolgestrategien als auch für Gegentrendstrategien.
Der Rückgabewert ist ein Array, dessen Indizes nicht zwingend bei 0 beginnen – je nach Berechnungshistorie fehlen die ersten timePeriod - 1 Werte. Dies sollte beim Verarbeiten des Ergebnisses berücksichtigt werden.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $high Pflicht | array | Numerisches Array mit den Tageshöchstkursen (High) in chronologischer Reihenfolge. | |
| $low Pflicht | array | Numerisches Array mit den Tagestiefkursen (Low) in chronologischer Reihenfolge. | |
| $close Pflicht | array | Numerisches Array mit den Schlusskursen (Close) in chronologischer Reihenfolge. | |
| $timePeriod | int | 14 | Anzahl der Perioden (Kerzen/Tage), über die der CCI berechnet wird. Muss zwischen 2 und 100000 liegen. Standardmäßig 14. |
Rückgabewert
timePeriod - 1 Einträge fehlen. Bei einem Fehler (z. B. ungültige Parameter oder zu wenige Datenpunkte) wird false zurückgegeben.Beispiele
Einfache CCI-Berechnung mit 14 Perioden
<?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, 44.83, 45.10, 45.15, 45.98, 45.55];
$low = [43.61, 43.35, 43.52, 43.18, 43.70, 44.37, 44.71, 44.90, 43.18, 43.70, 44.37, 44.71, 44.90, 45.20, 44.99];
$close = [44.09, 44.15, 43.61, 44.33, 44.83, 45.10, 45.15, 45.98, 44.33, 44.83, 45.10, 45.15, 45.98, 45.41, 45.15];
$cci = trader_cci($high, $low, $close, 14);
if ($cci === false) {
echo "Fehler bei der CCI-Berechnung.\n";
} else {
foreach ($cci as $index => $value) {
echo "Index {$index}: CCI = " . round($value, 4) . "\n";
}
}
CCI-Signal: Überkauft / Überverkauft erkennen
<?php
// Kursdaten laden (hier als Beispiel mit zufälligen Werten)
$high = array_map(fn($i) => 100 + sin($i * 0.3) * 5 + $i * 0.1, range(0, 49));
$low = array_map(fn($i) => 95 + sin($i * 0.3) * 5 + $i * 0.1, range(0, 49));
$close = array_map(fn($i) => 98 + sin($i * 0.3) * 5 + $i * 0.1, range(0, 49));
$cci = trader_cci($high, $low, $close, 14);
if ($cci === false) {
echo "Fehler bei der Berechnung.\n";
exit;
}
foreach ($cci as $index => $value) {
$signal = '';
if ($value > 100) {
$signal = '⚠️ Überkauft';
} elseif ($value < -100) {
$signal = '⚠️ Überverkauft';
} else {
$signal = 'Neutral';
}
echo "Periode {$index}: " . round($value, 2) . " → {$signal}\n";
}
// Wichtig · Fallstricke
Erweiterung erforderlich: trader_cci setzt die PECL-Erweiterung trader voraus, die separat installiert werden muss (pecl install trader). Sie ist nicht standardmäßig in PHP enthalten.
Array-Indizes: Das zurückgegebene Array beginnt nicht immer bei Index 0. Die ersten timePeriod - 1 Werte fehlen, da für die Berechnung eine Mindestanzahl an Datenpunkten benötigt wird. Beim Zugriff auf bestimmte Indizes sollte daher immer isset() verwendet werden.
Gleichmäßige Array-Längen: Die Arrays high, low und close müssen exakt gleich lang sein. Unterschiedliche Längen führen zu einem Fehler oder unerwarteten Ergebnissen.