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