Signatur
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
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);
}
}
Ü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.