Files were edited but not staged in earlier commits: - adaptive_rhythm_manager.py: mt→mt5, pytz→timezone, get_volatility_level, shutdown() - check_market_regime.py: ADX_THRESHOLD, Wilder EWM, try/finally, UTC timestamp, sys import - check_system_status.py: remove duplicate cursor.execute - drawdown_protection.py: float(inf), persist pause state, DB save_setting, Markdown fix - performance_analysis.py: KeyError export fix, profit factor, drawdown positive, SQL filter - performance_analysis_simple.py: fromisoformat, numeric bin sort, profit factor - trading_dashboard.py: st.rerun(), session_state auto-refresh, pathlib DB path, errors=coerce Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
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)
pip install -r requirements.txt
Telegram optional — ohne Config laufen alle Notifications still.
Bot starten
Option 1 — Jupyter Notebook (empfohlen)
.\venv\Scripts\activate
jupyter notebook TradingBot_V1.6_Adaptive_Complete_CORRECTED.ipynb
Alle Cells sequenziell ausführen (Kernel → Run All).
Option 2 — Desktop-GUI
python trading_bot_gui.py
Option 3 — Nur Dashboard (Read-Only)
streamlit run trading_dashboard.py
Konfiguration
Trading-Parameter (Notebook Cell 6)
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)
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):
{"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:
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— Credentialstrading_bot.db— Laufzeit-Datenbanktrade_performance_*.json— Trade-Daten*.pkl— ML-Modelle*_backup_*.ipynb— Notebook-Backupsvenv/— Virtuelle Umgebung
Workflow
git pull
.\venv\Scripts\activate
# ... Änderungen ...
git add <dateien>
git commit -m "fix: kurze Beschreibung"
git push
System-Check
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()" |