Start · Sprachen · PHP · Referenz · trader_cdlmorningstar

trader_cdlmorningstar

Funktion

Erkennt das Morning-Star-Candlestick-Muster in OHLC-Kursdaten und gibt ein Signal-Array zurück.

Kategorie: math

Signatur

trader_cdlmorningstar(array $open, array $high, array $low, array $close, float $penetration = 0.3): array|false

Beschreibung

Die Funktion trader_cdlmorningstar() gehört zur PECL-Erweiterung Trader, die auf der TA-Lib-Bibliothek basiert. Sie analysiert Open-High-Low-Close-Kerzenstaub-Daten (OHLC) und erkennt das klassische Morning-Star-Muster – ein dreikerziges bullisches Umkehrsignal.

Das Morning-Star-Muster besteht aus drei aufeinanderfolgenden Kerzen: einer langen bearischen Kerze, gefolgt von einem kleinen Körper (Doji oder Spinning Top) der tiefer öffnet, und schließlich einer langen bullischen Kerze, die deutlich in den Körper der ersten Kerze hineinreicht. Es gilt als eines der verlässlicheren Umkehrsignale nach einem Abwärtstrend.

Der Parameter $penetration gibt an, wie weit die dritte Kerze prozentual in den Körper der ersten Kerze eindringen muss, damit das Muster als gültig erkannt wird. Standardmäßig liegt dieser Wert bei 0.3 (30 %). Höhere Werte bedeuten ein strengeres Erkennungskriterium.

Das Rückgabe-Array enthält für jeden berechneten Zeitpunkt einen Integer-Wert: 100 steht für ein erkanntes Morning-Star-Muster (bullisches Signal), 0 bedeutet, dass kein Muster erkannt wurde. Das Array ist kürzer als das Eingabe-Array, da für die ersten Perioden keine Berechnung möglich ist (Lookback-Periode).

Parameter

Name Typ Default Beschreibung
$open Pflicht array Array mit den Eröffnungskursen (Open) in chronologischer Reihenfolge als Float-Werte.
$high Pflicht array Array mit den Höchstkursen (High) in chronologischer Reihenfolge als Float-Werte.
$low Pflicht array Array mit den Tiefstkursen (Low) in chronologischer Reihenfolge als Float-Werte.
$close Pflicht array Array mit den Schlusskursen (Close) in chronologischer Reihenfolge als Float-Werte.
$penetration float 0.3 Gibt an, wie weit (als Anteil von 0.0 bis 1.0) die dritte Kerze in den Körper der ersten Kerze eindringen muss, damit das Muster als gültig gilt. Werte zwischen 0.3 und 0.5 sind üblich.

Rückgabewert

Typ
array|false
Beschreibung
Gibt bei Erfolg ein numerisches Array zurück, das für jeden berechneten Datenpunkt einen Integer enthält: 100 für ein erkanntes Morning-Star-Muster, 0 für kein Muster. Das Array ist durch die Lookback-Periode verkürzt. Bei einem Fehler (z. B. ungültige Eingaben oder fehlende Trader-Erweiterung) wird false zurückgegeben.

Beispiele

Morning-Star-Muster in Kursdaten erkennen

<?php
// Beispiel-OHLC-Daten (z. B. 10 Tageskerzen)
$open  = [100, 98, 92, 90, 91, 95, 97, 96, 98, 100];
$high  = [102, 100, 95, 93, 94, 98, 100, 99, 101, 103];
$low   = [ 97,  90, 88, 88, 88,  92,  94,  93,  96,  98];
$close = [ 98,  91, 89, 91, 93,  96,  98,  97,  99, 101];

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

if ($result === false) {
    echo "Fehler bei der Berechnung oder Trader-Erweiterung nicht verfügbar.";
} else {
    foreach ($result as $index => $signal) {
        if ($signal !== 0) {
            echo "Morning-Star-Muster erkannt bei Index: $index (Signal: $signal)\n";
        }
    }
    if (array_sum(array_map('abs', $result)) === 0) {
        echo "Kein Morning-Star-Muster in den Daten gefunden.\n";
    }
}
Kein Morning-Star-Muster in den Daten gefunden.

Morning-Star mit angepasstem Penetration-Wert

<?php
// Strikteres Erkennungskriterium: 50% Penetration
$open  = [110, 107, 100, 98,  99, 103, 106, 105, 107, 109];
$high  = [112, 109, 103, 102, 103, 107, 109, 108, 110, 112];
$low   = [106,  99,  97,  97,  97, 100, 103, 102, 104, 106];
$close = [107, 100,  98, 100, 102, 105, 107, 106, 108, 110];

$penetration = 0.5;
$result = trader_cdlmorningstar($open, $high, $low, $close, $penetration);

if ($result !== false) {
    $signals = array_filter($result, fn($v) => $v !== 0);
    if (empty($signals)) {
        echo "Mit Penetration={$penetration}: Kein Morning-Star erkannt.\n";
    } else {
        foreach ($signals as $idx => $val) {
            echo "Signal bei Index $idx: $val\n";
        }
    }
}
Mit Penetration=0.5: Kein Morning-Star erkannt.

// Wichtig · Fallstricke

Voraussetzung: Die Funktion ist nur verfügbar, wenn die PECL-Erweiterung trader installiert und geladen ist (extension=trader.so bzw. extension=trader.dll). Sie ist nicht Teil des PHP-Kerns.

Lookback-Periode: Das Ergebnis-Array ist kürzer als die Eingabe-Arrays. Die ersten Elemente werden nicht berechnet (TA-Lib-typischer Lookback). Der Index des Ergebnis-Arrays entspricht nicht direkt dem Index der Eingabe-Arrays – beachte dies beim Zuordnen von Signalen zu konkreten Zeitpunkten.

Eingabe-Konsistenz: Alle vier OHLC-Arrays müssen exakt gleich lang sein und dieselbe Anzahl chronologisch geordneter Datenpunkte enthalten. Andernfalls gibt die Funktion false zurück.

Handels-Kontext: Das Morning-Star-Muster ist ein Indikator, kein Handelssignal. Es sollte stets mit weiteren Indikatoren (z. B. Volumen, Trendbestätigung) kombiniert werden, bevor Handelsentscheidungen getroffen werden.