Signatur
Beschreibung
Die Funktion trader_cdlcounterattack() ist Teil der TRADER-Erweiterung für PHP, die auf der TA-Lib (Technical Analysis Library) basiert. Sie analysiert Kerzen-Diagrammdaten (Open, High, Low, Close) und erkennt das sogenannte Counterattack-Muster (Gegenangriff-Muster).
Das Counterattack-Muster ist ein zweiteiliges Umkehrmuster in der technischen Analyse. Es besteht aus zwei Kerzen: Die erste Kerze setzt einen starken Trend fort (z. B. eine lange bärische Kerze im Abwärtstrend), während die zweite Kerze in die entgegengesetzte Richtung öffnet, aber am selben Schlusskurs wie die erste Kerze schließt. Dies signalisiert eine mögliche Trendwende.
Der Rückgabewert ist ein Array mit Integer-Werten pro Datenpunkt: 100 steht für ein bullisches Counterattack-Signal, -100 für ein bärisches Signal, und 0 bedeutet, dass kein Muster erkannt wurde. Die Indizes des Rückgabe-Arrays entsprechen den Indizes der Eingabe-Arrays (mit einem Lookup-Versatz, da mindestens zwei Kerzen benötigt werden).
Diese Funktion ist besonders nützlich beim automatisierten Backtesting von Handelsstrategien oder beim Aufbau technischer Indikator-Pipelines in PHP-basierten Finanzapplikationen.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $open Pflicht | array | Array mit Eröffnungskursen (numerisch indiziert, aufsteigend nach Zeit). | |
| $high Pflicht | array | Array mit Tageshöchstkursen (numerisch indiziert, gleiche Länge wie open). |
|
| $low Pflicht | array | Array mit Tagestiefkursen (numerisch indiziert, gleiche Länge wie open). |
|
| $close Pflicht | array | Array mit Schlusskursen (numerisch indiziert, gleiche Länge wie open). |
Rückgabewert
100 zeigt ein bullisches Counterattack-Muster an, -100 ein bärisches Muster, und 0 bedeutet kein erkanntes Muster. Das Array kann kürzer als die Eingabe-Arrays sein, da für die Mustererkennung mindestens zwei Datenpunkte benötigt werden. Bei einem Fehler wird false zurückgegeben.Beispiele
Einfaches Beispiel zur Mustererkennung
<?php
// OHLC-Kursdaten (z. B. tägliche Kerzen)
$open = [44.0, 43.5, 41.0, 42.5, 40.0];
$high = [45.0, 44.0, 42.5, 43.5, 41.5];
$low = [43.0, 41.0, 40.0, 41.0, 39.0];
$close = [43.5, 41.5, 42.0, 42.0, 40.5];
$result = trader_cdlcounterattack($open, $high, $low, $close);
if ($result === false) {
echo 'Fehler bei der Mustererkennung.' . PHP_EOL;
} else {
foreach ($result as $index => $signal) {
if ($signal !== 0) {
$typ = $signal > 0 ? 'Bullisch' : 'Bärisch';
echo "Kerze #{$index}: {$typ} Counterattack-Muster erkannt (Wert: {$signal})" . PHP_EOL;
}
}
if (array_sum(array_map('abs', $result)) === 0) {
echo 'Kein Counterattack-Muster in den Daten gefunden.' . PHP_EOL;
}
}
Integration mit historischen Börsendaten
<?php
// Simulierte historische OHLC-Daten (z. B. aus einer Datenbank geladen)
$ohlc = [
['o' => 100.0, 'h' => 102.0, 'l' => 98.0, 'c' => 99.0],
['o' => 99.0, 'h' => 100.0, 'l' => 95.0, 'c' => 95.5],
['o' => 94.0, 'h' => 97.0, 'l' => 93.0, 'c' => 95.5], // potenzielles Muster
['o' => 98.0, 'h' => 99.5, 'l' => 96.0, 'c' => 97.0],
['o' => 97.5, 'h' => 100.0, 'l' => 96.5, 'c' => 99.0],
];
$open = array_column($ohlc, 'o');
$high = array_column($ohlc, 'h');
$low = array_column($ohlc, 'l');
$close = array_column($ohlc, 'c');
$signals = trader_cdlcounterattack($open, $high, $low, $close);
echo 'Counterattack-Signale:' . PHP_EOL;
foreach ($signals as $i => $val) {
$label = match(true) {
$val > 0 => '✓ Bullisch',
$val < 0 => '✗ Bärisch',
default => ' Kein Signal',
};
echo " [{$i}] {$label}" . PHP_EOL;
}
// Wichtig · Fallstricke
Voraussetzung: Die PHP-TRADER-Erweiterung (php-trader) muss installiert und in der php.ini aktiviert sein (extension=trader). Sie ist nicht standardmäßig in PHP enthalten.
Array-Länge: Die Eingabe-Arrays open, high, low und close müssen exakt gleich lang sein und mindestens 2 Elemente enthalten. Unterschiedliche Längen können zu undefinierten Ergebnissen oder false führen.
Index-Versatz: Das Rückgabe-Array kann weniger Elemente als die Eingabe-Arrays haben, da die Funktion intern einen Lookback-Zeitraum (mindestens 1 Periode) benötigt. Die Indizes im Rückgabe-Array entsprechen den Positionen in den Eingabe-Arrays.
Signalinterpretation: Ein Counterattack-Signal allein sollte nicht als alleinige Handelsentscheidungsgrundlage verwendet werden. Es empfiehlt sich, das Signal mit weiteren Indikatoren wie Volumen, RSI oder gleitenden Durchschnitten zu kombinieren.