Signatur
Beschreibung
trader_mama() ist Teil der Trader-Erweiterung (PHP-Bindings für die TA-Lib) und implementiert den MESA Adaptive Moving Average, kurz MAMA. Dieser gleitende Durchschnitt passt seine Glättungsrate dynamisch an die aktuelle Marktvolatilität an, was ihn deutlich reaktionsfähiger macht als klassische EMAs oder SMAs.
Die Funktion gibt gleichzeitig zwei Linien zurück: den MAMA selbst sowie den FAMA (Following Adaptive Moving Average), der als Signallinie fungiert. Kreuzt MAMA die FAMA-Linie von unten, gilt dies als Kaufsignal; ein Kreuzen von oben als Verkaufssignal — ein verbreitetes Konzept in der technischen Analyse von Finanzmärkten.
Die Parameter fast_limit und slow_limit begrenzen, wie schnell oder langsam sich der Glättungskoeffizient (Alpha) an veränderte Marktbedingungen anpassen darf. Gängige Standardwerte sind 0.5 für das obere Limit und 0.05 für das untere Limit.
Die Funktion eignet sich für quantitative Handelsstrategien und Backtesting-Anwendungen. Sie erfordert eine ausreichend lange Eingabereihe, da TA-Lib intern einen Anlaufzeitraum (lookback) benötigt, bevor Ausgabewerte berechnet werden können.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $real Pflicht | array | Eingabe-Array mit numerischen Kursdaten (typischerweise Schlusskurse) als float-Werte. Die Reihenfolge sollte chronologisch aufsteigend sein. |
|
| $fast_limit | float | 0.5 | Obere Grenze des adaptiven Glättungskoeffizienten Alpha. Muss zwischen 0.01 und 0.99 liegen. Höhere Werte erlauben schnellere Anpassung an Trendwechsel. |
| $slow_limit | float | 0.05 | Untere Grenze des adaptiven Glättungskoeffizienten Alpha. Muss zwischen 0.01 und 0.99 liegen und kleiner als fast_limit sein. Niedrigere Werte bedeuten stärkere Glättung in ruhigen Marktphasen. |
Rückgabewert
'mama' (Array der MAMA-Werte) und 'fama' (Array der FAMA-Werte). Beide Arrays sind numerisch indiziert und beginnen erst ab dem Lookback-Offset mit gültigen Werten. Im Fehlerfall (z. B. ungültige Parameter oder zu kurze Eingabe) wird false zurückgegeben.Beispiele
Einfache MAMA-Berechnung mit Standardwerten
<?php
// Beispielhafte Schlusskurse einer Aktie (chronologisch)
$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, 45.98, 45.77, 45.68,
46.00, 46.03, 45.61, 46.28, 46.28, 46.00, 46.03, 46.41,
46.22, 45.64, 46.21, 46.25, 45.71, 46.45, 45.78, 45.35
];
$result = trader_mama($closePrices, 0.5, 0.05);
if ($result === false) {
echo "Fehler bei der Berechnung (evtl. zu wenig Datenpunkte oder ungültige Parameter)." . PHP_EOL;
} else {
echo "MAMA-Werte:" . PHP_EOL;
foreach ($result['mama'] as $index => $value) {
printf(" Index %d: %.4f\n", $index, $value);
}
echo PHP_EOL . "FAMA-Werte:" . PHP_EOL;
foreach ($result['fama'] as $index => $value) {
printf(" Index %d: %.4f\n", $index, $value);
}
}
Kauf-/Verkaufssignale aus MAMA/FAMA-Kreuzung ableiten
<?php
// Generierte synthetische Preisreihe (mind. 32+ Werte für sinnvollen Lookback)
$prices = array_map(fn($i) => 100 + sin($i * 0.3) * 5 + $i * 0.1, range(0, 50));
$result = trader_mama($prices, 0.5, 0.05);
if ($result === false) {
die("Berechnung fehlgeschlagen.\n");
}
$mama = $result['mama'];
$fama = $result['fama'];
$indices = array_keys($mama);
echo "Handelssignale:" . PHP_EOL;
for ($i = 1; $i < count($indices); $i++) {
$cur = $indices[$i];
$prev = $indices[$i - 1];
$mamaCrossedAbove = $mama[$prev] <= $fama[$prev] && $mama[$cur] > $fama[$cur];
$mamaCrossedBelow = $mama[$prev] >= $fama[$prev] && $mama[$cur] < $fama[$cur];
if ($mamaCrossedAbove) {
printf(" Kaufsignal bei Index %d (MAMA=%.4f > FAMA=%.4f)\n", $cur, $mama[$cur], $fama[$cur]);
} elseif ($mamaCrossedBelow) {
printf(" Verkaufssignal bei Index %d (MAMA=%.4f < FAMA=%.4f)\n", $cur, $mama[$cur], $fama[$cur]);
}
}
// Wichtig · Fallstricke
Voraussetzungen: Die PHP-Erweiterung trader muss installiert und aktiviert sein (pecl install trader bzw. entsprechender Eintrag in der php.ini). Ohne diese Erweiterung ist die Funktion nicht verfügbar.
Lookback-Zeitraum: TA-Lib benötigt intern einen Anlaufzeitraum. Wird die Eingabe-Zeitreihe zu kurz übergeben, gibt die Funktion false zurück. Als Faustregel sollten mindestens 32 Datenpunkte vorhanden sein.
Parametergrenzen: fast_limit muss stets größer als slow_limit sein, und beide Werte müssen im Bereich 0.01–0.99 liegen. Ungültige Werte führen zu false als Rückgabewert.
Finanzielle Nutzung: Diese Funktion dient ausschließlich analytischen Zwecken. Handelsentscheidungen, die allein auf technischen Indikatoren basieren, tragen erhebliche Risiken. Keine Nutzung als alleinige Grundlage für echte Investitionsentscheidungen.