diff --git a/README.md b/README.md new file mode 100644 index 0000000..50786fa --- /dev/null +++ b/README.md @@ -0,0 +1,211 @@ +# Place-Order Trading Bot + +Automatisierter Forex/Gold-Trading-Bot für MetaTrader 5. Handelt XAUUSD (Gold) mit Multi-Timeframe-Analyse, adaptivem Rhythmus und mehrschichtigem Risikoschutz. + +**Version:** V1.9 (Notebook V1.6 Adaptive Complete) +**Symbol:** XAUUSD +**Broker:** Vantage International (Demo-Account konfiguriert) + +--- + +## Architektur + +``` +Jupyter Notebook (Hauptlogik) +├── Signal-Analyse extended_top_down_v2_adaptive() +├── Trade-Ausführung execute_trade_v2_adaptive() +├── Session-Filter session_filter_patch.py +├── Ranging-Filter multi_timeframe_regime_filter.py +└── Scheduler APScheduler (minütlich) + +Standalone-Module +├── position_monitor.py Exit-Erkennung via MT5 History +├── drawdown_protection.py Verlust-Limits mit DB-Persistenz +├── advanced_position_management.py Trailing Stop + Partial TP +├── equity_curve_trading.py Lot-Reduktion bei Equity < MA +├── loss_protection_manager.py Konsekutive Verluste + Circuit Breaker +└── enhanced_signal_scoring.py Multi-Faktor Signal-Bewertung + +Infrastruktur +├── trading_database.py SQLite-Wrapper (trading_bot.db) +├── infrastructure_patch.py DB + Telegram Orchestrierung +└── telegram_notifier.py Mobile Benachrichtigungen + +Interfaces +├── trading_bot_gui.py Tkinter Desktop-App +└── trading_dashboard.py Streamlit Web-Dashboard +``` + +--- + +## Voraussetzungen + +- Python 3.10+ +- MetaTrader 5 (installiert und eingeloggt) +- Windows (MT5 läuft nur auf Windows/Wine) + +```bash +pip install -r requirements.txt +``` + +Telegram optional — ohne Config laufen alle Notifications still. + +--- + +## Bot starten + +### Option 1 — Jupyter Notebook (empfohlen) +```bash +.\venv\Scripts\activate +jupyter notebook TradingBot_V1.6_Adaptive_Complete_CORRECTED.ipynb +``` +Alle Cells sequenziell ausführen (Kernel → Run All). + +### Option 2 — Desktop-GUI +```bash +python trading_bot_gui.py +``` + +### Option 3 — Nur Dashboard (Read-Only) +```bash +streamlit run trading_dashboard.py +``` + +--- + +## Konfiguration + +### Trading-Parameter (Notebook Cell 6) +```python +TRADING_CONFIG = { + 'lot_sizing': {'min_lot': 0.10, 'max_lot': 0.20, 'default_lot': 0.10}, + 'risk': {'max_risk_per_trade': 0.02, 'max_positions': 1}, + 'confidence': {'base_threshold': 95}, + 'atr': {'base_multiplier': 1.5, 'period': 14}, +} +``` + +### Session-Filter (`session_filter_patch.py`) +```python +SESSION_WHITELIST_CONFIG = { + 'enabled_sessions': { + 'asian': True, # 97.8% historische WR + 'ny': True, # 43–56% WR (mit Confidence-Filter) + 'london': False, # deaktiviert + 'overlap': True, + }, + 'base_confidence': 95, # Minimum Confidence für alle Sessions + 'max_risk_per_trade': 0.02, +} +``` + +### Drawdown-Schutz +Limits werden in `drawdown_protection.py` konfiguriert und in der DB persistiert (überleben Restarts): + +| Limit | Default | +|-------|---------| +| Tagesverlust | $100 | +| Wochenverlust | $300 | +| Monatsverlust | $800 | +| Consecutive Losses | 5 | +| Cooldown | 24h | + +### Telegram +Credentials in `telegram_config.json` (nicht in Git): +```json +{"bot_token": "...", "chat_id": "..."} +``` +Alternativ: Umgebungsvariablen `TELEGRAM_BOT_TOKEN` und `TELEGRAM_CHAT_ID`. + +--- + +## Aktive Schutzschichten + +| # | Schutz | Beschreibung | +|---|--------|-------------| +| 1 | **Ranging-Filter** | Blockiert Trades wenn ADX < 25 auf H1/H4/D1 | +| 2 | **Session-Filter** | Nur erlaubte Sessions (Asian, NY, Overlap) | +| 3 | **Confidence-Filter** | Session-spezifische Mindest-Confidence | +| 4 | **Drawdown-Protection** | Tages-/Wochen-/Monatsverlust-Limits | +| 5 | **Equity-Curve-Filter** | Lot-Reduktion wenn Equity unter MA | +| 6 | **Loss-Protection** | Consecutive Losses + Circuit Breaker | +| 7 | **News-Filter** | Blockiert 30 min vor/nach High-Impact-Events | +| 8 | **Position-Monitor** | Automatisches Exit-Logging via MT5 History | + +--- + +## Datenbank + +SQLite: `trading_bot.db` (nicht in Git) + +| Tabelle | Inhalt | +|---------|--------| +| `trades` | Alle Trades (status: open / closed / historical) | +| `bot_status` | Heartbeat-Log (start/stop Einträge) | +| `bot_settings` | Persistenter State (z.B. Drawdown-Pause) | +| `performance_summary` | Aggregierte Tagesstatistiken | + +**Aktueller DB-Zustand:** 0 Live-Trades, 626 historische Imports (status=`historical`). + +Nützliche Skripte: +```bash +python check_system_status.py # Übersicht + Consecutive Losses +python performance_analysis.py # Vollständige Performance-Auswertung +python cleanup_stale_positions.py # Stale open Positionen bereinigen +python reset_consecutive_losses.py # Notfall-Reset (nach manuellem Review) +``` + +--- + +## Wichtige Dateien + +| Datei | Zweck | +|-------|-------| +| `TradingBot_V1.6_Adaptive_Complete_CORRECTED.ipynb` | Hauptnotebook | +| `session_filter_patch.py` | Session-Whitelist + Trading-Check-Factory | +| `trading_database.py` | Datenbankzugriff | +| `drawdown_protection.py` | Verlustschutz (mit DB-Persistenz) | +| `position_monitor.py` | Automatische Exit-Erkennung | +| `advanced_position_management.py` | Trailing Stop, Partial TP | +| `telegram_notifier.py` | Benachrichtigungen | +| `infrastructure_patch.py` | DB + Telegram Orchestrierung | + +--- + +## Entwicklung + +### Nicht in Git (`.gitignore`) +- `telegram_config.json` — Credentials +- `trading_bot.db` — Laufzeit-Datenbank +- `trade_performance_*.json` — Trade-Daten +- `*.pkl` — ML-Modelle +- `*_backup_*.ipynb` — Notebook-Backups +- `venv/` — Virtuelle Umgebung + +### Workflow +```bash +git pull +.\venv\Scripts\activate +# ... Änderungen ... +git add +git commit -m "fix: kurze Beschreibung" +git push +``` + +### System-Check +```bash +python check_system_status.py +``` + +--- + +## Troubleshooting + +| Problem | Lösung | +|---------|--------| +| Trading pausiert | `check_system_status.py` → Drawdown-Grund prüfen | +| Kein Trade trotz Signal | Session-Filter aktiv? Confidence hoch genug? ADX > 25? | +| Position nicht in DB | `position_monitor` im Scheduler eingetragen? | +| Dashboard leer | `trade_filter = "Historical Only"` zeigt Import-Daten | +| MT5 nicht verbunden | MT5 starten → in GUI "Connect" klicken | +| `bot_settings` Fehler | `python -c "from trading_database import TradingDatabase; TradingDatabase()"` |