# Lotto 6aus49 Analyse & Generator

Automatisiertes System zur Analyse von Lotto 6aus49-Daten und Generierung von KI-gestützten Tipps mit Telegram-Benachrichtigungen.

## 🎲 Features

- **🧠 AI/ML-basierte Tipp-Generierung**: Random Forest, Gradient Boosting & Neural Networks
- **🎨 Pattern-Analyse**: Historische Verteilungsmuster (NNMMHH, etc.)
- **⚡ Hybrid-Optimization**: Multi-objektive Optimierung mit 4 Strategien
- **📚 Real-Time Learning**: Kontinuierliche Anpassung der Modelle
- **🤖 Automatisierung**: Wöchentliche Tipp-Generierung via Cron
- **📲 Telegram-Benachrichtigungen**: Automatische Tipps direkt aufs Smartphone
- **🔄 Data-Updates**: 3 verschiedene Methoden (API, Web-Scraping, Manuelle Eingabe)

## 📁 Verzeichnisstruktur

```
Lotto/
├── README.md                       # Diese Datei
├── config/                         # Konfigurationsdateien
│   ├── notifications.json          # Telegram/Email Config
│   └── notifications.json.example  # Beispiel-Konfiguration
├── data/                           # Generierte Daten
│   └── generated_tips/            # Hier landen die generierten Tipps
├── scripts/
│   ├── generators/                # Tipp-Generatoren
│   │   └── ultimate_ai_ml_hybrid_generator.py
│   ├── automation/                # Automatisierungs-Scripts
│   │   └── weekly_tip_generator.py
│   ├── analysis/                  # Analyse-Scripts
│   └── utils/                     # Hilfsfunktionen
│       ├── notifier.py            # Benachrichtigungs-System
│       ├── update_from_api.py     # API-basiertes Update
│       ├── update_from_web.py     # Web-Scraping Update
│       └── simple_update.py       # Manuelle Eingabe
├── results/                       # Auswertungen & Grafiken
├── logs/                          # Log-Dateien
└── setup_cron.sh                  # Cron-Job Einrichtung
```

## 🚀 Quick Start

### 1. Installation

```bash
# Python-Abhängigkeiten installieren
pip install pandas numpy scikit-learn requests

# Optional: Deep Learning
pip install tensorflow
```

### 2. Telegram-Bot einrichten

1. Erstelle einen Bot mit [@BotFather](https://t.me/botfather)
2. Kopiere den Bot-Token
3. Hole deine Chat-ID (z.B. mit [@userinfobot](https://t.me/userinfobot))
4. Konfiguriere `config/notifications.json`:

```json
{
    "telegram": {
        "enabled": true,
        "bot_token": "YOUR_BOT_TOKEN",
        "chat_id": "YOUR_CHAT_ID"
    }
}
```

### 3. Manuell Tipps generieren

```bash
cd scripts/automation
python weekly_tip_generator.py --force --num-tips 10
```

### 4. Telegram-Bot einrichten (optional)

Richte einen eigenen Lotto-Bot für Benachrichtigungen ein:

```bash
# Anleitung lesen
cat TELEGRAM_BOT_SETUP.md

# Bot-Token in config/notifications.json eintragen
# Siehe detaillierte Anleitung in TELEGRAM_BOT_SETUP.md
```

**Kurzanleitung**:
1. Erstelle Bot mit @BotFather auf Telegram
2. Trage Bot-Token in `config/notifications.json` ein
3. Setze `"enabled": true`

### 5. Automatisierung einrichten

```bash
# Cron-Job erstellen (Dienstag & Freitag um 9 Uhr)
./setup_cron.sh
```

## 📊 Verwendung

### Tipps manuell generieren

```bash
# Standard: 10 Tipps
python scripts/automation/weekly_tip_generator.py --force

# Anzahl Tipps anpassen
python scripts/automation/weekly_tip_generator.py --force --num-tips 20

# Nur Historie anzeigen
python scripts/automation/weekly_tip_generator.py --history
```

### Generator direkt aufrufen

```bash
cd scripts/generators
python ultimate_ai_ml_hybrid_generator.py
```

### Test-Benachrichtigung senden

```bash
python scripts/utils/notifier.py --test
```

## 🧠 Generator-Strategien

Der Ultimate AI/ML Hybrid Generator verwendet **4 verschiedene Strategien**:

1. **PURE-AI** (30%): Basierend ausschließlich auf Machine Learning Predictions
2. **PURE-PATTERN** (25%): Historische Pattern-Analyse (NNMMHH-Kombinationen)
3. **HYBRID-OPT** (30%): Multi-objektive Optimierung (AI + Pattern + Diversity)
4. **ENSEMBLE** (15%): Best-of-all kombiniert alle Ansätze

### Ausgabe-Beispiel:

```
Nr  6 Numbers              SZ  Strategy           AI-Score  Pattern-W  Confidence  Quality
----------------------------------------------------------------------------------------
 1   7-14-21-28-35-42     3  PURE-AI             0.7234    0.3456     0.7123    ⭐ 0.756
 2   2-11-19-27-36-45     7  HYBRID-OPT          0.6891    0.4123     0.6987    🌟 0.689
 3   5-12-23-31-38-47     6  PURE-PATTERN        0.5234    0.5678     0.6234    🌟 0.621
...
```

## 📈 Performance Tracking

Alle Generierungen werden in `data/generated_tips/generation_history.json` getrackt:

```json
{
  "generations": [
    {
      "timestamp": "2024-11-27T09:00:00",
      "num_tips": 10,
      "file": "weekly_lotto_tips_20241127_090000.csv",
      "avg_confidence": 0.6834,
      "avg_quality": 0.6521
    }
  ]
}
```

## 🤖 Automatisierung

### Cron-Job Zeitplan

Der `setup_cron.sh` Script richtet folgende Zeitpunkte ein:

- **Dienstag 09:00**: Tipps für Mittwoch-Ziehung
- **Freitag 09:00**: Tipps für Samstag-Ziehung

### Cron-Job manuell einrichten

```bash
crontab -e
```

Füge hinzu:

```bash
# Lotto 6aus49 - Dienstag & Freitag 09:00
0 9 * * 2,5 cd /path/to/Lotto && python3 scripts/automation/weekly_tip_generator.py >> logs/weekly_tips.log 2>&1
```

## 📲 Telegram-Benachrichtigungen

Bei erfolgreicher Generierung erhältst du automatisch:

- ⭐ **Bester Tipp** (höchste Confidence)
- 📊 **Statistiken** (Ø Confidence & Quality)
- 🏆 **Top 3 Tipps** nach Confidence sortiert

Beispiel-Nachricht:

```
🎲 LOTTO 6AUS49 - NEUE TIPPS GENERIERT
========================================

📅 Generiert: 2024-11-27 09:00
📊 Anzahl Tipps: 10

⭐ BESTER TIPP:
🎯 Zahlen: 07 - 14 - 21 - 28 - 35 - 42
🌟 Superzahl: 3
📈 Confidence: 0.7234
🎨 Strategie: PURE-AI

🍀 Viel Glück!
```

## 🔧 Konfiguration

### notifications.json

```json
{
    "telegram": {
        "enabled": true,
        "bot_token": "YOUR_BOT_TOKEN",
        "chat_id": "YOUR_CHAT_ID"
    },
    "email": {
        "enabled": false,
        "smtp_server": "smtp.gmail.com",
        "smtp_port": 587,
        "smtp_user": "",
        "smtp_password": "",
        "from_email": "",
        "to_email": ""
    }
}
```

## 🎰 Lotto 6aus49 Regeln

- **6 Zahlen** aus 50 (1-49)
- **1 Superzahl** aus 10 (0-9)
- Ziehungen: **Mittwoch** und **Samstag**
- Quoten: [www.lotto.de](https://www.lotto.de)

## 📝 Datenformat

CSV-Datei `AlleLottozahlen.csv`:

```csv
datum;Z1;Z2;Z3;Z4;Z5;Z6;SZ
2024-11-23;7;14;21;28;35;42;3
2024-11-20;2;11;19;27;36;45;7
...
```

## 🔄 Daten Aktualisieren

Das System bietet **3 verschiedene Methoden** zum Aktualisieren der Lottozahlen:

### Methode 1: API-Update (Empfohlen)

Automatisches Laden von öffentlichen Lotto-APIs:

```bash
cd scripts/utils
python update_from_api.py
```

**Vorteile:**
- ✅ Automatisch
- ✅ Schnell
- ✅ Keine manuelle Eingabe

**Hinweis:** Funktioniert nur wenn APIs verfügbar sind.

### Methode 2: Web-Scraping

Scrapt aktuelle Ziehungen direkt von lotto.de:

```bash
cd scripts/utils
python update_from_web.py
```

Optionen:
```bash
# Mehr Seiten laden (mehr historische Daten)
python update_from_web.py --pages 10

# Spezifische Datei
python update_from_web.py /pfad/zur/datei.csv 5
```

**Vorteile:**
- ✅ Offizielle Quelle (lotto.de)
- ✅ Zuverlässig
- ✅ Viele historische Daten

**Nachteile:**
- ⚠️ Kann bei Struktur-Änderungen der Website fehlschlagen

### Methode 3: Manuelle Eingabe (Fallback)

Für den Fall dass API und Web-Scraping nicht funktionieren:

```bash
cd scripts/utils
python simple_update.py
```

**Zwei Modi:**

1. **Einzelne Ziehung eingeben:**
   ```
   Format: YYYY-MM-DD Z1 Z2 Z3 Z4 Z5 Z6 SZ
   Beispiel: 2024-11-27 7 14 21 28 35 42 3
   ```

2. **CSV-Import:**
   ```csv
   datum;Z1;Z2;Z3;Z4;Z5;Z6;SZ
   2024-11-27;7;14;21;28;35;42;3
   2024-11-23;2;11;19;27;36;45;7
   ```

**Vorteile:**
- ✅ Funktioniert immer
- ✅ Volle Kontrolle
- ✅ CSV-Batch-Import möglich

### Automatisches Backup

Alle Update-Methoden erstellen **automatisch ein Backup** vor der Änderung:
- Gespeichert in: `Lotto/data/backups/`
- Format: `AlleLottozahlen.csv.backup_YYYYMMDD_HHMMSS`

### Update-Workflow Empfehlung

1. **Versuche zuerst API:**
   ```bash
   python scripts/utils/update_from_api.py
   ```

2. **Fallback auf Web-Scraping:**
   ```bash
   python scripts/utils/update_from_web.py
   ```

3. **Letzter Fallback - Manuelle Eingabe:**
   ```bash
   python scripts/utils/simple_update.py
   ```

### Nach dem Update

Nach dem erfolgreichen Update der Daten:

```bash
# Neue Tipps generieren (mit automatischem Retraining)
python scripts/automation/weekly_tip_generator.py --force

# Oder direkt den Generator aufrufen
python scripts/generators/ultimate_ai_ml_hybrid_generator.py
```

### 🤖 Automatisches ML-Retraining

Das System verwendet **intelligentes Retraining**:

- ✅ **Automatische Erkennung**: Prüft ob CSV neuer als ML-Cache
- ✅ **Smart Caching**: Nutzt Cache wenn Daten unverändert
- ✅ **Auto-Retrain**: Trainiert neu wenn neue Daten verfügbar

**So funktioniert es:**
1. Nach `update_from_api.py` wird CSV aktualisiert
2. Beim nächsten Generator-Start: CSV-Timestamp > Cache-Timestamp
3. ✅ Automatisches Retraining mit neuen Daten
4. Neue ML-Modelle berücksichtigen aktuelle Ziehungen

**Manuelles Retraining erzwingen:**
```bash
# Cache löschen für komplettes Retraining
rm -rf ultimate_ml_models/
python scripts/generators/ultimate_ai_ml_hybrid_generator.py
```

## 🛠️ Entwicklung

### Neue Strategie hinzufügen

1. Öffne `scripts/generators/ultimate_ai_ml_hybrid_generator.py`
2. Füge neue Strategie in `strategy_weights` hinzu
3. Implementiere `_generate_<strategy>_tip()` Methode
4. Update `_generate_tips_by_strategy()`

### Logging aktivieren

```python
import logging

logging.basicConfig(
    filename='logs/generator.log',
    level=logging.INFO,
    format='%(asctime)s - %(levelname)s - %(message)s'
)
```

## ⚠️ Hinweise

- **Keine Gewinngarantie**: Dies ist ein statistisches Analyse-Tool
- **Historische Daten**: Vergangene Ziehungen garantieren keine zukünftigen Ergebnisse
- **Verantwortungsvoll spielen**: Lotto ist Glücksspiel
- **Bot-Token**: Niemals öffentlich teilen!

## 📜 Lizenz

Dieses Projekt ist für private Zwecke. Keine kommerzielle Nutzung.

## 🙋 Support

Bei Fragen oder Problemen:

1. Check die Logs: `logs/weekly_tips.log`
2. Test-Benachrichtigung: `python scripts/utils/notifier.py --test`
3. Historie prüfen: `python scripts/automation/weekly_tip_generator.py --history`

---

**🍀 Viel Glück bei der nächsten Ziehung! 🍀**
