Signatur
Beschreibung
trader_ma() ist Teil der TRADER-Erweiterung (TA-Lib) für PHP und berechnet einen gleitenden Durchschnitt über eine gegebene Zeitreihe von numerischen Werten. Der gleitende Durchschnitt wird häufig in der technischen Analyse von Finanzmarktdaten eingesetzt, um Kursbewegungen zu glätten und Trends sichtbar zu machen.
Der Typ des gleitenden Durchschnitts kann über den Parameter mAType frei gewählt werden. Die TRADER-Erweiterung unterstützt u. a. den einfachen Durchschnitt (SMA), den exponentiellen (EMA), den gewichteten (WMA) und weitere Varianten. Jede Methode gewichtet die historischen Werte unterschiedlich und eignet sich für verschiedene Analyseszenarien.
Die Funktion gibt ein Array zurück, dessen Schlüssel den Originalindizes der Eingabedaten entsprechen. Da für die Berechnung eine Mindestanzahl an Datenpunkten benötigt wird (Lookback-Periode), fehlen die ersten Werte im Ergebnis-Array. Dies muss bei der Weiterverarbeitung berücksichtigt werden.
Um trader_ma() zu verwenden, muss die PHP-Erweiterung trader installiert und aktiviert sein. Sie basiert auf der populären Open-Source-Bibliothek TA-Lib (Technical Analysis Library).
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $real Pflicht | array | Eingabe-Array mit numerischen Werten (z. B. Schlusskurse einer Aktie). Die Werte müssen als Fließkommazahlen vorliegen. | |
| $timePeriod | int | 30 | Anzahl der Perioden für die Berechnung des gleitenden Durchschnitts. Muss mindestens 2 betragen. Typische Werte sind 10, 20, 50 oder 200. |
| $mAType | int | TRADER_MA_TYPE_SMA | Typ des gleitenden Durchschnitts. Mögliche Werte sind die TRADER_MA_TYPE_*-Konstanten, z. B. TRADER_MA_TYPE_SMA (einfach), TRADER_MA_TYPE_EMA (exponentiell), TRADER_MA_TYPE_WMA (gewichtet), TRADER_MA_TYPE_DEMA, TRADER_MA_TYPE_TEMA, TRADER_MA_TYPE_TRIMA, TRADER_MA_TYPE_KAMA, TRADER_MA_TYPE_MAMA, TRADER_MA_TYPE_T3. |
Rückgabewert
false zurückgegeben.Beispiele
Einfacher gleitender Durchschnitt (SMA) über 3 Perioden
<?php
// Beispiel-Schlusskurse einer Aktie
$schlusskurse = [10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0];
// Berechnung des SMA mit Periode 3
$sma = trader_ma($schlusskurse, 3, TRADER_MA_TYPE_SMA);
if ($sma === false) {
echo "Fehler bei der Berechnung.\n";
} else {
foreach ($sma as $index => $wert) {
echo "Index $index: " . number_format($wert, 4) . "\n";
}
}
Exponentieller gleitender Durchschnitt (EMA) für Trendanalyse
<?php
// Tageskurse der letzten 10 Handelstage
$kurse = [100.0, 102.5, 101.0, 103.0, 105.5, 107.0, 106.0, 108.5, 110.0, 112.0];
// EMA mit Periode 5
$ema = trader_ma($kurse, 5, TRADER_MA_TYPE_EMA);
if ($ema === false) {
echo "Berechnung fehlgeschlagen.\n";
} else {
echo "Letzter EMA-Wert: " . number_format(end($ema), 4) . "\n";
echo "Anzahl berechneter Werte: " . count($ema) . "\n";
// Ausgabe aller EMA-Werte
foreach ($ema as $idx => $val) {
echo "Tag $idx: " . number_format($val, 4) . "\n";
}
}
// Wichtig · Fallstricke
Voraussetzung: Die PHP-Erweiterung trader muss installiert und in der php.ini aktiviert sein (extension=trader). Sie ist nicht standardmäßig im PHP-Kern enthalten und muss über PECL installiert werden: pecl install trader.
Lookback-Periode: Die ersten timePeriod - 1 Indizes des Ergebnis-Arrays fehlen, weil für deren Berechnung nicht genügend Vorwerte vorhanden sind. Bei Verwendung des EMA oder T3 kann die tatsächliche Lookback-Periode länger sein als timePeriod - 1.
Fehlerbehandlung: Wenn trader_ma() false zurückgibt, kann mit trader_errno() der genaue Fehlercode abgefragt werden, um die Ursache zu identifizieren.
Genauigkeit: Die Berechnungen basieren auf IEEE 754-Fließkommazahlen (double). Für sehr kleine oder sehr große Kurswerte können Rundungsfehler auftreten. Alle Eingabewerte sollten als float übergeben werden.