Signatur
Beschreibung
trader_log10 ist Teil der TRADER-Erweiterung (Technical Analysis for Traders) und wendet die mathematische Funktion log₁₀ elementweise auf ein Array von Fließkommazahlen an. Das Ergebnis ist ein neues Array, das für jeden Eingabewert x den Wert log10(x) enthält.
Die Funktion wird typischerweise in der technischen Finanzanalyse eingesetzt, um Preis- oder Volumenreihen zu transformieren, Skalen zu normalisieren oder nichtlineare Zusammenhänge zu linearisieren. Da der dekadische Logarithmus nur für positive Werte definiert ist, müssen alle Elemente des Eingabe-Arrays größer als 0 sein.
Intern nutzt die TRADER-Erweiterung die TA-Lib-Bibliothek, die C-basierte Hochleistungsberechnungen für Zeitreihendaten bereitstellt. Das zurückgegebene Array kann weniger Elemente enthalten als das Eingabe-Array, da TA-Lib am Anfang der Reihe einen sogenannten Lookback-Bereich reserviert (bei trader_log10 ist der Lookback jedoch 0, d. h. die Ausgabe hat dieselbe Länge wie die Eingabe).
Sinnvoll ist die Funktion immer dann, wenn man eine Folge von Messwerten logarithmisch skalieren möchte, ohne eine eigene Schleife mit log10() zu schreiben – die TRADER-Implementierung ist für große Vektoren erheblich performanter.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $real Pflicht | array | Eindimensionales Array mit numerischen Werten (Fließkommazahlen). Alle Werte müssen strikt positiv sein (größer als 0), da der Logarithmus für 0 und negative Zahlen nicht definiert ist. |
Rückgabewert
false zurückgegeben.Beispiele
Einfache Logarithmus-Transformation eines Preis-Arrays
<?php
// Schlusskurse einer Aktie über 5 Tage
$closePrices = [100.0, 200.0, 1000.0, 50.0, 10.0];
$result = trader_log10($closePrices);
if ($result === false) {
echo 'Fehler bei der Berechnung.';
} else {
foreach ($result as $index => $value) {
printf("log10(%.2f) = %.6f\n", $closePrices[$index], $value);
}
}
Logarithmische Normalisierung von Handelvolumina
<?php
// Sehr große Volumenwerte, die normalisiert werden sollen
$volumes = [1500000, 3200000, 780000, 9100000, 450000];
$logVolumes = trader_log10($volumes);
if ($logVolumes !== false) {
echo "Originale Volumina => Log10-Werte:" . PHP_EOL;
foreach ($logVolumes as $i => $logVal) {
printf(" %9d => %.4f\n", $volumes[$i], $logVal);
}
} else {
echo 'Berechnung fehlgeschlagen.';
}
// Wichtig · Fallstricke
Positive Werte erforderlich: Enthält das Eingabe-Array einen Wert <= 0, ist das Ergebnis für diesen Eintrag mathematisch undefiniert (-INF für 0 oder NAN für negative Zahlen). Die Funktion selbst löst in solchen Fällen keinen PHP-Fehler aus, liefert aber unbrauchbare Resultate. Validiere die Eingabedaten daher stets vorab.
TRADER-Erweiterung erforderlich: Die Funktion steht nur zur Verfügung, wenn die PHP-Erweiterung trader installiert und aktiviert ist (extension=trader in der php.ini). Prüfe die Verfügbarkeit mit extension_loaded('trader').
Fehlerbehandlung: Bei einem Fehler kann der genaue TA-Lib-Fehlercode über trader_errno() abgefragt werden.