# 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()"` |