Start · Sprachen · PHP · Referenz · trader_bop

trader_bop

Funktion

Berechnet die <code>Balance of Power</code> (BOP) – einen technischen Indikator, der die Stärke von Käufern gegenüber Verkäufern misst.

Kategorie: math

Signatur

trader_bop(array $open, array $high, array $low, array $close): array|false

Beschreibung

Die Funktion trader_bop() gehört zur PECL-Erweiterung Trader, die eine PHP-Anbindung an die TA-Lib (Technical Analysis Library) bereitstellt. Sie berechnet den Indikator Balance of Power, der das Verhältnis zwischen Kaufdruck und Verkaufsdruck in einem Zeitraum quantifiziert.

Die Formel lautet: BOP = (Close - Open) / (High - Low). Der resultierende Wert liegt üblicherweise zwischen -1 und +1. Ein positiver Wert signalisiert, dass Käufer dominieren; ein negativer Wert zeigt die Dominanz der Verkäufer an. Liegt der Wert nahe 0, herrscht ein Gleichgewicht.

Typische Einsatzbereiche sind Handelssysteme und Finanzanalyse-Anwendungen, bei denen historische OHLC-Daten (Open, High, Low, Close) ausgewertet werden sollen. Der Indikator eignet sich besonders zur Trendbestätigung und zur Identifikation von Divergenzen zwischen Kurs und Kaufdruck.

Die Eingabe-Arrays müssen dieselbe Länge haben und in chronologischer Reihenfolge vorliegen. Die zurückgegebenen Werte sind auf die nutzbaren Perioden beschränkt – Anfangswerte, für die keine Berechnung möglich ist, werden weggelassen.

Parameter

Name Typ Default Beschreibung
$open Pflicht array Array mit den Eröffnungskursen (OHLC-Daten) in chronologischer Reihenfolge.
$high Pflicht array Array mit den Tageshöchstkursen in chronologischer Reihenfolge.
$low Pflicht array Array mit den Tagestiefkursen in chronologischer Reihenfolge.
$close Pflicht array Array mit den Schlusskursen in chronologischer Reihenfolge.

Rückgabewert

Typ
array|false
Beschreibung
Gibt ein Array mit den berechneten BOP-Werten (Gleitkommazahlen) zurück. Die Anzahl der Elemente kann kleiner sein als die der Eingabe-Arrays, da Anfangswerte ohne ausreichende Datenbasis entfallen. Im Fehlerfall (z. B. Arrays unterschiedlicher Länge oder ungültige Eingaben) wird false zurückgegeben.

Beispiele

Einfache BOP-Berechnung mit historischen Kursdaten

<?php
// OHLC-Kursdaten (Open, High, Low, Close)
$open  = [100.0, 102.5, 101.0, 103.0, 104.5];
$high  = [105.0, 106.0, 104.5, 107.0, 108.0];
$low   = [ 98.0,  99.5, 100.0, 101.5, 102.0];
$close = [103.0, 100.0, 103.5, 106.0, 105.5];

$bop = trader_bop($open, $high, $low, $close);

if ($bop === false) {
    echo "Fehler bei der BOP-Berechnung.\n";
} else {
    foreach ($bop as $index => $value) {
        printf("Periode %d: BOP = %.4f\n", $index + 1, $value);
    }
}
Periode 1: BOP = 0.4286 Periode 2: BOP = -0.3846 Periode 3: BOP = 0.5556 Periode 4: BOP = 0.5455 Periode 5: BOP = 0.1667

BOP-Auswertung zur Trendanalyse

<?php
// Simulierte Tageskurse über 7 Handelstage
$open  = [50.0, 51.0, 52.0, 51.5, 53.0, 54.0, 53.5];
$high  = [55.0, 56.0, 56.5, 55.0, 57.0, 58.0, 57.5];
$low   = [48.0, 49.0, 50.5, 50.0, 52.0, 53.0, 52.5];
$close = [54.0, 55.5, 51.0, 54.5, 56.5, 55.0, 57.0];

$bop = trader_bop($open, $high, $low, $close);

if ($bop !== false) {
    $positiv = array_filter($bop, fn($v) => $v > 0);
    $negativ = array_filter($bop, fn($v) => $v < 0);

    echo "Kaufdruck-Perioden:  " . count($positiv) . "\n";
    echo "Verkaufsdruck-Perioden: " . count($negativ) . "\n";
    echo "Durchschnittlicher BOP: " . round(array_sum($bop) / count($bop), 4) . "\n";
}
Kaufdruck-Perioden: 5 Verkaufsdruck-Perioden: 2 Durchschnittlicher BOP: 0.3095

// Wichtig · Fallstricke

Voraussetzung: Die PECL-Erweiterung trader muss installiert und in der php.ini aktiviert sein (extension=trader). Sie ist nicht standardmäßig in PHP enthalten.

Division durch null: Wenn High und Low identisch sind (Nenner = 0), kann es zu undefiniertem Verhalten oder NaN-Werten kommen. Solche Datenpunkte sollten vor der Berechnung geprüft und bereinigt werden.

Die Eingabe-Arrays müssen exakt dieselbe Länge besitzen, andernfalls gibt die Funktion false zurück. Numerische Array-Schlüssel werden dabei ignoriert; es zählt nur die Reihenfolge der Werte.