Start · Sprachen · PHP · Referenz · trader_cdlmarubozu

trader_cdlmarubozu

Funktion

Erkennt das Marubozu-Candlestick-Muster in OHLC-Kursdaten und gibt ein Array mit Musterwerten zurück.

Kategorie: math

Signatur

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

Beschreibung

trader_cdlmarubozu ist Teil der TRADER-Erweiterung für PHP, die auf der TA-Lib (Technical Analysis Library) basiert. Die Funktion analysiert Kursdaten im OHLC-Format (Open, High, Low, Close) und erkennt das sogenannte Marubozu-Kerzenmuster.

Ein Marubozu ist eine Kerze ohne (oder mit sehr kurzen) Dochten bzw. Schatten. Der Eröffnungs- und Schlusskurs liegen nahezu exakt am Hoch oder Tief der Kerze. Ein bullisches Marubozu (positiver Wert, z. B. 100) öffnet am Tagestief und schließt am Tageshoch – ein starkes Kaufsignal. Ein bärisches Marubozu (negativer Wert, z. B. -100) öffnet am Tageshoch und schließt am Tagestief – ein starkes Verkaufssignal.

Das Rückgabe-Array hat dieselbe Länge wie die Eingabe-Arrays, enthält am Anfang jedoch eine Anlaufphase (lookback period) mit dem Wert 0. Erkannte Muster werden mit 100 (bullisch) oder -100 (bärisch) codiert, alle anderen Positionen erhalten den Wert 0.

Die Funktion eignet sich für technische Analyse-Anwendungen, automatisierte Trading-Systeme oder Backtesting-Umgebungen, bei denen starke Trendsignal-Kerzen identifiziert werden sollen.

Parameter

Name Typ Default Beschreibung
$open Pflicht array Array mit den Eröffnungskursen der Kerzen (numerisch indiziert, chronologisch geordnet).
$high Pflicht array Array mit den Tageshöchstkursen der Kerzen (gleiche Länge und Reihenfolge wie open).
$low Pflicht array Array mit den Tagestiefskursen der Kerzen (gleiche Länge und Reihenfolge wie open).
$close Pflicht array Array mit den Schlusskursen der Kerzen (gleiche Länge und Reihenfolge wie open).

Rückgabewert

Typ
array|false
Beschreibung
Gibt ein numerisches Array zurück, das für jede Eingabekerze einen Wert enthält: 100 für ein erkanntes bullisches Marubozu, -100 für ein bärisches Marubozu und 0 für keine Erkennung. Die ersten Elemente (Anlaufphase) sind immer 0. Bei einem Fehler (z. B. ungültige Eingaben oder nicht geladene TRADER-Erweiterung) wird false zurückgegeben.

Beispiele

Einfache Erkennung von Marubozu-Kerzen in historischen Kursdaten

<?php
// Beispiel-OHLC-Daten (z. B. Tageskerzen einer Aktie)
$open  = [100.0, 102.0, 105.0, 110.0, 108.0];
$high  = [103.0, 106.0, 105.0, 115.0, 112.0];
$low   = [99.0,  101.0, 105.0, 110.0, 105.0];
$close = [102.0, 105.0, 105.0, 115.0, 108.0];

// Kerze 3 (Index 2): Open=105, High=105, Low=105, Close=105 -> kein echter Marubozu
// Kerze 4 (Index 3): Open=110, High=115, Low=110, Close=115 -> bullisches Marubozu!

$result = trader_cdlmarubozu($open, $high, $low, $close);

if ($result === false) {
    echo 'Fehler: TRADER-Erweiterung nicht verfügbar oder ungültige Eingaben.';
} else {
    foreach ($result as $index => $value) {
        if ($value === 100) {
            echo "Bullisches Marubozu an Position $index\n";
        } elseif ($value === -100) {
            echo "Bärisches Marubozu an Position $index\n";
        }
    }
}
Bullisches Marubozu an Position 3

Integration in ein einfaches Backtesting-System

<?php
// Simulierte Kursdaten für 7 Tage
$open  = [50.0, 51.0, 53.0, 52.0, 55.0, 60.0, 58.0];
$high  = [52.0, 55.0, 54.0, 56.0, 55.0, 65.0, 62.0];
$low   = [49.0, 50.0, 52.0, 51.0, 55.0, 60.0, 55.0];
$close = [51.0, 53.0, 53.5, 55.0, 55.0, 65.0, 58.0];

// Kerze 5 (Index 5): Open=60, High=65, Low=60, Close=65 -> bullisches Marubozu!

$signals = trader_cdlmarubozu($open, $high, $low, $close);

if (is_array($signals)) {
    $dates = ['2024-01-01','2024-01-02','2024-01-03','2024-01-04','2024-01-05','2024-01-06','2024-01-07'];
    foreach ($signals as $i => $sig) {
        $typ = match($sig) {
            100  => 'KAUF (bullisches Marubozu)',
            -100 => 'VERKAUF (bärisches Marubozu)',
            default => null
        };
        if ($typ !== null) {
            echo "{$dates[$i]}: Signal = $typ\n";
        }
    }
}
2024-01-06: Signal = KAUF (bullisches Marubozu)

// Wichtig · Fallstricke

Voraussetzung: Die PHP-TRADER-Erweiterung (php_trader) muss installiert und in der php.ini aktiviert sein. Sie ist nicht standardmäßig in PHP enthalten und muss über PECL oder als vorkompilierte DLL/SO eingebunden werden.

Toleranzschwelle: TA-Lib verwendet intern konfigurierbare Toleranzwerte (Compatibility- und TA-Function-Parameter), um zu bestimmen, wie lang ein Docht maximal sein darf, damit eine Kerze noch als Marubozu gilt. Diese Parameter können über trader_set_compat() und trader_set_unstable_period() angepasst werden.

Array-Länge: Alle vier Eingabe-Arrays müssen exakt gleich lang sein, sonst gibt die Funktion false zurück. Das Rückgabe-Array hat dieselbe Länge wie die Eingabe-Arrays.