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