Signatur
Beschreibung
trader_sma ist Teil der TRADER-Erweiterung für PHP, die auf der TA-Lib (Technical Analysis Library) basiert. Die Funktion berechnet den Simple Moving Average (SMA) – den klassischen arithmetischen Mittelwert über ein gleitendes Zeitfenster – für ein übergebenes Array von Kursdaten oder Messwerten.
Der SMA wird häufig in der technischen Analyse von Finanzmärkten eingesetzt, um kurzfristige Schwankungen (Rauschen) in Kurs- oder Volumendaten zu glätten und Trends sichtbar zu machen. Für jeden Datenpunkt im Ergebnis wird der Durchschnitt der vorherigen $timePeriod Werte berechnet. Die ersten $timePeriod - 1 Elemente des Eingabe-Arrays haben kein Ergebnis und fehlen im Rückgabe-Array; der Index des Ergebnis-Arrays beginnt entsprechend versetzt.
Typische Anwendungsgebiete sind: Aktien- und Kryptowährungs-Trendanalyse, Signalgenerierung (z. B. Kreuzung von kurzem und langem SMA), sowie allgemeine Glättung von Zeitreihendaten in wissenschaftlichen oder industriellen Anwendungen.
- Kurzer SMA (z. B. 10 Perioden): reagiert schnell auf Preisänderungen.
- Langer SMA (z. B. 200 Perioden): glättet stark, zeigt langfristigen Trend.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $real Pflicht | array | Numerisch indiziertes Array mit den Eingangswerten (z. B. Schlusskurse, Messwerte). Alle Werte müssen vom Typ float oder int sein. |
|
| $timePeriod | int | 30 | Die Anzahl der Perioden, über die der Durchschnitt gebildet wird. Muss im gültigen Bereich von 2 bis 100000 liegen. Standardwert ist 30. |
Rückgabewert
$timePeriod - 1), und als Werte die berechneten SMA-Werte enthält. Bei ungültigen Eingaben oder einem Fehler wird false zurückgegeben.Beispiele
Einfacher SMA für Schlusskurse berechnen
<?php
// Beispieldaten: tägliche Schlusskurse einer Aktie
$closes = [10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0];
// SMA mit Periode 3 berechnen
$sma = trader_sma($closes, 3);
if ($sma === false) {
echo "Fehler bei der Berechnung.\n";
} else {
foreach ($sma as $index => $value) {
echo "Index $index: SMA = " . round($value, 2) . "\n";
}
}
Crossover-Signal: kurzfristiger vs. langfristiger SMA
<?php
// Simulierte Kursdaten (20 Tage)
$prices = [
100, 102, 101, 105, 107, 110, 108, 112, 115, 113,
116, 119, 117, 121, 124, 122, 126, 129, 127, 131
];
$smaShort = trader_sma($prices, 5); // 5-Tage SMA
$smaLong = trader_sma($prices, 10); // 10-Tage SMA
// Prüfe auf "Golden Cross" (kurzer SMA kreuzt langen von unten nach oben)
foreach ($smaLong as $index => $longVal) {
if (!isset($smaShort[$index])) {
continue;
}
$shortVal = $smaShort[$index];
$prevIndex = $index - 1;
if (
isset($smaShort[$prevIndex], $smaLong[$prevIndex]) &&
$smaShort[$prevIndex] <= $smaLong[$prevIndex] &&
$shortVal > $longVal
) {
echo "Golden Cross bei Index $index (Kurs: {$prices[$index]})\n";
}
}
echo "Letzter SMA5: " . round(end($smaShort), 2) . "\n";
echo "Letzter SMA10: " . round(end($smaLong), 2) . "\n";
// Wichtig · Fallstricke
Wichtig: Die TRADER-Erweiterung muss explizit installiert und aktiviert sein (pecl install trader bzw. entsprechende Einträge in der php.ini). Sie ist nicht standardmäßig in PHP enthalten.
Das Rückgabe-Array beginnt erst ab Index $timePeriod - 1 des Eingabe-Arrays. Wenn das Eingabe-Array weniger Elemente enthält als $timePeriod, wird false zurückgegeben. Achte darauf, dass die Eingabewerte ausschließlich numerisch sind – nicht-numerische Werte können zu unerwarteten Ergebnissen führen.
Der SMA gewichtet alle Perioden gleich. Für eine stärkere Gewichtung aktueller Werte bietet die TRADER-Erweiterung alternativ trader_ema (Exponential Moving Average) oder trader_wma (Weighted Moving Average) an.