Start · Sprachen · PHP · Referenz · trader_minmax

trader_minmax

Funktion

Ermittelt den niedrigsten und höchsten Wert über einen definierten Zeitraum (Lookback-Periode) aus einem Eingabe-Array mit Finanzdaten.

Kategorie: math

Signatur

trader_minmax(array $real, int $timePeriod = 30): array|false

Beschreibung

trader_minmax() ist Teil der PECL-Erweiterung Trader, die technische Analyse-Indikatoren für Finanzdaten bereitstellt. Die Funktion analysiert ein Array von Kurswerten und gibt für jeden Zeitpunkt (ab Ende der Lookback-Periode) gleichzeitig den Tiefstwert (Min) und den Höchstwert (Max) zurück, die innerhalb des angegebenen Zeitfensters aufgetreten sind.

Das Ergebnis ist ein assoziatives Array mit zwei Schlüsseln: 'min' enthält die Minima und 'max' enthält die Maxima als jeweils numerisch indizierte Arrays. Die Ausgabe-Arrays sind kürzer als die Eingabe, da die ersten timePeriod - 1 Elemente keine vollständige Periode abdecken und daher weggelassen werden (Lookback).

Typische Anwendungsgebiete sind die technische Analyse von Aktien-, Forex- oder Kryptowährungsdaten, z. B. zur Berechnung von Donchian-Kanälen, zur Identifikation von Unterstützungs- und Widerstandsniveaus oder zur Implementierung von Ausbruchsstrategien.

Die Funktion entspricht intern der TA-Lib-Funktion MINMAX und ist gegenüber einer manuellen PHP-Schleife für große Datensätze erheblich performanter, da die Berechnung in nativem C-Code erfolgt.

Parameter

Name Typ Default Beschreibung
$real Pflicht array Ein numerisch indiziertes Array mit Fließkommazahlen (z. B. Schlusskurse). Die Werte sollten chronologisch geordnet sein (ältester Wert zuerst).
$timePeriod int 30 Die Anzahl der Datenpunkte (Perioden), über die Minimum und Maximum bestimmt werden. Muss mindestens 2 sein. Standardwert ist 30.

Rückgabewert

Typ
array|false
Beschreibung
Gibt bei Erfolg ein assoziatives Array mit den Schlüsseln 'min' und 'max' zurück, wobei jeder Wert ein numerisch indiziertes Array der berechneten Tief- bzw. Höchstwerte ist. Die Arrays beginnen am Index timePeriod - 1 des Eingabe-Arrays. Bei einem Fehler (z. B. ungültige Parameter oder zu kurzes Eingabe-Array) wird false zurückgegeben.

Beispiele

Grundlegende Verwendung mit Schlusskursen

<?php
// Beispiel-Schlusskurse einer Aktie (10 Tage)
$closes = [100.0, 102.5, 101.0, 98.5, 97.0, 99.5, 103.0, 104.5, 102.0, 105.0];

// Minimum und Maximum über 3 Perioden berechnen
$result = trader_minmax($closes, 3);

if ($result !== false) {
    echo "Minima (3-Perioden): ";
    print_r($result['min']);
    echo "Maxima (3-Perioden): ";
    print_r($result['max']);
} else {
    echo "Fehler bei der Berechnung.";
}
Minima (3-Perioden): Array ( [2] => 101 [3] => 98.5 [4] => 97 [5] => 97 [6] => 97 [7] => 99.5 [8] => 102 [9] => 102 ) Maxima (3-Perioden): Array ( [2] => 102.5 [3] => 102.5 [4] => 101 [5] => 99.5 [6] => 103 [7] => 104.5 [8] => 104.5 [9] => 105 )

Donchian-Kanal für eine Trading-Strategie

<?php
// Simulierte 20-Tage-Hochs und -Tiefs (typisch für Donchian-Kanal)
$prices = [
    50.2, 51.0, 49.8, 52.3, 53.1, 51.5, 50.0, 48.9, 49.5, 50.8,
    51.2, 52.0, 53.5, 54.1, 53.0, 52.5, 51.8, 53.2, 54.8, 55.0,
    54.5, 53.9, 55.3
];

$period = 20;
$result = trader_minmax($prices, $period);

if ($result !== false) {
    // Letzten Kanal-Wert ausgeben
    $lastIndex = array_key_last($result['min']);
    $channelMin = $result['min'][$lastIndex];
    $channelMax = $result['max'][$lastIndex];
    $lastPrice  = $prices[$lastIndex];

    echo "Letzter Kurs:       {$lastPrice}\n";
    echo "Donchian-Tief ({$period}):  {$channelMin}\n";
    echo "Donchian-Hoch ({$period}):  {$channelMax}\n";

    if ($lastPrice >= $channelMax) {
        echo "Signal: Ausbruch nach oben — möglicher Kaufeinstieg!\n";
    } elseif ($lastPrice <= $channelMin) {
        echo "Signal: Ausbruch nach unten — möglicher Verkauf/Short!\n";
    } else {
        echo "Signal: Kurs innerhalb des Kanals — kein klares Signal.\n";
    }
}
Letzter Kurs: 55.3 Donchian-Tief (20): 48.9 Donchian-Hoch (20): 55.3 Signal: Ausbruch nach oben — möglicher Kaufeinstieg!

// Wichtig · Fallstricke

Voraussetzung: Die PECL-Erweiterung trader muss installiert und in der php.ini aktiviert sein (extension=trader). Ohne diese Erweiterung ist die Funktion nicht verfügbar.

Lookback: Die Ausgabe-Arrays enthalten count($real) - timePeriod + 1 Elemente. Die ersten timePeriod - 1 Indizes sind nicht im Ergebnis enthalten. Achte darauf, die Indizes der Ausgabe korrekt auf die Eingabe-Daten zurückzuführen.

Fehlerbehandlung: Bei zu kurzem Eingabe-Array (weniger Elemente als timePeriod) oder ungültigen Parametern gibt die Funktion false zurück. Mit trader_errno() kann der genaue Fehlercode abgefragt werden.

Kompatible Funktion: Wenn nur Minimum oder Maximum benötigt wird, können stattdessen trader_min() bzw. trader_max() verwendet werden, die intern dieselbe TA-Lib-Berechnung nutzen, aber nur einen Wert zurückliefern.