Signatur
Beschreibung
Bollinger-Bänder sind ein technischer Indikator, der aus drei Linien besteht: einem gleitenden Durchschnitt (mittleres Band) sowie je einem oberen und unteren Band, die um eine definierte Anzahl von Standardabweichungen vom Mittelspur entfernt liegen. Sie werden typischerweise in der technischen Analyse von Finanzinstrumenten eingesetzt, um Volatilität, Trendstärke und potenzielle Kauf- oder Verkaufssignale zu erkennen.
Die Funktion trader_bbands() stammt aus der TRADER-Erweiterung (PHP-Binding für die TA-Lib-Bibliothek) und erwartet als Eingabe ein Array mit numerischen Kurswerten (z. B. Schlusskurse). Zurückgegeben werden drei Arrays – upperBand, middleBand und lowerBand – die indiziert nach denselben Positionen wie das Eingabe-Array sind.
Der Parameter mAType bestimmt, welche Methode zur Berechnung des gleitenden Durchschnitts genutzt wird. Häufig wird TRADER_MA_TYPE_SMA (einfacher gleitender Durchschnitt) verwendet, aber auch andere Typen wie EMA (TRADER_MA_TYPE_EMA) sind möglich. nbDevUp und nbDevDn legen den Multiplikator für die Standardabweichung der oberen und unteren Bänder fest.
Typische Anwendungsfälle sind die Analyse von Aktien-, Forex- oder Kryptowährungs-Charts, um Phasen hoher oder niedriger Volatilität zu erkennen oder Ausbrüche aus einem Seitwärtsmarkt zu identifizieren.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $real Pflicht | array | Array mit numerischen Eingabewerten (z. B. tägliche Schlusskurse). Die Reihenfolge muss chronologisch aufsteigend sein. | |
| $timePeriod | int | 5 | Anzahl der Perioden für den gleitenden Durchschnitt. Typische Werte sind 20 (für Tages-Charts). Muss >= 2 und <= 100000 sein. |
| $nbDevUp | float | 2.0 | Multiplikator für die Standardabweichung des oberen Bandes. Der Standardwert 2.0 entspricht dem klassischen Bollinger-Band-Setup. |
| $nbDevDn | float | 2.0 | Multiplikator für die Standardabweichung des unteren Bandes. Der Standardwert 2.0 entspricht dem klassischen Bollinger-Band-Setup. |
| $mAType | int | TRADER_MA_TYPE_SMA | Typ des gleitenden Durchschnitts für das mittlere Band. Mögliche Werte sind Konstanten wie TRADER_MA_TYPE_SMA, TRADER_MA_TYPE_EMA, TRADER_MA_TYPE_WMA usw. |
Rückgabewert
upperBand, middleBand und lowerBand, jeweils als numerisch indiziertes Array mit den berechneten Werten. Die ersten timePeriod - 1 Einträge fehlen, da nicht genügend Vorgängerwerte vorhanden sind. Bei einem Fehler wird false zurückgegeben.Beispiele
Bollinger-Bänder für Schlusskurse berechnen
<?php
// Beispiel-Schlusskurse (z. B. Aktie über 30 Tage)
$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, 44.34, 44.09,
44.15, 43.61, 44.33, 44.83, 45.10,
45.15, 44.34, 44.09, 44.15, 43.61
];
// Bollinger-Bänder mit Standardparametern (Periode 20, ±2 Standardabweichungen)
$result = trader_bbands($closePrices, 20, 2.0, 2.0, TRADER_MA_TYPE_SMA);
if ($result === false) {
echo 'Fehler bei der Berechnung der Bollinger-Bänder.' . PHP_EOL;
} else {
foreach (array_keys($result['upperBand']) as $index) {
printf(
"Index %2d | Upper: %.4f | Middle: %.4f | Lower: %.4f\n",
$index,
$result['upperBand'][$index],
$result['middleBand'][$index],
$result['lowerBand'][$index]
);
}
}
Kaufsignal erkennen: Kurs berührt unteres Band
<?php
// Schlusskurse laden (hier exemplarisch)
$closePrices = array_map('floatval', explode(',',
'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,44.34,44.09,'
. '44.15,43.00,44.33,44.83,45.10,45.15,44.34,44.09,44.15,43.61'
));
$result = trader_bbands($closePrices, 20, 2.0, 2.0, TRADER_MA_TYPE_SMA);
if ($result !== false) {
$lastIndex = array_key_last($result['lowerBand']);
$lastClose = $closePrices[$lastIndex];
$lowerBand = $result['lowerBand'][$lastIndex];
$upperBand = $result['upperBand'][$lastIndex];
echo "Letzter Schlusskurs: $lastClose" . PHP_EOL;
echo "Unteres Band: " . round($lowerBand, 4) . PHP_EOL;
echo "Oberes Band: " . round($upperBand, 4) . PHP_EOL;
if ($lastClose <= $lowerBand) {
echo "Signal: Potenzielles Kaufsignal – Kurs am unteren Bollinger-Band!" . PHP_EOL;
} elseif ($lastClose >= $upperBand) {
echo "Signal: Potenzielles Verkaufssignal – Kurs am oberen Bollinger-Band!" . PHP_EOL;
} else {
echo "Signal: Kurs innerhalb der Bollinger-Bänder – kein klares Signal." . PHP_EOL;
}
}
// Wichtig · Fallstricke
Voraussetzung: Die trader-Erweiterung muss installiert und aktiviert sein (pecl install trader, dann extension=trader.so in der php.ini). Sie ist nicht im PHP-Standardlieferumfang enthalten.
Lookback-Periode: Die ersten timePeriod - 1 Einträge des Eingabe-Arrays werden im Rückgabe-Array nicht belegt, da für sie kein vollständiger gleitender Durchschnitt berechnet werden kann. Die Indizes der Ausgabe-Arrays korrespondieren direkt mit denen des Eingabe-Arrays.
Genauigkeit: Die Ergebnisse basieren auf der TA-Lib-Implementierung und sind auf Fließkomma-Arithmetik beschränkt. Für professionellen Handel sollte die Ausgabe immer gegen bekannte Referenzwerte validiert werden.
Konstanten: Die TRADER_MA_TYPE_*-Konstanten sind nur verfügbar, wenn die trader-Erweiterung geladen ist. Alternativ können Integer-Werte verwendet werden (z. B. 0 für SMA, 1 für EMA).