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