Start · Sprachen · PHP · Referenz · trader_sub

trader_sub

Funktion

Subtrahiert zwei Vektoren elementweise und gibt ein Array mit den Differenzwerten zurück.

Kategorie: math

Signatur

trader_sub(array $real0, array $real1): array|false

Beschreibung

trader_sub gehört zur TRADER-Erweiterung (Technical Analysis for Traders) und berechnet die elementweise Differenz zweier numerischer Arrays gleicher Länge. Für jeden Index i gilt: result[i] = real0[i] - real1[i].

Die Funktion wird typischerweise in der technischen Finanzanalyse eingesetzt, um z. B. Spread-Kurven zwischen zwei Wertpapierkursen, die Differenz zwischen zwei Indikatoren (etwa MACD-Signal und MACD-Linie) oder allgemein beliebige vektorbasierte Subtraktionen auf Zeitreihendaten zu berechnen.

Das Ergebnis-Array kann eine kürzere Länge als die Eingabe-Arrays haben, da die TRADER-Bibliothek intern einen sogenannten Lookback-Offset verwendet und führende Werte, für die kein vollständiges Ergebnis berechnet werden konnte, im Ausgabe-Array weggelassen werden. Bei trader_sub ist der Lookback jedoch 0, sodass die Ausgabe dieselbe Länge wie die Eingabe hat.

Gibt die Funktion false zurück, deutet das auf ungültige oder inkonsistente Eingabedaten hin (z. B. Arrays unterschiedlicher Länge oder leere Arrays).

Parameter

Name Typ Default Beschreibung
$real0 Pflicht array Das erste numerische Eingabe-Array (Minuend). Enthält typischerweise Kurs- oder Indikatorwerte als Fließkommazahlen.
$real1 Pflicht array Das zweite numerische Eingabe-Array (Subtrahend). Muss dieselbe Länge wie real0 haben.

Rückgabewert

Typ
array|false
Beschreibung
Gibt ein numerisches Array zurück, das die elementweisen Differenzen enthält (real0[i] - real1[i]). Bei einem Fehler (z. B. ungültige Eingaben) wird false zurückgegeben.

Beispiele

Einfache elementweise Subtraktion zweier Kurs-Arrays

<?php
// Schlusskurse von Wertpapier A und Wertpapier B
$kurseA = [100.5, 102.0, 103.5, 101.0, 99.5];
$kurseB = [ 98.0,  99.5, 100.0,  97.5, 96.0];

// Spread zwischen den beiden Wertpapieren berechnen
$spread = trader_sub($kurseA, $kurseB);

if ($spread === false) {
    echo "Fehler bei der Berechnung.\n";
} else {
    foreach ($spread as $index => $wert) {
        printf("Index %d: Spread = %.2f\n", $index, $wert);
    }
}
Index 0: Spread = 2.50 Index 1: Spread = 2.50 Index 2: Spread = 3.50 Index 3: Spread = 3.50 Index 4: Spread = 3.50

Differenz zweier Indikatoren (z. B. MACD-Histogramm manuell)

<?php
// Simulierte EMA-12 und EMA-26 Werte (Ausschnitt)
$ema12 = [150.2, 151.5, 152.8, 150.0, 148.5];
$ema26 = [149.0, 149.8, 151.0, 149.5, 148.0];

// MACD-Linie = EMA(12) - EMA(26)
$macdLinie = trader_sub($ema12, $ema26);

if ($macdLinie !== false) {
    echo "MACD-Werte:\n";
    foreach ($macdLinie as $i => $val) {
        printf("  [%d] %.4f\n", $i, $val);
    }
} else {
    echo "Fehler: Ungültige Eingabedaten.\n";
}
MACD-Werte: [0] 1.2000 [1] 1.7000 [2] 1.8000 [3] 0.5000 [4] 0.5000

// Wichtig · Fallstricke

Voraussetzung: Die TRADER-Erweiterung muss installiert und aktiviert sein. Unter Linux kann sie über PECL installiert werden: pecl install trader. Anschließend muss in der php.ini der Eintrag extension=trader hinzugefügt werden.

Array-Indizes: Die TRADER-Funktionen geben Arrays zurück, deren Schlüssel nicht unbedingt bei 0 beginnen müssen. Bei Funktionen mit einem Lookback-Offset > 0 beginnt der erste Schlüssel des Ergebnis-Arrays erst beim Index des ersten berechneten Wertes. Bei trader_sub ist der Lookback 0, daher beginnt das Ergebnis-Array bei Index 0.

Eingabe-Validierung: Arrays unterschiedlicher Länge oder nicht-numerische Werte können zu false als Rückgabewert führen. Es empfiehlt sich daher, die Eingabe-Arrays vor dem Aufruf zu validieren.