171 lines
8.5 KiB
Dart
171 lines
8.5 KiB
Dart
import 'package:flutter/material.dart';
|
|
import '../../../../core/theme/app_theme.dart';
|
|
|
|
class PatternExplanations {
|
|
static const Map<String, Map<String, String>> dictionary = {
|
|
'ASCENDING_TRIANGLE': {
|
|
'title': 'Steigendes Dreieck (Ascending Triangle)',
|
|
'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.',
|
|
},
|
|
'DESCENDING_TRIANGLE': {
|
|
'title': 'Fallendes Dreieck (Descending Triangle)',
|
|
'bias': 'BEARISH',
|
|
'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.',
|
|
},
|
|
'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.',
|
|
},
|
|
'INVERSE_HEAD_AND_SHOULDERS': {
|
|
'title': 'Umgekehrte Kopf-Schulter-Formation',
|
|
'bias': 'BULLISH',
|
|
'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.',
|
|
},
|
|
'BULL_FLAG': {
|
|
'title': 'Bullische Flagge (Bull Flag)',
|
|
'bias': 'BULLISH',
|
|
'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.',
|
|
},
|
|
'BEAR_FLAG': {
|
|
'title': 'Bärische Flagge (Bear Flag)',
|
|
'bias': 'BEARISH',
|
|
'description': 'Kurze Aufwärtskonsolidierung in einem steilen Abwärtstrend.',
|
|
'significance': 'Signalisiert eine Fortsetzung des steilen Abverkaufs.',
|
|
'action': 'Short-Position bei Durchbrechen der unteren Flaggenkante.',
|
|
},
|
|
'DOUBLE_BOTTOM': {
|
|
'title': 'Doppelboden (W-Formation)',
|
|
'bias': 'BULLISH',
|
|
'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.',
|
|
},
|
|
'DOUBLE_TOP': {
|
|
'title': 'Doppeltopp (M-Formation)',
|
|
'bias': 'BEARISH',
|
|
'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.',
|
|
},
|
|
'CHANNEL': {
|
|
'title': 'Trendkanal (Trading Channel)',
|
|
'bias': 'NEUTRAL',
|
|
'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.',
|
|
},
|
|
'SUPPORT_RESISTANCE': {
|
|
'title': 'Unterstützungs- & Widerstandslinien',
|
|
'bias': 'NEUTRAL',
|
|
'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.',
|
|
},
|
|
};
|
|
|
|
static void showPatternDetails(BuildContext context, String rawPatternType) {
|
|
final key = dictionary.keys.firstWhere(
|
|
(k) => rawPatternType.toUpperCase().contains(k) || k.contains(rawPatternType.toUpperCase()),
|
|
orElse: () => '',
|
|
);
|
|
|
|
final info = key.isNotEmpty ? dictionary[key]! : {
|
|
'title': rawPatternType,
|
|
'bias': 'NEUTRAL',
|
|
'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.',
|
|
};
|
|
|
|
final isBullish = info['bias'] == 'BULLISH';
|
|
final isBearish = info['bias'] == 'BEARISH';
|
|
final biasColor = isBullish ? AppTheme.primaryEmerald : (isBearish ? AppTheme.accentRed : AppTheme.accentCyan);
|
|
|
|
showDialog(
|
|
context: context,
|
|
builder: (modalContext) => AlertDialog(
|
|
backgroundColor: AppTheme.cardSurface,
|
|
shape: RoundedRectangleBorder(
|
|
borderRadius: BorderRadius.circular(16),
|
|
side: BorderSide(color: AppTheme.glassBorder),
|
|
),
|
|
title: Column(
|
|
crossAxisAlignment: CrossAxisAlignment.start,
|
|
children: [
|
|
Row(
|
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
|
children: [
|
|
Expanded(
|
|
child: Text(
|
|
info['title']!,
|
|
style: const TextStyle(color: Colors.white, fontSize: 16, fontWeight: FontWeight.bold),
|
|
),
|
|
),
|
|
Container(
|
|
padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 3),
|
|
decoration: BoxDecoration(
|
|
color: biasColor.withValues(alpha: 0.2),
|
|
borderRadius: BorderRadius.circular(6),
|
|
border: Border.all(color: biasColor),
|
|
),
|
|
child: Text(
|
|
info['bias']!,
|
|
style: TextStyle(color: biasColor, fontWeight: FontWeight.bold, fontSize: 11),
|
|
),
|
|
),
|
|
],
|
|
),
|
|
],
|
|
),
|
|
content: SingleChildScrollView(
|
|
child: Column(
|
|
crossAxisAlignment: CrossAxisAlignment.start,
|
|
mainAxisSize: MainAxisSize.min,
|
|
children: [
|
|
const Text('Formationsbeschreibung:', style: TextStyle(fontWeight: FontWeight.bold, color: Colors.white, fontSize: 13)),
|
|
const SizedBox(height: 4),
|
|
Text(info['description']!, style: TextStyle(color: AppTheme.textSecondary, fontSize: 13, height: 1.4)),
|
|
const SizedBox(height: 14),
|
|
|
|
const Text('Markt-Bedeutung & Psychologie:', style: TextStyle(fontWeight: FontWeight.bold, color: Colors.white, fontSize: 13)),
|
|
const SizedBox(height: 4),
|
|
Text(info['significance']!, style: const TextStyle(color: Colors.white70, fontSize: 13, height: 1.4)),
|
|
const SizedBox(height: 14),
|
|
|
|
const Text('Empfohlene Trading-Handlung:', style: TextStyle(fontWeight: FontWeight.bold, color: Colors.white, fontSize: 13)),
|
|
const SizedBox(height: 4),
|
|
Container(
|
|
padding: const EdgeInsets.all(10),
|
|
decoration: BoxDecoration(
|
|
color: AppTheme.glassSurface,
|
|
borderRadius: BorderRadius.circular(8),
|
|
border: Border.all(color: AppTheme.glassBorder),
|
|
),
|
|
child: Text(info['action']!, style: TextStyle(color: AppTheme.accentCyan, fontSize: 12, fontWeight: FontWeight.w600, height: 1.4)),
|
|
),
|
|
],
|
|
),
|
|
),
|
|
actions: [
|
|
TextButton(
|
|
onPressed: () => Navigator.pop(modalContext),
|
|
child: const Text('Schließen', style: TextStyle(color: Colors.white)),
|
|
),
|
|
],
|
|
),
|
|
);
|
|
}
|
|
}
|