Start · Sprachen · PHP · Referenz · trader_maxindex

trader_maxindex

Funktion

Berechnet den Index des höchsten Werts innerhalb eines gleitenden Zeitfensters über eine Datenreihe.

Kategorie: math

Signatur

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

Beschreibung

trader_maxindex ist Teil der TRADER-Erweiterung (PHP-Bindings für die TA-Lib) und ermittelt für jeden Punkt einer Zeitreihe den Index (Position im Eingabe-Array) des höchsten Werts im jeweils vorangegangenen Zeitfenster der Länge timePeriod. Im Unterschied zu trader_max, die den eigentlichen Höchstwert zurückgibt, liefert diese Funktion den Positions-Index dieses Höchstwerts.

Typischer Einsatz ist die technische Analyse von Finanzdaten, z. B. um zu ermitteln, an welchem Datenpunkt (Handelstag) ein Hoch innerhalb einer bestimmten Periode zuletzt erreicht wurde. Das Ergebnis kann genutzt werden, um relative Stärke, Ausbruchsmuster oder Pivot-Punkte zu identifizieren.

Die Rückgabe ist ein numerisches Array, dessen Schlüssel den Positionen im Eingabe-Array entsprechen. Die ersten timePeriod - 1 Elemente fehlen im Ergebnis (sog. Lookback-Bereich), da noch kein vollständiges Zeitfenster vorhanden ist.

  • Erfordert die installierte PHP-TRADER-Erweiterung (pecl install trader).
  • Eingabewerte müssen als numerisches Array vorliegen; nicht-numerische Werte führen zu undefinierten Ergebnissen.

Parameter

Name Typ Default Beschreibung
$real Pflicht array Numerisches Array mit den Eingabewerten (z. B. Schlusskurse). Die Indizes sollten bei 0 beginnen und fortlaufend sein.
$timePeriod int 30 Länge des gleitenden Zeitfensters, innerhalb dessen der Index des höchsten Werts gesucht wird. Muss zwischen 2 und 100000 liegen.

Rückgabewert

Typ
array|false
Beschreibung
Gibt ein numerisches Array zurück, das für jede gültige Position den Index des höchsten Werts im jeweiligen Zeitfenster enthält. Die ersten timePeriod - 1 Einträge sind nicht enthalten (Lookback). Bei einem Fehler (z. B. ungültige Parameter oder leeres Array) wird false zurückgegeben.

Beispiele

Index des höchsten Schlusskurses in einem 5-Tage-Fenster

<?php
// Beispiel-Schlusskurse über 10 Handelstage
$closes = [100.0, 102.5, 98.0, 105.0, 103.0, 99.5, 107.0, 106.0, 104.5, 108.0];

// Index des Maximums im jeweils letzten 5-Tage-Fenster berechnen
$result = trader_maxindex($closes, 5);

if ($result === false) {
    echo "Fehler bei der Berechnung.\n";
} else {
    foreach ($result as $position => $maxIndex) {
        echo "Position $position: Höchster Wert zuletzt bei Index $maxIndex "
           . "(Wert: {$closes[$maxIndex]})\n";
    }
}
Position 4: Höchster Wert zuletzt bei Index 3 (Wert: 105) Position 5: Höchster Wert zuletzt bei Index 3 (Wert: 105) Position 6: Höchster Wert zuletzt bei Index 6 (Wert: 107) Position 7: Höchster Wert zuletzt bei Index 6 (Wert: 107) Position 8: Höchster Wert zuletzt bei Index 6 (Wert: 107) Position 9: Höchster Wert zuletzt bei Index 9 (Wert: 108)

Vergleich von trader_maxindex und trader_max

<?php
$preise = [50.0, 55.0, 53.0, 60.0, 58.0, 62.0, 59.0];
$periode = 3;

$indizes  = trader_maxindex($preise, $periode);
$maxWerte = trader_max($preise, $periode);

echo "Pos | Max-Index | Max-Wert\n";
foreach ($indizes as $pos => $idx) {
    printf(" %2d |    %2d     | %.2f\n", $pos, $idx, $maxWerte[$pos]);
}
Pos | Max-Index | Max-Wert 2 | 1 | 55.00 3 | 3 | 60.00 4 | 3 | 60.00 5 | 5 | 62.00 6 | 5 | 62.00

// Wichtig · Fallstricke

Lookback-Bereich: Die ersten timePeriod - 1 Indizes sind im Ergebnis-Array nicht vorhanden. Beim Zugriff auf Ergebnis-Positionen stets prüfen, ob der Schlüssel existiert (isset()), um Notice-Meldungen zu vermeiden.

TRADER-Erweiterung: Die Funktion steht nur zur Verfügung, wenn die PECL-Erweiterung trader installiert und in der php.ini geladen ist (extension=trader). Auf Produktivsystemen sollte die Verfügbarkeit per extension_loaded('trader') geprüft werden.

Ganzzahlige Indizes: Die zurückgegebenen Indexwerte beziehen sich auf die Schlüssel des Eingabe-Arrays. Bei nicht-sequenziellen Arrays kann das zu unerwartetem Verhalten führen — empfohlen wird, das Eingabe-Array vorher mit array_values() neu zu indizieren.