Start · Sprachen · PHP · Referenz · trader_bbands

trader_bbands

Funktion

Berechnet die Bollinger-Bänder (oberes, mittleres und unteres Band) für eine Zeitreihe von Kursdaten.

Kategorie: math

Signatur

trader_bbands(array $real, int $timePeriod = 5, float $nbDevUp = 2.0, float $nbDevDn = 2.0, int $mAType = TRADER_MA_TYPE_SMA): array|false

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

Typ
array|false
Beschreibung
Bei Erfolg ein assoziatives Array mit drei Schlüsseln: 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]
        );
    }
}
Index 19 | Upper: 45.4532 | Middle: 44.4485 | Lower: 43.4438 Index 20 | Upper: 45.4520 | Middle: 44.4420 | Lower: 43.4320 ...

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;
    }
}
Letzter Schlusskurs: 43.61 Unteres Band: 43.2918 Oberes Band: 45.5322 Signal: Kurs innerhalb der Bollinger-Bänder – kein klares Signal.

// 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).