refactor: save current workspace state including FinlyticAnalyzer fixes, FinlyticApp trade route alignment, and DTO audit documentation
This commit is contained in:
@@ -8,7 +8,10 @@ class PatternExplanations {
|
||||
'bias': 'BULLISH',
|
||||
'description': 'Ein bullisches Fortsetzungsmuster, das durch eine horizontale Widerstandslinie oben und eine steigende Unterstützungslinie unten gekennzeichnet ist.',
|
||||
'significance': 'Käufer werden bei jedem Rücksetzer aggressiver (höhere Tiefs). Ein Ausbruch über die obere Widerstandslinie signalisiert eine starke Fortsetzung des Aufwärtstrends.',
|
||||
'action': 'Kauf-Order / Breakout-Trade beim Ausbruch über den horizontalen Widerstand mit Stop-Loss knapp unter der steigenden Trendlinie.',
|
||||
'action': 'Kauf-Order / Breakout-Trade beim Ausbruch über den horizontalen Widerstand.',
|
||||
'reliability': 'Hoch',
|
||||
'target': 'Höhe des Dreiecks an der Basis, addiert zum Ausbruchsniveau.',
|
||||
'stop_loss': 'Knapp unter der unteren (steigenden) Trendlinie.',
|
||||
},
|
||||
'DESCENDING_TRIANGLE': {
|
||||
'title': 'Fallendes Dreieck (Descending Triangle)',
|
||||
@@ -16,13 +19,19 @@ class PatternExplanations {
|
||||
'description': 'Ein bärisches Fortsetzungsmuster mit einer horizontalen Unterstützungslinie unten und fallenden Hochs oben.',
|
||||
'significance': 'Verkäufer drücken den Kurs bei jeder Erholung schneller nach unten. Ein Bruch der unteren Unterstützung führt meist zu dynamischen Abverkäufen.',
|
||||
'action': 'Short-Trade oder Verkauf bei Durchbruch der unteren Unterstützungslinie.',
|
||||
'reliability': 'Hoch',
|
||||
'target': 'Höhe des Dreiecks an der Basis, subtrahiert vom Ausbruchsniveau.',
|
||||
'stop_loss': 'Knapp über der oberen (fallenden) Trendlinie.',
|
||||
},
|
||||
'HEAD_AND_SHOULDERS': {
|
||||
'title': 'Kopf-Schulter-Formation (Head & Shoulders)',
|
||||
'bias': 'BEARISH',
|
||||
'description': 'Klassisches Umkehrmuster bestehend aus drei Höchstständen: der mittleren höchsten Spitze (Kopf) und zwei kleineren Höchstständen links und rechts (Schultern).',
|
||||
'significance': 'Ein nachhaltiger Bruch der Nackenlinie (Neckline) markiert das Ende eines Aufwärtstrends und den Beginn einer Bärenphase.',
|
||||
'action': 'Verkauf/Short-Position beim Bruch der Nackenlinie mit Kursziel entsprechend der Distanz zwischen Kopf und Nackenlinie.',
|
||||
'action': 'Verkauf/Short-Position beim Bruch der Nackenlinie.',
|
||||
'reliability': 'Sehr Hoch',
|
||||
'target': 'Distanz zwischen Kopf und Nackenlinie, vom Ausbruchspunkt der Nackenlinie nach unten projiziert.',
|
||||
'stop_loss': 'Knapp über der rechten Schulter.',
|
||||
},
|
||||
'INVERSE_HEAD_AND_SHOULDERS': {
|
||||
'title': 'Umgekehrte Kopf-Schulter-Formation',
|
||||
@@ -30,6 +39,9 @@ class PatternExplanations {
|
||||
'description': 'Bullisches Bodenbildungsmuster nach einem Abwärtstrend mit drei Tiefspunkten.',
|
||||
'significance': 'Signalisiert das Ende des Abwärtstrends und den Beginn eines neuen Bullenmarktes.',
|
||||
'action': 'Kauf bei Ausbruch über die obere Nackenlinie.',
|
||||
'reliability': 'Sehr Hoch',
|
||||
'target': 'Distanz zwischen Kopf (tiefster Punkt) und Nackenlinie, vom Ausbruchspunkt nach oben projiziert.',
|
||||
'stop_loss': 'Knapp unter der rechten Schulter.',
|
||||
},
|
||||
'BULL_FLAG': {
|
||||
'title': 'Bullische Flagge (Bull Flag)',
|
||||
@@ -37,6 +49,9 @@ class PatternExplanations {
|
||||
'description': 'Kurze Konsolidierung gegen den übergeordneten starken Aufwärtstrend (Fahnenstange).',
|
||||
'significance': 'Zeigt eine temporäre Gewinnmitnahme vor der nächsten Welle nach oben.',
|
||||
'action': 'Kauf beim Ausbruch aus der oberen Begrenzung des Flaggenkanals.',
|
||||
'reliability': 'Hoch',
|
||||
'target': 'Länge des vorherigen Aufwärtstrends (Fahnenstange), angesetzt am Ausbruchspunkt der Flagge.',
|
||||
'stop_loss': 'Unterhalb des unteren Randes der Flagge.',
|
||||
},
|
||||
'BEAR_FLAG': {
|
||||
'title': 'Bärische Flagge (Bear Flag)',
|
||||
@@ -44,6 +59,9 @@ class PatternExplanations {
|
||||
'description': 'Kurze Aufwärtskonsolidierung in einem steilen Abwärtstrend.',
|
||||
'significance': 'Signalisiert eine Fortsetzung des steilen Abverkaufs.',
|
||||
'action': 'Short-Position bei Durchbrechen der unteren Flaggenkante.',
|
||||
'reliability': 'Hoch',
|
||||
'target': 'Länge des vorherigen Abwärtstrends (Fahnenstange), angesetzt am Ausbruchspunkt der Flagge.',
|
||||
'stop_loss': 'Oberhalb des oberen Randes der Flagge.',
|
||||
},
|
||||
'DOUBLE_BOTTOM': {
|
||||
'title': 'Doppelboden (W-Formation)',
|
||||
@@ -51,6 +69,9 @@ class PatternExplanations {
|
||||
'description': 'Zwei aufeinanderfolgende Tiefpunkte auf etwa gleichem Kursniveau.',
|
||||
'significance': 'Starke Unterstützung auf dem Tiefststand wurde zweimal erfolgreich verteidigt. Ausbruch über das Zwischenhoch bestätigt W-Boden.',
|
||||
'action': 'Kauf bei Überschreiten des W-Zwischenhochs.',
|
||||
'reliability': 'Mittel bis Hoch',
|
||||
'target': 'Distanz zwischen dem Tief und dem Zwischenhoch, auf das Zwischenhoch addiert.',
|
||||
'stop_loss': 'Knapp unter den beiden Tiefpunkten.',
|
||||
},
|
||||
'DOUBLE_TOP': {
|
||||
'title': 'Doppeltopp (M-Formation)',
|
||||
@@ -58,6 +79,9 @@ class PatternExplanations {
|
||||
'description': 'Zwei markante Höchststände auf ähnlicher Höhe, die nicht durchbrochen werden konnten.',
|
||||
'significance': 'Widerstandszone ist zu stark für die Bullen. Bruch des Zwischen-Tiefs leitet Trendwende ein.',
|
||||
'action': 'Verkauf/Short bei Bruch des Zwischentiefs.',
|
||||
'reliability': 'Mittel bis Hoch',
|
||||
'target': 'Distanz zwischen dem Hoch und dem Zwischentief, vom Zwischentief subtrahiert.',
|
||||
'stop_loss': 'Knapp über den beiden Höchstständen.',
|
||||
},
|
||||
'CHANNEL': {
|
||||
'title': 'Trendkanal (Trading Channel)',
|
||||
@@ -65,6 +89,9 @@ class PatternExplanations {
|
||||
'description': 'Parallele obere und untere Trendlinien, zwischen denen der Kurs Oszilliert.',
|
||||
'significance': 'Erlaubt Swing-Trading zwischen den Kanallinien oder Breakout-Trading beim Ausbruch.',
|
||||
'action': 'Kauf an der Unterkante, Verkauf an der Oberkante oder Breakout-Trading.',
|
||||
'reliability': 'Mittel',
|
||||
'target': 'Die gegenüberliegende Kanallinie (beim Swing-Trading) oder die Kanalbreite (beim Ausbruch).',
|
||||
'stop_loss': 'Außerhalb des Kanals auf der entgegengesetzten Seite des Einstiegs.',
|
||||
},
|
||||
'SUPPORT_RESISTANCE': {
|
||||
'title': 'Unterstützungs- & Widerstandslinien',
|
||||
@@ -72,9 +99,24 @@ class PatternExplanations {
|
||||
'description': 'Preisniveaus, an denen historisch gehäuft Kauf- oder Verkaufsinteresse auftrat.',
|
||||
'significance': 'Wichtige Marken für Stop-Loss Platzierungen und Kursziele.',
|
||||
'action': 'Trading an Key-Levels mit engem Risikomanagement.',
|
||||
'reliability': 'Variabel',
|
||||
'target': 'Das nächste große Unterstützungs- oder Widerstandslevel.',
|
||||
'stop_loss': 'Knapp jenseits der gebrochenen Linie (im Falle eines Fehlausbruchs).',
|
||||
},
|
||||
};
|
||||
|
||||
static Color getColorForPattern(String patternType) {
|
||||
const colors = [
|
||||
Colors.amberAccent,
|
||||
Colors.cyanAccent,
|
||||
Colors.purpleAccent,
|
||||
Colors.pinkAccent,
|
||||
Colors.lightGreenAccent,
|
||||
Colors.orangeAccent,
|
||||
];
|
||||
return colors[patternType.hashCode.abs() % colors.length];
|
||||
}
|
||||
|
||||
static void showPatternDetails(BuildContext context, String rawPatternType) {
|
||||
final key = dictionary.keys.firstWhere(
|
||||
(k) => rawPatternType.toUpperCase().contains(k) || k.contains(rawPatternType.toUpperCase()),
|
||||
@@ -87,6 +129,9 @@ class PatternExplanations {
|
||||
'description': 'Ein vom FinlyticAnalyzer erkanntes technisches Chart-Muster ($rawPatternType).',
|
||||
'significance': 'Trendlinien und Schlüssel-Zonen zur Bestimmung von Ein- und Ausstiegssignalen.',
|
||||
'action': 'Nutzen Sie Stopp-Orders und beachten Sie den übergeordneten Markt-Trend.',
|
||||
'reliability': 'Unbekannt',
|
||||
'target': 'Abhängig vom spezifischen Muster und der Volatilität.',
|
||||
'stop_loss': 'Immer an lokalen Unterstützungs- oder Widerstandszonen platzieren.',
|
||||
};
|
||||
|
||||
final isBullish = info['bias'] == 'BULLISH';
|
||||
@@ -144,9 +189,37 @@ class PatternExplanations {
|
||||
Text(info['significance']!, style: const TextStyle(color: Colors.white70, fontSize: 13, height: 1.4)),
|
||||
const SizedBox(height: 14),
|
||||
|
||||
Row(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Expanded(
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
const Text('Zuverlässigkeit:', style: TextStyle(fontWeight: FontWeight.bold, color: Colors.white, fontSize: 13)),
|
||||
const SizedBox(height: 2),
|
||||
Text(info['reliability']!, style: TextStyle(color: AppTheme.textSecondary, fontSize: 13)),
|
||||
],
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
const SizedBox(height: 14),
|
||||
|
||||
const Text('Kursziel (Take Profit):', style: TextStyle(fontWeight: FontWeight.bold, color: Colors.white, fontSize: 13)),
|
||||
const SizedBox(height: 4),
|
||||
Text(info['target']!, style: TextStyle(color: AppTheme.primaryEmerald, fontSize: 13, height: 1.4)),
|
||||
const SizedBox(height: 14),
|
||||
|
||||
const Text('Stop-Loss Platzierung:', style: TextStyle(fontWeight: FontWeight.bold, color: Colors.white, fontSize: 13)),
|
||||
const SizedBox(height: 4),
|
||||
Text(info['stop_loss']!, style: TextStyle(color: AppTheme.accentRed, fontSize: 13, height: 1.4)),
|
||||
const SizedBox(height: 18),
|
||||
|
||||
const Text('Empfohlene Trading-Handlung:', style: TextStyle(fontWeight: FontWeight.bold, color: Colors.white, fontSize: 13)),
|
||||
const SizedBox(height: 4),
|
||||
Container(
|
||||
width: double.infinity,
|
||||
padding: const EdgeInsets.all(10),
|
||||
decoration: BoxDecoration(
|
||||
color: AppTheme.glassSurface,
|
||||
|
||||
Reference in New Issue
Block a user