Signatur
Beschreibung
Die Funktion trader_sar() gehört zur TRADER-Erweiterung (PHP Trader), die technische Analysefunktionen aus der TA-Lib-Bibliothek bereitstellt. Der Parabolic SAR (Stop and Reverse) ist ein trendfolgender Indikator, der von J. Welles Wilder entwickelt wurde und zur Identifikation potenzieller Trendumkehrpunkte sowie zur Bestimmung von Trailing-Stop-Levels eingesetzt wird.
Der Indikator platziert Punkte unter dem Kurs in einem Aufwärtstrend und über dem Kurs in einem Abwärtstrend. Der Parameter acceleration (Beschleunigungsfaktor) steuert, wie schnell sich der SAR dem aktuellen Kurs annähert. Der Parameter maximum begrenzt den maximalen Beschleunigungsfaktor, um zu verhindern, dass der SAR zu dicht an den Kursen liegt.
Ein typischer Einsatz ist das Setzen von Stop-Loss-Marken oder das Erkennen von Trendwenden: Wenn der Kurs den SAR-Wert schneidet, signalisiert dies einen möglichen Trendwechsel. Die zurückgegebenen Werte beginnen erst nach einem Lookback-Zeitraum, der durch den Algorithmus bedingt ist.
- Geeignet für Aktien-, Forex- und Krypto-Chartanalysen.
- Wird häufig kombiniert mit anderen Indikatoren wie ADX oder MACD.
- Funktioniert am besten in trendigen Märkten; in Seitwärtsphasen entstehen viele Fehlsignale.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $high Pflicht | array | Array mit den Höchstkursen (High-Werte) der Zeitreihe als numerisch indiziertes Array von Fließkommazahlen. | |
| $low Pflicht | array | Array mit den Tiefstkursen (Low-Werte) der Zeitreihe als numerisch indiziertes Array von Fließkommazahlen. Muss dieselbe Länge wie $high haben. |
|
| $acceleration | float | 0.02 | Beschleunigungsfaktor: Steuert, wie schnell sich der SAR dem Extrempunkt (EP) annähert. Kleinere Werte erzeugen einen trägeren Indikator, größere Werte einen reaktiveren. |
| $maximum | float | 0.2 | Maximaler Beschleunigungsfaktor: Begrenzt den Beschleunigungsfaktor nach oben, um zu verhindern, dass der SAR zu schnell an den Kurs heranrückt. |
Rückgabewert
false zurückgegeben, z. B. wenn die Eingabe-Arrays zu kurz oder leer sind.Beispiele
Einfache SAR-Berechnung mit Standardparametern
<?php
// Beispiel-Kursdaten: High- und Low-Werte von 10 Perioden
$high = [44.34, 44.09, 44.15, 43.61, 44.33, 44.83, 45.10, 45.15, 43.61, 44.33];
$low = [43.61, 43.61, 43.15, 43.00, 43.55, 44.32, 44.83, 44.07, 43.00, 43.55];
// SAR berechnen mit Standardwerten (acceleration=0.02, maximum=0.2)
$sar = trader_sar($high, $low);
if ($sar === false) {
echo 'Fehler bei der SAR-Berechnung.';
} else {
echo 'Parabolic SAR Werte:' . PHP_EOL;
foreach ($sar as $index => $value) {
printf(' Index %d: %.4f%s', $index, $value, PHP_EOL);
}
}
SAR mit angepasstem Beschleunigungsfaktor für schnellere Reaktion
<?php
// Größere Datenmenge simulieren
$high = array_map(fn($i) => 100 + sin($i * 0.3) * 10 + mt_rand(0, 200) / 100, range(0, 49));
$low = array_map(fn($i) => $high[$i] - (mt_rand(50, 200) / 100), range(0, 49));
// Schnellerer SAR: höherer Beschleunigungsfaktor und niedrigeres Maximum
$sar_schnell = trader_sar($high, $low, 0.05, 0.3);
$sar_normal = trader_sar($high, $low, 0.02, 0.2);
if ($sar_schnell && $sar_normal) {
$letzterIndex = max(array_keys($sar_schnell));
printf('Letzter SAR (schnell): %.4f%s', $sar_schnell[$letzterIndex], PHP_EOL);
printf('Letzter SAR (normal): %.4f%s', $sar_normal[$letzterIndex], PHP_EOL);
// Einfaches Signal: Kurs über SAR = Aufwärtstrend
$letzterHigh = $high[$letzterIndex];
if ($letzterHigh > $sar_schnell[$letzterIndex]) {
echo 'Signal (schnell): Aufwärtstrend aktiv' . PHP_EOL;
} else {
echo 'Signal (schnell): Abwärtstrend aktiv' . PHP_EOL;
}
}
// Wichtig · Fallstricke
Lookback-Zeitraum: Der Parabolic SAR benötigt mindestens 1 Periode Vorlauf. Das Ergebnis-Array enthält daher weniger Werte als die Eingabe-Arrays; die Array-Schlüssel zeigen an, welchen Eingabe-Indizes die Werte entsprechen.
Fehlsignale in Seitwärtsmärkten: Der SAR ist ein Trendfolger und erzeugt in trendlosen, choppy Märkten häufige Richtungswechsel (Fehlsignale). Eine Kombination mit einem Trendstärke-Indikator wie trader_adx() ist empfehlenswert.
Voraussetzung: Die PHP-TRADER-Erweiterung muss installiert und aktiviert sein (pecl install trader sowie extension=trader.so in der php.ini). Die Funktion ist nicht Teil des PHP-Core.
Eingabe-Konsistenz: Die Arrays $high und $low müssen gleich lang sein und dürfen keine null-Werte enthalten. Andernfalls gibt die Funktion false zurück oder liefert unerwartete Ergebnisse.