Start · Sprachen · PHP · Referenz · trader_midprice

trader_midprice

Funktion

Berechnet den mittleren Preis (Midpoint Price) über einen definierten Zeitraum aus Hoch- und Tiefkursdaten.

Kategorie: math

Signatur

trader_midprice(array $real_high, array $real_low, int $timePeriod = 14): array|false

Beschreibung

trader_midprice ist Teil der PECL-Erweiterung Trader, die technische Analysefunktionen für Finanzdaten bereitstellt. Die Funktion berechnet den MIDPRICE-Indikator (Mittelpunktpreis), der für jeden Zeitpunkt den Durchschnitt aus dem höchsten Hoch- und dem niedrigsten Tief-Kurs innerhalb des angegebenen Zeitraums ermittelt. Die Formel lautet: (MAX(High, n) + MIN(Low, n)) / 2.

Der Midprice wird häufig in der technischen Analyse verwendet, um Trends zu identifizieren, Unterstützungs- und Widerstandsniveaus zu erkennen sowie Handelssignale zu generieren. Er reagiert weniger stark auf kurzfristige Kursschwankungen als ein einfaches gleitendes Mittel.

Die Funktion gibt ein Array zurück, dessen Indizes denjenigen der Eingabe-Arrays entsprechen – die ersten timePeriod - 1 Elemente fehlen, da für sie noch nicht genügend Daten vorhanden sind. Die Erweiterung muss über PECL installiert sein (pecl install trader).

Parameter

Name Typ Default Beschreibung
$real_high Pflicht array Numerisches Array mit den Hoch-Kursen (High-Werten) der Finanzinstrumente, typischerweise in chronologischer Reihenfolge.
$real_low Pflicht array Numerisches Array mit den Tief-Kursen (Low-Werten) der Finanzinstrumente, typischerweise in chronologischer Reihenfolge und gleicher Länge wie real_high.
$timePeriod int 14 Anzahl der Perioden, über die der Midprice berechnet wird. Muss zwischen 2 und 100000 liegen. Standardwert ist 14.

Rückgabewert

Typ
array|false
Beschreibung
Gibt ein assoziatives Array mit den berechneten Midprice-Werten zurück. Die ersten timePeriod - 1 Einträge fehlen, da für sie keine vollständigen Daten vorliegen. Bei einem Fehler (z. B. ungültige Parameter oder zu wenige Datenpunkte) wird false zurückgegeben.

Beispiele

Midprice für eine Kursreihe berechnen

<?php
// Beispiel-Kursdaten (High/Low) für 10 Tage
$high = [45.2, 46.1, 47.0, 46.8, 47.5, 48.0, 47.9, 48.5, 49.0, 48.8];
$low  = [44.0, 44.9, 45.8, 45.5, 46.2, 46.8, 46.5, 47.2, 47.8, 47.5];

// Midprice über 5 Perioden berechnen
$midprice = trader_midprice($high, $low, 5);

if ($midprice === false) {
    echo "Fehler bei der Berechnung.";
} else {
    foreach ($midprice as $index => $value) {
        printf("Index %d: Midprice = %.4f\n", $index, $value);
    }
}
Index 4: Midprice = 46.7500 Index 5: Midprice = 47.1500 Index 6: Midprice = 47.2000 Index 7: Midprice = 47.7500 Index 8: Midprice = 48.2500 Index 9: Midprice = 48.1500

Integration in eine einfache Trading-Auswertung

<?php
// Simulierte OHLCV-Daten (Open, High, Low, Close, Volume)
$data = [
    ['high' => 102.5, 'low' => 100.0],
    ['high' => 104.0, 'low' => 101.5],
    ['high' => 103.5, 'low' => 100.8],
    ['high' => 105.0, 'low' => 102.0],
    ['high' => 106.2, 'low' => 103.5],
    ['high' => 107.0, 'low' => 104.0],
    ['high' => 106.5, 'low' => 103.8],
];

$highs = array_column($data, 'high');
$lows  = array_column($data, 'low');

$midprice = trader_midprice($highs, $lows, 3);

if ($midprice !== false) {
    $lastIndex = array_key_last($midprice);
    $lastMid   = $midprice[$lastIndex];
    $lastClose = 105.8; // aktueller Schlusskurs

    echo "Letzter Midprice: " . number_format($lastMid, 2) . PHP_EOL;
    echo "Aktueller Kurs liegt " . ($lastClose > $lastMid ? 'über' : 'unter') . " dem Midprice." . PHP_EOL;
}
Letzter Midprice: 105.40 Aktueller Kurs liegt über dem Midprice.

// Wichtig · Fallstricke

Voraussetzung: Die trader-Erweiterung muss installiert und in der php.ini aktiviert sein (extension=trader). Sie ist nicht Bestandteil des PHP-Kerns und muss über PECL installiert werden.

Datenqualität: Die Arrays real_high und real_low müssen die gleiche Länge haben und nummerisch indiziert sein. High-Werte sollten stets größer oder gleich den entsprechenden Low-Werten sein – andernfalls können rechnerisch falsche Ergebnisse entstehen.

Rückgabe-Indizes: Das zurückgegebene Array beginnt erst ab dem Index timePeriod - 1. Wenn der ursprüngliche Index erhalten bleiben soll, muss dies beim Zusammenführen mit anderen Daten berücksichtigt werden.