Rewrite README to match the actual active system
Same problem as Eurojackpot had: described the old 3-strategy system (PURE-AI/PURE-PATTERN/ENSEMBLE) and crontab scheduling, neither of which reflects what's actually running. Rewritten to describe the current 4-strategy generator, the EV-optimized quality score, the launchd schedule (update/weekly/watchdog), and the new backup retention. Links to ARCHITECTURE.md for details. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
612334dc1a
commit
d2c9369e3f
1 file changed
+129
-362
@@ -1,41 +1,57 @@
|
|||||||
# Lotto 6aus49 Analyse & Generator
|
# Lotto 6aus49 Analyse & Generator
|
||||||
|
|
||||||
Automatisiertes System zur Analyse von Lotto 6aus49-Daten und Generierung von KI-gestützten Tipps mit Telegram-Benachrichtigungen.
|
Automatisiertes System zur Analyse von Lotto 6aus49-Daten und Generierung von KI-gestützten Tipps mit Telegram-Benachrichtigungen. Schwesterprojekt von [Eurojackpot](../Eurojackpot) — gleiche Architektur, angepasst an das Lotto-Format (6 Zahlen aus 49 + 1 Superzahl).
|
||||||
|
|
||||||
|
Eine detaillierte Architektur- und Datenfluss-Beschreibung steht in [documentation/ARCHITECTURE.md](documentation/ARCHITECTURE.md).
|
||||||
|
|
||||||
## 🎲 Features
|
## 🎲 Features
|
||||||
|
|
||||||
- **🧠 AI/ML-basierte Tipp-Generierung**: Random Forest, Gradient Boosting & Neural Networks
|
- **🧠 AI/ML-basierte Tipp-Generierung**: Random Forest + LSTM (PyTorch) Hybrid-Predictor
|
||||||
- **🎨 Pattern-Analyse**: Historische Verteilungsmuster (NNMMHH, etc.)
|
- **🎨 Pattern-Analyse**: Historische Verteilungsmuster (N/M/H-Zonen)
|
||||||
- **⚡ Hybrid-Optimization**: Multi-objektive Optimierung mit 4 Strategien
|
- **⚡ 4-Strategien-System**: HYBRID-OPT, BALANCED-SPREAD, HIGH-EV, SOFT-CONTRARIAN mit adaptiver Gewichtung
|
||||||
- **📚 Real-Time Learning**: Kontinuierliche Anpassung der Modelle
|
- **💰 EV-Optimierung**: Quality-Score gewichtet gezielt auf unpopuläre (aber gleich wahrscheinliche) Zahlenkombinationen, um den Gewinnanteil im Trefferfall zu erhöhen
|
||||||
- **🤖 Automatisierung**: Wöchentliche Tipp-Generierung via Cron
|
- **📚 Real-Time Learning**: Kontinuierliches Retraining bei neuen Ziehungen
|
||||||
- **📲 Telegram-Benachrichtigungen**: Automatische Tipps direkt aufs Smartphone
|
- **🤖 Automatisierung**: Tipp-Generierung & Datenupdate via launchd, mit täglichem Watchdog gegen verpasste Läufe
|
||||||
- **🔄 Data-Updates**: 3 verschiedene Methoden (API, Web-Scraping, Manuelle Eingabe)
|
- **📲 Telegram-Benachrichtigungen**: Automatische Tipps direkt aufs Smartphone, plus Watchdog-Alarm bei Problemen
|
||||||
|
- **🔄 Data-Updates**: API-Kette (Lottoland → GitHub-Archiv → lottoAPI) mit Web-Scraping- und manuellem Fallback
|
||||||
|
|
||||||
## 📁 Verzeichnisstruktur
|
## 📁 Verzeichnisstruktur
|
||||||
|
|
||||||
```
|
```text
|
||||||
Lotto/
|
Lotto/
|
||||||
├── README.md # Diese Datei
|
├── README.md
|
||||||
├── config/ # Konfigurationsdateien
|
├── config/
|
||||||
│ ├── notifications.json # Telegram/Email Config
|
│ └── notifications.json # Telegram/Email Config
|
||||||
│ └── notifications.json.example # Beispiel-Konfiguration
|
├── data/
|
||||||
├── data/ # Generierte Daten
|
│ ├── AlleLottozahlen.csv # Ziehungshistorie
|
||||||
│ └── generated_tips/ # Hier landen die generierten Tipps
|
│ ├── backups/ # CSV-Backups (automatisch rotiert, letzte 30)
|
||||||
|
│ ├── ultimate_ml_models/ # Trainierte Modelle (RF + LSTM)
|
||||||
|
│ └── generated_tips/ # Generierte Tipps
|
||||||
├── scripts/
|
├── scripts/
|
||||||
│ ├── generators/ # Tipp-Generatoren
|
│ ├── generators/
|
||||||
│ │ └── ultimate_ai_ml_hybrid_generator.py
|
│ │ └── ultimate_ai_ml_hybrid_generator.py # aktiver Generator
|
||||||
│ ├── automation/ # Automatisierungs-Scripts
|
│ ├── automation/
|
||||||
│ │ └── weekly_tip_generator.py
|
│ │ ├── auto_update_and_learn.py # Update + Retraining
|
||||||
│ ├── analysis/ # Analyse-Scripts
|
│ │ ├── weekly_tip_generator.py # Tipp-Generierung
|
||||||
│ └── utils/ # Hilfsfunktionen
|
│ │ ├── com.lotto.update.plist
|
||||||
│ ├── notifier.py # Benachrichtigungs-System
|
│ │ ├── com.lotto.weekly.plist
|
||||||
│ ├── update_from_api.py # API-basiertes Update
|
│ │ └── com.lotto.watchdog.plist
|
||||||
│ ├── update_from_web.py # Web-Scraping Update
|
│ └── utils/
|
||||||
│ └── simple_update.py # Manuelle Eingabe
|
│ ├── notifier.py # Telegram/Email
|
||||||
├── results/ # Auswertungen & Grafiken
|
│ ├── update_from_api.py # API-Updater (aktiv)
|
||||||
├── logs/ # Log-Dateien
|
│ ├── update_from_web.py # Web-Scraping-Fallback (nicht automatisiert)
|
||||||
└── setup_cron.sh # Cron-Job Einrichtung
|
│ ├── simple_update.py # Manuelle Eingabe
|
||||||
|
│ ├── watchdog.py # Prüft Daten-/Modell-Aktualität, alarmiert per Telegram
|
||||||
|
│ ├── validate_csv.py # manuelles Utility
|
||||||
|
│ ├── verify_draws.py # manuelles Utility
|
||||||
|
│ └── health_check.py # manuelles Utility
|
||||||
|
├── documentation/
|
||||||
|
│ └── ARCHITECTURE.md
|
||||||
|
├── results/ # Auswertungen (z.B. Superzahl-Statistik)
|
||||||
|
├── run_tip_generator.sh
|
||||||
|
├── run_update_and_learn.sh
|
||||||
|
├── run_watchdog.sh
|
||||||
|
└── logs/
|
||||||
```
|
```
|
||||||
|
|
||||||
## 🚀 Quick Start
|
## 🚀 Quick Start
|
||||||
@@ -43,19 +59,16 @@ Lotto/
|
|||||||
### 1. Installation
|
### 1. Installation
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Python-Abhängigkeiten installieren
|
python3 -m venv venv
|
||||||
pip install pandas numpy scikit-learn requests
|
source venv/bin/activate
|
||||||
|
pip install pandas numpy scikit-learn requests torch
|
||||||
# Optional: Deep Learning
|
|
||||||
pip install tensorflow
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### 2. Telegram-Bot einrichten
|
### 2. Telegram-Bot einrichten
|
||||||
|
|
||||||
1. Erstelle einen Bot mit [@BotFather](https://t.me/botfather)
|
1. Erstelle einen Bot mit [@BotFather](https://t.me/botfather)
|
||||||
2. Kopiere den Bot-Token
|
2. Kopiere den Bot-Token, hole deine Chat-ID (z.B. mit [@userinfobot](https://t.me/userinfobot))
|
||||||
3. Hole deine Chat-ID (z.B. mit [@userinfobot](https://t.me/userinfobot))
|
3. Konfiguriere `config/notifications.json` (siehe [TELEGRAM_BOT_SETUP.md](TELEGRAM_BOT_SETUP.md)):
|
||||||
4. Konfiguriere `config/notifications.json`:
|
|
||||||
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
@@ -67,360 +80,114 @@ pip install tensorflow
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
### 3. Manuell Tipps generieren
|
Test-Benachrichtigung senden:
|
||||||
|
|
||||||
```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
|
```bash
|
||||||
python scripts/utils/notifier.py --test
|
python scripts/utils/notifier.py --test
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### 3. Tipps manuell generieren
|
||||||
|
|
||||||
|
```bash
|
||||||
|
python scripts/automation/weekly_tip_generator.py --force --num-tips 10
|
||||||
|
|
||||||
|
# Nur Historie anzeigen
|
||||||
|
python scripts/automation/weekly_tip_generator.py --history
|
||||||
|
```
|
||||||
|
|
||||||
|
### 4. Daten manuell aktualisieren + Modelle neu trainieren
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./run_update_and_learn.sh
|
||||||
|
```
|
||||||
|
|
||||||
## 🧠 Generator-Strategien
|
## 🧠 Generator-Strategien
|
||||||
|
|
||||||
Der Ultimate AI/ML Hybrid Generator verwendet **4 verschiedene Strategien**:
|
Der Ultimate AI/ML Hybrid Generator (`scripts/generators/ultimate_ai_ml_hybrid_generator.py`) verteilt pro Lauf 10 Tipps über 4 Strategien, deren Gewichtung sich anhand der bisherigen Trefferleistung selbst anpasst (Startwerte in Klammern):
|
||||||
|
|
||||||
1. **PURE-AI** (30%): Basierend ausschließlich auf Machine Learning Predictions
|
1. **HYBRID-OPT** (40%): AI-Score + historisches Pattern-Gewicht kombiniert
|
||||||
2. **PURE-PATTERN** (25%): Historische Pattern-Analyse (NNMMHH-Kombinationen)
|
2. **BALANCED-SPREAD** (30%): erzwingt Verteilung über N/M/H-Zonen, kontrollierter Summenbereich
|
||||||
3. **HYBRID-OPT** (30%): Multi-objektive Optimierung (AI + Pattern + Diversity)
|
3. **HIGH-EV** (20%): 2–3 Zahlen >31, meidet empirisch belegte populäre Einzelzahlen — auf EV statt Trefferwahrscheinlichkeit optimiert
|
||||||
4. **ENSEMBLE** (15%): Best-of-all kombiniert alle Ansätze
|
4. **SOFT-CONTRARIAN** (10%): bevorzugt in den letzten 30 Ziehungen unterrepräsentierte Zahlen
|
||||||
|
|
||||||
### Ausgabe-Beispiel:
|
### Warum EV statt Trefferwahrscheinlichkeit?
|
||||||
|
|
||||||
```
|
Lotto-Ziehungen sind unabhängige Zufallsereignisse — kein Modell kann die
|
||||||
Nr 6 Numbers SZ Strategy AI-Score Pattern-W Confidence Quality
|
Trefferwahrscheinlichkeit über den statistischen Erwartungswert heben. Der
|
||||||
----------------------------------------------------------------------------------------
|
Quality-Score optimiert deshalb bewusst auf **Expected Value**: unpopuläre
|
||||||
1 7-14-21-28-35-42 3 PURE-AI 0.7234 0.3456 0.7123 ⭐ 0.756
|
Zahlenkombinationen haben bei einem Treffer weniger Mitgewinner und damit eine
|
||||||
2 2-11-19-27-36-45 7 HYBRID-OPT 0.6891 0.4123 0.6987 🌟 0.689
|
höhere Auszahlung. Details und Quellen dazu in
|
||||||
3 5-12-23-31-38-47 6 PURE-PATTERN 0.5234 0.5678 0.6234 🌟 0.621
|
[documentation/ARCHITECTURE.md](documentation/ARCHITECTURE.md#3-design-entscheidung-quality-score--ev-optimierung).
|
||||||
...
|
|
||||||
```
|
|
||||||
|
|
||||||
## 📈 Performance Tracking
|
## 🔄 Daten aktualisieren
|
||||||
|
|
||||||
Alle Generierungen werden in `data/generated_tips/generation_history.json` getrackt:
|
Der automatisierte Workflow (`auto_update_and_learn.py`) nutzt
|
||||||
|
`LottoAPIUpdater.fetch_from_all_apis()`: Lottoland zuerst (liefert die
|
||||||
```json
|
neueste Ziehung meist noch am Ziehungstag), GitHub-Archiv für die Historie.
|
||||||
{
|
Für manuelle Läufe stehen zusätzlich bereit:
|
||||||
"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
|
```bash
|
||||||
crontab -e
|
# Web-Scraping-Fallback (lotto.de) - nicht in der Automatisierung verdrahtet
|
||||||
```
|
|
||||||
|
|
||||||
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
|
python scripts/utils/update_from_web.py
|
||||||
```
|
|
||||||
|
|
||||||
3. **Letzter Fallback - Manuelle Eingabe:**
|
# Letzter Fallback: manuelle Eingabe / CSV-Import
|
||||||
```bash
|
|
||||||
python scripts/utils/simple_update.py
|
python scripts/utils/simple_update.py
|
||||||
```
|
```
|
||||||
|
|
||||||
### Nach dem Update
|
Jedes Update erstellt automatisch ein Backup unter `data/backups/` und
|
||||||
|
rotiert alte Backups (behält die letzten 30).
|
||||||
|
|
||||||
Nach dem erfolgreichen Update der Daten:
|
## 🐶 Watchdog
|
||||||
|
|
||||||
```bash
|
`scripts/utils/watchdog.py` läuft täglich (`com.lotto.watchdog.plist`) und
|
||||||
# Neue Tipps generieren (mit automatischem Retraining)
|
prüft, ob die letzte Ziehung in den Daten älter als 5 Tage ist bzw. ob die
|
||||||
python scripts/automation/weekly_tip_generator.py --force
|
Modelle noch auf einem älteren Stand trainiert sind als die neueste Ziehung.
|
||||||
|
Das fängt genau den Fall ab, dass ein `StartCalendarInterval`-Job verpasst
|
||||||
|
wurde (z.B. weil der Rechner im Schlaf war) — launchd holt das selbst nicht
|
||||||
|
nach. Bei einem Problem kommt ein Telegram-Alarm, sonst bleibt es still.
|
||||||
|
|
||||||
# Oder direkt den Generator aufrufen
|
## 🤖 Automatisierung
|
||||||
python scripts/generators/ultimate_ai_ml_hybrid_generator.py
|
|
||||||
|
Läuft über **launchd** (`~/Library/LaunchAgents/`), nicht crontab:
|
||||||
|
|
||||||
|
| Job | Plist | Zeitplan |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| Update & Learning | `com.lotto.update.plist` | Mi + Sa, 20:00 Uhr |
|
||||||
|
| Tipp-Generierung | `com.lotto.weekly.plist` | Di + Fr, 21:00 Uhr |
|
||||||
|
| Watchdog | `com.lotto.watchdog.plist` | täglich, 21:30 Uhr |
|
||||||
|
|
||||||
|
## 📲 Telegram-Benachrichtigungen
|
||||||
|
|
||||||
|
Bei erfolgreicher Tipp-Generierung bzw. nach jeder ausgewerteten Ziehung
|
||||||
|
verschickt `LottoNotifier` automatisch eine Zusammenfassung (bester Tipp, Ø
|
||||||
|
Confidence/Quality, Trefferauswertung). Der Watchdog nutzt denselben Kanal
|
||||||
|
für Alarme.
|
||||||
|
|
||||||
|
## 📈 Performance Tracking
|
||||||
|
|
||||||
|
Alle Generierungen werden in `data/generated_tips/generation_history.json`
|
||||||
|
protokolliert, alle Ziehungsauswertungen in `data/learning_log.json`.
|
||||||
|
|
||||||
|
## 🗂️ Datenformat
|
||||||
|
|
||||||
|
`data/AlleLottozahlen.csv` (Semikolon-getrennt):
|
||||||
|
|
||||||
|
```csv
|
||||||
|
datum;Z1;Z2;Z3;Z4;Z5;Z6;SZ
|
||||||
|
2026-08-08;2;8;22;30;38;43;4
|
||||||
```
|
```
|
||||||
|
|
||||||
### 🤖 Automatisches ML-Retraining
|
## Hinweise
|
||||||
|
|
||||||
Das System verwendet **intelligentes Retraining**:
|
- Lotto 6aus49: 6 Zahlen aus 49 + 1 Superzahl (0–9), Ziehungen Mi + Sa
|
||||||
|
- Keine Gewinngarantie — statistisches Analyse-Tool, keine Vorhersagekraft
|
||||||
- ✅ **Automatische Erkennung**: Prüft ob CSV neuer als ML-Cache
|
über den Zufalls-Erwartungswert hinaus (siehe Abschnitt "Warum EV statt
|
||||||
- ✅ **Smart Caching**: Nutzt Cache wenn Daten unverändert
|
Trefferwahrscheinlichkeit?")
|
||||||
- ✅ **Auto-Retrain**: Trainiert neu wenn neue Daten verfügbar
|
- Bot-Token niemals öffentlich teilen
|
||||||
|
|
||||||
**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
|
## 🙋 Support
|
||||||
|
|
||||||
Bei Fragen oder Problemen:
|
1. Logs prüfen: `logs/update_stdout.log`, `logs/stdout.log`, `logs/watchdog_stdout.log`
|
||||||
|
|
||||||
1. Check die Logs: `logs/weekly_tips.log`
|
|
||||||
2. Test-Benachrichtigung: `python scripts/utils/notifier.py --test`
|
2. Test-Benachrichtigung: `python scripts/utils/notifier.py --test`
|
||||||
3. Historie prüfen: `python scripts/automation/weekly_tip_generator.py --history`
|
3. Historie prüfen: `python scripts/automation/weekly_tip_generator.py --history`
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user