Signatur
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
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);
}
}
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";
}
// 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.