Signatur
Beschreibung
trader_macdfix ist Teil der PHP-Erweiterung Trader (TA-Lib-Wrapper) und berechnet den klassischen MACD-Indikator mit den fest vorgegebenen Perioden 12 (schneller EMA) und 26 (langsamer EMA). Lediglich die Signalperiode ist konfigurierbar. Der MACD ist ein weit verbreiteter technischer Indikator in der Finanzanalyse, der Trendrichtung, Momentum und mögliche Kauf-/Verkaufssignale anzeigt.
Im Gegensatz zu trader_macd, bei dem alle drei Perioden frei wählbar sind, erzwingt trader_macdfix die Standardkonfiguration 12/26/Signal. Dies entspricht der Definition von Gerald Appel und ist in der Praxis die meistgenutzte Einstellung.
Die Funktion gibt ein Array mit drei Teilergebnissen zurück: der MACD-Linie (Differenz der beiden EMAs), der Signallinie (EMA der MACD-Linie) und dem Histogramm (Differenz aus MACD-Linie und Signallinie). Alle drei Arrays sind gleich lang und enthalten am Anfang NAN-Platzhalter für Perioden, in denen noch nicht genügend Daten vorlagen.
Diese Funktion eignet sich überall dort, wo man die Standardparametrierung des MACD benötigt und keine Flexibilität bei den EMA-Perioden erforderlich ist — also für die meisten typischen Börsensoftware-Anwendungen und Trading-Strategien.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $real Pflicht | array | Eingabe-Array mit numerischen Kursdaten (typischerweise Schlusskurse) als float-Werte. Die Werte sollten chronologisch geordnet sein (ältester Wert zuerst). |
|
| $signalPeriod | int | 9 | Anzahl der Perioden für die Signallinie (EMA der MACD-Linie). Standardwert ist 9. Muss >= 1 sein. |
Rückgabewert
'macd', 'macdsignal' und 'macdhist', jeweils als numerisch indizierte Arrays gleicher Länge wie die Eingabe. Bei einem Fehler (z. B. ungültige Parameter oder zu wenig Datenpunkte) wird false zurückgegeben.Beispiele
MACD-Fix-Berechnung mit Schlusskursen
<?php
// Trader-Erweiterung muss installiert sein: pecl install trader
$closes = [
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,
44.83, 45.10, 45.15, 43.61, 44.33,
];
$result = trader_macdfix($closes, 9);
if ($result === false) {
echo 'Fehler bei der MACD-Berechnung.' . PHP_EOL;
} else {
foreach ($result['macd'] as $i => $macdVal) {
printf(
"Index %d: MACD=%.4f, Signal=%.4f, Hist=%.4f\n",
$i,
$macdVal,
$result['macdsignal'][$i],
$result['macdhist'][$i]
);
}
}
Kauf-/Verkaufssignal aus MACD-Histogramm ableiten
<?php
// Ermittelt, ob das MACD-Histogramm positiv (bullish) oder negativ (bearish) ist
$prices = array_map('floatval', [
100, 102, 101, 105, 107, 110, 108, 112, 115, 113,
116, 118, 120, 119, 121, 123, 122, 125, 127, 126,
128, 130, 129, 132, 134, 133, 135, 137, 136, 138,
140, 139, 141, 143, 145,
]);
$result = trader_macdfix($prices, 9);
if ($result !== false) {
$hist = $result['macdhist'];
// Letzten gültigen Wert (kein NAN) prüfen
$lastHist = end($hist);
if ($lastHist > 0) {
echo 'Signal: Bullish (Histogramm positiv: ' . round($lastHist, 4) . ')' . PHP_EOL;
} elseif ($lastHist < 0) {
echo 'Signal: Bearish (Histogramm negativ: ' . round($lastHist, 4) . ')' . PHP_EOL;
} else {
echo 'Signal: Neutral' . PHP_EOL;
}
}
// Wichtig · Fallstricke
Voraussetzung: Die PHP-Erweiterung trader muss installiert und aktiviert sein (pecl install trader). Sie ist nicht Teil der PHP-Standardinstallation.
Die Perioden 12 und 26 sind intern fest codiert und können nicht überschrieben werden. Wer abweichende EMA-Perioden benötigt, muss trader_macd verwenden.
Die zurückgegebenen Arrays enthalten für die ersten lookback-Elemente (abhängig von den Perioden) den Wert NAN. Diese sollten vor der Weiterverarbeitung gefiltert werden, z. B. mit array_filter($result['macd'], 'is_finite').
Rundungsfehler durch Gleitkommaarithmetik können bei sehr kleinen Histogrammwerten auftreten. Für produktiven Einsatz in Handelssystemen sollte zusätzlich eine Plausibilitätsprüfung der Eingabedaten erfolgen.