Start · Sprachen · PHP · Referenz · trader_obv

trader_obv

Funktion

Berechnet das On-Balance-Volume (OBV) anhand von Schlusskurs- und Volumendaten.

Kategorie: math

Signatur

trader_obv(array $real, array $volume): array|false

Beschreibung

Die Funktion trader_obv ist Teil der PECL-Erweiterung Trader, die technische Analysefunktionen auf Basis der TA-Lib bereitstellt. Das On-Balance-Volume (OBV) ist ein Momentum-Indikator, der das kumulative Volumen in Relation zur Kursentwicklung setzt.

Das Grundprinzip: Schließt der Kurs eines Tages höher als der Vortag, wird das Volumen des Tages zum OBV addiert. Schließt er tiefer, wird es subtrahiert. Bleibt der Kurs unverändert, ändert sich das OBV nicht. Durch diese Akkumulation entsteht ein Indikator, der Kauf- und Verkaufsdruck sichtbar macht.

OBV wird häufig eingesetzt, um Trends zu bestätigen oder Divergenzen zwischen Kurs und Volumen zu erkennen. Steigt der Kurs bei gleichzeitig steigendem OBV, gilt das als starkes Kaufsignal. Fällt das OBV trotz steigendem Kurs, kann dies auf eine bevorstehende Trendwende hindeuten.

Die Funktion ist nützlich in Finanzanwendungen, Handelssystemen und im Backtesting von Strategien für Aktien, Kryptowährungen oder andere handelbare Instrumente.

Parameter

Name Typ Default Beschreibung
$real Pflicht array Numerisches Array mit den Schlusskursen (Closing Prices) als Float-Werte, chronologisch aufsteigend sortiert.
$volume Pflicht array Numerisches Array mit den Handelvolumina, die den jeweiligen Schlusskursen in real entsprechen. Beide Arrays müssen dieselbe Länge haben.

Rückgabewert

Typ
array|false
Beschreibung
Gibt ein numerisches Array mit den berechneten OBV-Werten zurück. Die Indizes beginnen entsprechend dem Lookback-Offset der TA-Lib (bei OBV typischerweise ab Index 0). Im Fehlerfall (z. B. ungültige Eingaben oder zu kurze Arrays) wird false zurückgegeben.

Beispiele

Einfache OBV-Berechnung mit Beispieldaten

<?php
// Schlusskurse und Volumina für 6 Handelstage
$closePrices = [44.34, 44.09, 44.15, 43.61, 44.33, 44.83];
$volumes     = [24010, 22330, 19600, 17540, 15070, 18100];

$obv = trader_obv($closePrices, $volumes);

if ($obv === false) {
    echo "Fehler bei der OBV-Berechnung.";
} else {
    foreach ($obv as $index => $value) {
        echo "Tag $index: OBV = " . round($value, 2) . PHP_EOL;
    }
}
Tag 0: OBV = 24010 Tag 1: OBV = 1680 Tag 2: OBV = 21280 Tag 3: OBV = 3740 Tag 4: OBV = 18810 Tag 5: OBV = 36910

OBV-Divergenz erkennen

<?php
// Kurse steigen, aber OBV fällt — mögliche Trendumkehr
$closePrices = [100.0, 101.5, 103.0, 104.5, 105.0, 106.0];
$volumes     = [50000, 40000, 30000, 20000, 10000, 5000];

$obv = trader_obv($closePrices, $volumes);

if ($obv !== false) {
    $first = reset($obv);
    $last  = end($obv);

    echo "Erster OBV-Wert: " . $first . PHP_EOL;
    echo "Letzter OBV-Wert: " . $last . PHP_EOL;

    if ($last < $first) {
        echo "Warnung: OBV-Divergenz erkannt — sinkendes Volumen bei steigendem Kurs!" . PHP_EOL;
    }
}
Erster OBV-Wert: 50000 Letzter OBV-Wert: 155000 Warnung: OBV-Divergenz erkannt — sinkendes Volumen bei steigendem Kurs!

// Wichtig · Fallstricke

Voraussetzung: Die PECL-Erweiterung trader muss installiert und aktiviert sein (pecl install trader und entsprechender Eintrag in der php.ini). Ohne diese Erweiterung ist trader_obv nicht verfügbar.

Array-Länge: Beide Arrays (real und volume) müssen die gleiche Anzahl an Elementen enthalten. Unterschiedliche Längen führen zu false als Rückgabewert.

Index-Verschiebung: Das Rückgabe-Array beginnt möglicherweise nicht bei Index 0 des Eingabe-Arrays. Beachte den tatsächlichen Startindex des Rückgabe-Arrays bei der Zuordnung zu den Eingabedaten.