Signatur
Beschreibung
trader_macd ist Teil der TRADER-Erweiterung (TA-Lib Bindings) und berechnet den technischen Indikator MACD (Moving Average Convergence/Divergence). Dieser Indikator gilt als eines der meistgenutzten Werkzeuge in der technischen Wertpapieranalyse und hilft dabei, Trends, Trendwenden sowie Kauf- und Verkaufssignale in Kurszeitreihen zu identifizieren.
Der MACD besteht aus drei Komponenten: der MACD-Linie (Differenz zwischen schnellem und langsamem exponentiellen gleitenden Durchschnitt), der Signallinie (EMA der MACD-Linie) und dem MACD-Histogramm (Differenz zwischen MACD-Linie und Signallinie). Das Kreuzen der MACD-Linie über oder unter die Signallinie gilt klassischerweise als Kauf- bzw. Verkaufssignal.
Die Funktion gibt ein assoziatives Array mit drei Schlüsseln zurück: real (MACD-Linie), signal (Signallinie) und hist (Histogramm). Die ersten Elemente des Ausgabe-Arrays sind aufgrund der Look-back-Periode nicht belegt; das Array beginnt erst ab dem Index, ab dem ausreichend Daten vorliegen.
Für eine sinnvolle Nutzung sollten die Eingabedaten typischerweise Schlusskurse einer Zeitreihe (z. B. Tages- oder Stundenkurse) sein. Standardparameter sind Fast Period 12, Slow Period 26 und Signal Period 9 – diese entsprechen den klassischen MACD-Einstellungen nach Gerald Appel.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $real Pflicht | array | Numerisches Array mit Kursdaten (z. B. Schlusskurse) als Fließkommazahlen, chronologisch sortiert (älteste Werte zuerst). | |
| $fastPeriod | int | 12 | Periode für den schnellen exponentiellen gleitenden Durchschnitt (Fast EMA). Typischer Standardwert: 12. Muss kleiner als slowPeriod sein. |
| $slowPeriod | int | 26 | Periode für den langsamen exponentiellen gleitenden Durchschnitt (Slow EMA). Typischer Standardwert: 26. Muss größer als fastPeriod sein. |
| $signalPeriod | int | 9 | Periode für die Signallinie (EMA der MACD-Linie). Typischer Standardwert: 9. |
Rückgabewert
real (MACD-Linie), signal (Signallinie) und hist (Histogramm). Jeder Wert ist selbst ein numerisches Array mit den berechneten Werten. Bei einem Fehler (z. B. ungültige Parameter oder zu wenige Datenpunkte) wird false zurückgegeben.Beispiele
MACD für eine Schlusskurs-Zeitreihe berechnen
<?php
// Beispielhafte Schlusskurse einer Aktie (chronologisch, 30 Datenpunkte)
$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, 43.61, 44.33, 44.83,
45.10, 45.15, 43.61, 44.33, 44.83, 45.10, 45.15, 43.61,
44.33, 44.83, 45.10, 45.15, 43.61, 44.33
];
// MACD mit Standardeinstellungen (12, 26, 9) berechnen
$result = trader_macd($closePrices, 12, 26, 9);
if ($result === false) {
echo "Fehler bei der MACD-Berechnung (zu wenige Datenpunkte oder ungültige Parameter).\n";
} else {
echo "MACD-Linie:\n";
print_r($result['real']);
echo "Signallinie:\n";
print_r($result['signal']);
echo "Histogramm:\n";
print_r($result['hist']);
}
?>
Kauf- und Verkaufssignale aus MACD ableiten
<?php
// Schlusskurse (mindestens slowPeriod + signalPeriod - 1 Datenpunkte nötig)
$closePrices = array_map(
fn($i) => 100 + sin($i / 5) * 10 + $i * 0.1,
range(0, 59)
);
$fastPeriod = 12;
$slowPeriod = 26;
$signalPeriod = 9;
$macd = trader_macd($closePrices, $fastPeriod, $slowPeriod, $signalPeriod);
if ($macd === false) {
echo "Berechnung fehlgeschlagen.\n";
exit;
}
$macdLine = $macd['real'];
$signalLine = $macd['signal'];
// Nur gültige (nicht-null) Indizes auswerten
$indices = array_keys($macdLine);
for ($i = 1; $i < count($indices); $i++) {
$prev = $indices[$i - 1];
$curr = $indices[$i];
// MACD-Linie kreuzt Signallinie von unten nach oben => Kaufsignal
if ($macdLine[$prev] < $signalLine[$prev] && $macdLine[$curr] >= $signalLine[$curr]) {
echo "Kaufsignal bei Index $curr (Kurs: " . round($closePrices[$curr], 2) . ")\n";
}
// MACD-Linie kreuzt Signallinie von oben nach unten => Verkaufssignal
if ($macdLine[$prev] > $signalLine[$prev] && $macdLine[$curr] <= $signalLine[$curr]) {
echo "Verkaufssignal bei Index $curr (Kurs: " . round($closePrices[$curr], 2) . ")\n";
}
}
?>
// Wichtig · Fallstricke
Erweiterung: trader_macd erfordert die installierte und aktivierte PECL-Erweiterung trader (TA-Lib PHP-Bindings). Sie ist nicht im PHP-Kern enthalten und muss separat installiert werden (pecl install trader).
Mindestanzahl Datenpunkte: Für die Berechnung mit Standardparametern (12, 26, 9) werden mindestens slowPeriod + signalPeriod - 1 = 34 Datenpunkte benötigt. Bei zu wenigen Daten gibt die Funktion false zurück. Die Ausgabe-Arrays beginnen nicht bei Index 0, sondern erst ab dem Index, ab dem ausreichend historische Daten vorliegen (Look-back-Offset).
Kein Ersatz für Finanzberatung: Technische Indikatoren wie der MACD sind mathematische Hilfsmittel und keine garantierten Handelssignale. Sie sollten stets im Kontext weiterer Analysen verwendet werden.