Start · Sprachen · PHP · Referenz · trader_mfi

trader_mfi

Funktion

Berechnet den <code>Money Flow Index</code> (MFI), einen volumengewichteten Momentum-Indikator für die technische Analyse.

Kategorie: math

Signatur

trader_mfi(array $high, array $low, array $close, array $volume, int $timePeriod = 14): array|false

Beschreibung

Die Funktion trader_mfi() ist Teil der PECL-Erweiterung Trader, die auf der TA-Lib-Bibliothek basiert. Sie berechnet den Money Flow Index (MFI), einen technischen Indikator, der sowohl Preis- als auch Volumendaten kombiniert, um die Stärke des Geldflusses in ein Wertpapier zu messen.

Der MFI wird häufig als volumengewichteter RSI bezeichnet. Er schwankt zwischen 0 und 100. Werte über 80 gelten allgemein als Überkauft-Signal (potenzielle Korrektur), während Werte unter 20 als Überverkauft-Signal (potenzielle Erholung) interpretiert werden. Er eignet sich besonders gut zur Identifikation von Divergenzen zwischen Preis und Volumen.

Die Berechnung basiert auf dem Typical Price ((High + Low + Close) / 3) multipliziert mit dem Volumen. Dieser Rohgeldfluss wird dann über den angegebenen Zeitraum akkumuliert und zu einem Indexwert normiert.

Die Funktion gibt ein numerisches Array mit den berechneten MFI-Werten zurück. Da für die Berechnung timePeriod Datenpunkte benötigt werden, sind die ersten Werte des Arrays entsprechend versetzt (Lookback-Periode).

Parameter

Name Typ Default Beschreibung
$high Pflicht array Array mit den Höchstkursen (High-Preisen) der Kerzen/Perioden.
$low Pflicht array Array mit den Tiefstkursen (Low-Preisen) der Kerzen/Perioden.
$close Pflicht array Array mit den Schlusskursen (Close-Preisen) der Kerzen/Perioden.
$volume Pflicht array Array mit den Handelsvolumedaten der jeweiligen Perioden.
$timePeriod int 14 Anzahl der Perioden, über die der MFI berechnet wird. Standardwert ist 14. Gültige Werte liegen typischerweise zwischen 2 und 100000.

Rückgabewert

Typ
array|false
Beschreibung
Gibt ein Array mit den berechneten MFI-Werten zurück. Die Werte liegen im Bereich von 0 bis 100. Bei ungültigen Eingaben oder einem Fehler wird false zurückgegeben. Die Anzahl der Rückgabewerte ist kleiner als die Anzahl der Eingabewerte, da die ersten timePeriod Datenpunkte als Anlaufphase (Lookback) benötigt werden.

Beispiele

Einfache MFI-Berechnung mit Kursdaten

<?php
// Beispielhafte OHLCV-Daten (Open/High/Low/Close/Volume)
$high   = [44.34, 44.09, 44.15, 43.61, 44.33, 44.83, 45.10, 45.15, 43.61, 44.33, 44.83, 45.10, 45.15, 43.61, 44.83];
$low    = [43.51, 43.61, 43.81, 43.01, 43.61, 44.32, 44.41, 44.50, 43.01, 43.61, 44.32, 44.41, 44.50, 43.01, 44.32];
$close  = [44.34, 44.09, 44.15, 43.61, 44.33, 44.83, 45.10, 45.15, 43.61, 44.33, 44.83, 45.10, 45.15, 43.61, 44.83];
$volume = [22400, 17400, 23000, 19500, 26000, 28000, 31000, 20000, 19500, 26000, 28000, 31000, 20000, 19500, 28000];

$timePeriod = 14;

$result = trader_mfi($high, $low, $close, $volume, $timePeriod);

if ($result === false) {
    echo 'Fehler bei der MFI-Berechnung.' . PHP_EOL;
} else {
    foreach ($result as $index => $mfi) {
        printf('Periode %d: MFI = %.2f%s', $index, $mfi, PHP_EOL);
    }
}
Periode 14: MFI = 72.73

Überkauft/Überverkauft-Signale erkennen

<?php
// Simulierte Kursdaten mit 20 Perioden
$high   = [10,11,12,13,14,15,16,17,18,19,20,19,18,17,16,15,14,13,12,11];
$low    = [9, 10,11,12,13,14,15,16,17,18,19,18,17,16,15,14,13,12,11,10];
$close  = [9.5,10.5,11.5,12.5,13.5,14.5,15.5,16.5,17.5,18.5,19.5,18.5,17.5,16.5,15.5,14.5,13.5,12.5,11.5,10.5];
$volume = [1000,1200,1500,1800,2000,2200,2500,2800,3000,3200,2800,2500,2200,2000,1800,1500,1200,1000,800,600];

$mfiValues = trader_mfi($high, $low, $close, $volume, 14);

if ($mfiValues !== false) {
    foreach ($mfiValues as $i => $mfi) {
        $signal = '';
        if ($mfi >= 80) {
            $signal = ' ⚠ ÜBERKAUFT';
        } elseif ($mfi <= 20) {
            $signal = ' ⚠ ÜBERVERKAUFT';
        }
        printf('Index %d: MFI = %.2f%s%s', $i, $mfi, $signal, PHP_EOL);
    }
}

// Wichtig · Fallstricke

Voraussetzung: Die PECL-Erweiterung trader muss installiert und aktiviert sein (pecl install trader und extension=trader.so in der php.ini).

Array-Länge: Alle vier Eingabe-Arrays ($high, $low, $close, $volume) müssen dieselbe Länge haben und mindestens timePeriod + 1 Elemente enthalten, da sonst false zurückgegeben wird.

Lookback-Periode: Die Rückgabe enthält weniger Werte als die Eingabe. Der erste gültige MFI-Wert erscheint erst nach timePeriod Datenpunkten. Die Array-Indizes der Ausgabe entsprechen dem Versatz in den Eingabedaten.

Interpretation: MFI > 80 gilt als Überkauft-Zone, MFI < 20 als Überverkauft-Zone. Divergenzen zwischen MFI und Kursverlauf können auf bevorstehende Trendwenden hindeuten.