## Major Features - Session Filter: NY-only trading (13:00-21:00 UTC) - SQLite Database: Structured trade logging - Telegram Bot: Real-time notifications (@Xausd_digger_bot) - Streamlit Dashboard: Visual monitoring & analytics - JSON Import: Historical data migration ## Infrastructure - trading_database.py: SQLite trade storage - telegram_notifier.py: Telegram integration - infrastructure_patch.py: Combined DB + Telegram - trading_dashboard.py: Real-time web dashboard - import_json_to_db.py: JSON to SQLite migration ## Session Filter (V1.8 Aggressive Mode) - session_filter_patch.py: Whitelist-based filter - Blocks: Asian, London, Overlap sessions - Active: NY session only (best performance: 47.6% WR) - Base confidence: 60% ## Documentation - V1.8_AGGRESSIVE_MODE_AKTIVIERT.md - FIX_DUPLICATE_SCHEDULER.md - DASHBOARD_WINDOWS_SERVER.md - SQLITE_TELEGRAM_SETUP.md - PROJECT_CLEANUP.md ## Cleanup - Archived old V1.1-V1.7 versions - Removed obsolete analysis scripts (replaced by dashboard) - Added .gitignore for secrets and temp files ## Breaking Changes - Requires telegram_config.json (use template) - Requires Python packages: streamlit, plotly 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
16 KiB
🗄️📱 SQLite + Telegram Integration Guide
Version: V1.8+ Datum: 26. November 2025 Features: Database Logging + Mobile Notifications
🎯 Was wird implementiert?
1. SQLite Database 🗄️
- Strukturiertes Trade Logging (statt JSON)
- Schnelle Performance-Queries
- Session/Confidence-basierte Analysen
- Historische Datenbank
2. Telegram Notifications 📱
- Live Trade Entry/Exit Benachrichtigungen
- Tägliche Performance Reports (22:00 UTC)
- Wöchentliche Summaries (Sonntag 23:00 UTC)
- Error Alerts
- Bot Status Updates
📦 Neue Dateien
| Datei | Beschreibung |
|---|---|
trading_database.py |
SQLite Database Core |
telegram_notifier.py |
Telegram Integration |
infrastructure_patch.py |
Integration mit TradingBot |
telegram_config.json |
Telegram Konfiguration (erstellen!) |
trading_bot.db |
SQLite Database (automatisch erstellt) |
🚀 Setup Guide - Schritt für Schritt
PHASE 1: Telegram Bot erstellen (5 Minuten)
Schritt 1.1: Bot erstellen bei @BotFather
- Öffne Telegram
- Suche nach
@BotFather - Sende
/newbot - Folge den Anweisungen:
- Bot Name: z.B. "My Trading Bot"
- Bot Username: z.B. "mytrading_bot" (muss auf "_bot" enden)
- Kopiere den Bot Token (z.B.
1234567890:ABCdefGHIjklMNOpqrsTUVwxyz)
Schritt 1.2: Chat ID herausfinden
- Suche nach
@userinfobotin Telegram - Sende
/start - Kopiere deine User ID (z.B.
987654321)
Schritt 1.3: Telegram Config erstellen
Erstelle eine neue Datei telegram_config.json:
{
"bot_token": "1234567890:ABCdefGHIjklMNOpqrsTUVwxyz",
"chat_id": "987654321",
"notifications": {
"trade_entry": true,
"trade_exit": true,
"daily_report": true,
"weekly_report": true,
"error_alerts": true
},
"daily_report_time": "22:00",
"weekly_report_day": "Sunday"
}
Wichtig: Ersetze bot_token und chat_id mit deinen echten Werten!
Schritt 1.4: Bot testen
python telegram_notifier.py
Erwartete Ausgabe:
✅ Telegram Bot connected: @mytrading_bot
✅ Created telegram_config_template.json
Wenn erfolgreich, sende eine Test-Nachricht:
from telegram_notifier import TelegramNotifier
notifier = TelegramNotifier(
bot_token='YOUR_BOT_TOKEN',
chat_id='YOUR_CHAT_ID'
)
notifier.send_message("🎉 Telegram Bot Test erfolgreich!")
Du solltest die Nachricht auf deinem Handy bekommen! 📱
PHASE 2: SQLite Database einrichten (2 Minuten)
Schritt 2.1: Database erstellen
python trading_database.py
Erwartete Ausgabe:
🗄️ TRADING DATABASE - System Check
======================================================================
📊 Tables created: 3
✅ trades
✅ performance_summary
✅ bot_status
📈 Overall Statistics:
Total Trades: 0
Win Rate: 0%
Net Profit: $0
======================================================================
✅ Database ready!
Schritt 2.2: Existierende JSON Daten migrieren (optional)
Wenn du bereits JSON Performance-Dateien hast:
from trading_database import TradingDatabase
db = TradingDatabase("trading_bot.db")
# Migriere alle JSON Files
import glob
json_files = glob.glob("trade_performance_*.json")
for json_file in json_files:
print(f"Migrating {json_file}...")
db.migrate_from_json(json_file)
db.close()
Schritt 2.3: Database prüfen
from trading_database import TradingDatabase
db = TradingDatabase("trading_bot.db")
# Zeige alle Trades
trades = db.get_recent_trades(limit=10)
print(f"Total trades in DB: {len(trades)}")
# Session Performance
session_perf = db.get_session_performance(days=30)
for session, stats in session_perf.items():
print(f"{session}: {stats['total_profit']} profit, {stats['win_rate']}% WR")
db.close()
PHASE 3: Integration mit TradingBot (10 Minuten)
Schritt 3.1: Imports hinzufügen
Am Anfang deines Notebooks (nach den MT5 Imports):
# ==========================================
# INFRASTRUCTURE IMPORTS (NEU!)
# ==========================================
from infrastructure_patch import (
TradingInfrastructure,
create_scheduled_reports
)
from trading_database import TradingDatabase
from telegram_notifier import TelegramNotifier
Schritt 3.2: Infrastructure initialisieren
Nach der MT5 Verbindung und VOR dem Scheduler:
# ==========================================
# INITIALIZE INFRASTRUCTURE
# ==========================================
print("🔧 Initializing Infrastructure...")
infra = TradingInfrastructure(
db_path="trading_bot.db",
enable_telegram=True, # Telegram aktivieren
enable_database=True # SQLite aktivieren
)
# Send Bot Started Notification
from session_filter_patch import SESSION_WHITELIST_CONFIG
bot_config = {
'version': 'V1.8',
'enabled_sessions': SESSION_WHITELIST_CONFIG['enabled_sessions'],
'base_confidence': SESSION_WHITELIST_CONFIG['base_confidence'],
'max_risk_per_trade': SESSION_WHITELIST_CONFIG['max_risk_per_trade']
}
infra.send_bot_started(bot_config)
print("✅ Infrastructure ready!")
Du solltest jetzt auf Telegram eine "Bot Started" Nachricht bekommen! 📱🚀
Schritt 3.3: Trade Logging hinzufügen
Modifiziere deine execute_trade_v2_adaptive Funktion:
VORHER (ca. Zeile wo Position geöffnet wird):
result = mt.order_send(request)
if result.retcode == mt.TRADE_RETCODE_DONE:
logger.info(f"✅ {trade_type} position opened")
# ... existing code ...
NACHHER (mit Infrastructure Logging):
result = mt.order_send(request)
if result.retcode == mt.TRADE_RETCODE_DONE:
logger.info(f"✅ {trade_type} position opened")
# ==========================================
# LOG TRADE ENTRY (NEU!)
# ==========================================
try:
# Hole Position Info
positions = mt.positions_get(symbol=symbol)
if positions:
position = positions[0]
# Erstelle Trade Data
trade_data = {
'ticket': position.ticket,
'position_id': position.identifier,
'symbol': symbol,
'strategy_name': strategy_name,
'type': 'BUY' if trade_type == 'BUY' else 'SELL',
'volume': volume,
'entry_price': position.price_open,
'sl_price': position.sl,
'tp_price': position.tp,
'entry_time': datetime.now().strftime('%Y-%m-%d %H:%M:%S'),
'session': rhythm_manager.get_current_session(),
'regime': regime,
'quality': quality,
'confidence': confidence,
'timeframe_alignment': timeframe_alignment,
'risk_amount': risk_amount,
'risk_pct': max_risk_per_trade
}
# Log to Database + Telegram
infra.log_trade_entry(trade_data)
except Exception as e:
logger.error(f"⚠️ Infrastructure logging failed: {e}")
# ==========================================
# ... existing code continues ...
Schritt 3.4: Exit Logging hinzufügen
Wenn Trade geschlossen wird (z.B. durch SL/TP):
Dies hängt davon ab, wie dein Bot Exits erkennt. Falls du einen Position Monitor hast:
# Wenn Position geschlossen wurde
if position_closed:
exit_data = {
'exit_price': close_price,
'exit_time': datetime.now().strftime('%Y-%m-%d %H:%M:%S'),
'duration_hours': (close_time - open_time).total_seconds() / 3600,
'profit': profit,
'commission': commission,
'swap': swap,
'net_profit': net_profit,
'profit_pct': (net_profit / risk_amount) * 100 if risk_amount else 0,
'rr_ratio': abs(net_profit / risk_amount) if risk_amount else 0,
'exit_reason': 'tp' if hit_tp else 'sl' if hit_sl else 'manual'
}
# Log Exit
infra.log_trade_exit(ticket, exit_data)
Schritt 3.5: Scheduled Reports hinzufügen
Nach dem Scheduler Setup:
# ==========================================
# SCHEDULER SETUP (existing)
# ==========================================
scheduler = BackgroundScheduler()
# ... existing jobs ...
# ==========================================
# ADD SCHEDULED REPORTS (NEU!)
# ==========================================
create_scheduled_reports(infra, scheduler)
# Start Scheduler
scheduler.start()
PHASE 4: Testing (5 Minuten)
Test 1: Infrastructure Status
# Prüfe ob alles läuft
print("\n🔍 Infrastructure Status:")
print(f" Database: {'✅' if infra.enable_database else '❌'}")
print(f" Telegram: {'✅' if infra.enable_telegram else '❌'}")
# Prüfe DB Stats
if infra.db:
stats = infra.db.get_overall_statistics(days=7)
print(f"\n📊 Last 7 Days:")
print(f" Trades: {stats.get('total_trades', 0)}")
print(f" Win Rate: {stats.get('win_rate', 0)}%")
print(f" Net Profit: ${stats.get('net_profit', 0):.2f}")
Test 2: Manual Telegram Test
# Sende Test Notification
if infra.telegram:
infra.telegram.send_message("🧪 Test: Infrastructure is working!")
Test 3: Database Query
# Query recent trades
if infra.db:
trades = infra.db.get_recent_trades(limit=5)
print(f"\n📝 Recent Trades: {len(trades)}")
for trade in trades:
print(f" {trade['symbol']} {trade['type']} @ {trade['entry_price']}")
📱 Was du auf Telegram sehen wirst
Bot Started (sofort)
🚀 TradingBot Started
Version: V1.8
Time: 2025-11-26 14:30:00 UTC
⚙️ Configuration:
Active Sessions: NY
Confidence Threshold: 60%
Max Risk/Trade: 1.0%
✅ Bot is now monitoring the market
Trade Entry (bei jedem Trade)
🟢 Trade Opened
Symbol: XAUUSD
Type: BUY
Entry: 2650.50
SL: 2645.50 | TP: 2660.50
Risk: $50.00 (1.0%)
Volume: 0.1 lots
🇺🇸 Session: NY
📊 Confidence: 72.5%
🎯 Quality: EXCELLENT
⏰ 2025-11-26 17:15:00 UTC
Trade Exit (bei jedem Close)
✅ Trade Closed 🟢
Symbol: XAUUSD
Type: BUY
Entry: 2650.50
Exit: 2660.50
Profit: +$100.00
Duration: 2.5h
Exit Reason: TP
R:R Ratio: 2.00
⏰ 2025-11-26 19:45:00 UTC
Daily Report (täglich 22:00 UTC)
📊 Daily Trading Report
📅 2025-11-26
━━━━━━━━━━━━━━━━━━━━
Trades: 3
Wins: 2 | Losses: 1
🎯 Win Rate: 66.7%
💰 Net Profit: $150.00
Gross Profit: $200.00
Gross Loss: $-50.00
Avg Trade: $50.00
━━━━━━━━━━━━━━━━━━━━
✅ Bot Status: Running
Weekly Report (Sonntag 23:00 UTC)
📈 Weekly Trading Report
📅 2025-11-20 to 2025-11-26
━━━━━━━━━━━━━━━━━━━━
📊 Overall Performance
Total Trades: 21
Wins: 10 | Losses: 11
Win Rate: 47.6%
💰 Net Profit: $660.00
🟢 Profit Factor: 1.85
Avg Trade: $31.43
━━━━━━━━━━━━━━━━━━━━
📍 Session Performance
🇺🇸 NY: +$660.00 (47.6% WR) ✅
━━━━━━━━━━━━━━━━━━━━
✅ Bot Status: Running
🔍 Nützliche Database Queries
Query 1: Session Performance (letzte 30 Tage)
from trading_database import TradingDatabase
db = TradingDatabase("trading_bot.db")
session_perf = db.get_session_performance(days=30)
for session, stats in session_perf.items():
print(f"{session.upper()}:")
print(f" Trades: {stats['count']}")
print(f" Win Rate: {stats['win_rate']}%")
print(f" Profit: ${stats['total_profit']:.2f}")
print()
Query 2: Confidence Analysis
conf_analysis = db.get_confidence_analysis(days=30)
for conf_range, stats in conf_analysis.items():
print(f"Confidence {conf_range}:")
print(f" Trades: {stats['count']}")
print(f" Win Rate: {stats['win_rate']}%")
print(f" Profit: ${stats['total_profit']:.2f}")
print()
Query 3: Best/Worst Trades
# Best Trades
db.cursor.execute("""
SELECT symbol, type, entry_price, exit_price, net_profit, session
FROM trades
WHERE status = 'closed'
ORDER BY net_profit DESC
LIMIT 5
""")
print("🏆 Top 5 Trades:")
for row in db.cursor.fetchall():
print(f" {row['symbol']} {row['type']}: ${row['net_profit']:.2f} ({row['session']})")
# Worst Trades
db.cursor.execute("""
SELECT symbol, type, entry_price, exit_price, net_profit, session
FROM trades
WHERE status = 'closed'
ORDER BY net_profit ASC
LIMIT 5
""")
print("\n💔 Bottom 5 Trades:")
for row in db.cursor.fetchall():
print(f" {row['symbol']} {row['type']}: ${row['net_profit']:.2f} ({row['session']})")
db.close()
Query 4: Daily Breakdown
db.cursor.execute("""
SELECT
DATE(entry_time) as date,
COUNT(*) as trades,
SUM(CASE WHEN net_profit > 0 THEN 1 ELSE 0 END) as wins,
ROUND(SUM(net_profit), 2) as daily_profit
FROM trades
WHERE status = 'closed'
AND entry_time >= datetime('now', '-30 days')
GROUP BY DATE(entry_time)
ORDER BY date DESC
""")
print("📅 Daily Performance (Last 30 Days):")
for row in db.cursor.fetchall():
print(f" {row['date']}: {row['trades']} trades, {row['wins']} wins, ${row['daily_profit']}")
🛠️ Troubleshooting
Problem 1: Telegram nicht verbunden
Symptom: ❌ Telegram connection failed
Lösung:
- Prüfe
telegram_config.jsonexistiert - Prüfe Bot Token ist korrekt
- Prüfe Chat ID ist korrekt
- Teste mit:
python telegram_notifier.py
Problem 2: Database locked
Symptom: database is locked
Lösung:
# Stelle sicher nur eine Connection offen ist
db.close()
# ODER: Benutze Context Manager
with TradingDatabase("trading_bot.db") as db:
# queries...
pass # automatisch geschlossen
Problem 3: Keine Notifications
Symptom: Bot läuft, aber keine Telegram Nachrichten
Lösung:
- Prüfe
infra.enable_telegramistTrue - Sende Test-Nachricht manuell
- Prüfe Bot ist nicht von @BotFather blockiert
- Starte eine Konversation mit deinem Bot (sende
/start)
Problem 4: Alte Trades nicht in DB
Symptom: Database zeigt 0 Trades
Lösung:
# Migriere JSON Daten
from infrastructure_patch import TradingInfrastructure
infra = TradingInfrastructure()
infra.migrate_json_files(".") # Migriert alle JSON Files
📊 Performance Vorteile
Vorher (nur JSON):
- ❌ Schwer zu analysieren
- ❌ Manuelle Performance-Berechnung
- ❌ Keine Live Updates
- ❌ Keine Session-Analyse
Nachher (SQLite + Telegram):
- ✅ Instant Queries
- ✅ Automatische Reports
- ✅ Mobile Benachrichtigungen
- ✅ Session/Confidence Analytics
- ✅ Historische Datenbank
🎯 Nächste Schritte
Nach erfolgreicher Integration:
-
1 Woche monitoren:
- Prüfe tägliche Telegram Reports
- Verifiziere Database logging
- Teste Queries
-
Performance analysieren:
# Nach 1 Woche stats = infra.get_performance_summary(days=7) print(stats) -
Optional - Custom Queries:
- Erstelle eigene Performance-Metriken
- Exportiere Daten für Excel/Charts
- Backtesting mit historischen Daten
-
Phase 2 Features (später):
- Position Scaling basierend auf Confidence
- ML Signal Filter
- Multi-Symbol Support
✅ Checklist - Ist alles fertig?
- Telegram Bot erstellt (@BotFather)
- Chat ID erhalten (@userinfobot)
telegram_config.jsonerstellt mit echten Wertenpython telegram_notifier.pyläuft ohne Fehlerpython trading_database.pyerstellt DB- Alte JSON Daten migriert (optional)
- Infrastructure im Notebook initialisiert
- Trade Entry Logging hinzugefügt
- Trade Exit Logging hinzugefügt (wenn möglich)
- Scheduled Reports aktiviert
- Test-Trade durchgeführt → Telegram Notification erhalten
- Database Query funktioniert
- Bot auf VPS deployed
🎉 Zusammenfassung
Mit SQLite + Telegram hast du jetzt:
🗄️ Strukturierte Datenbank für alle Trades 📱 Live Mobile Notifications für jeden Trade 📊 Automatische Performance Reports täglich & wöchentlich 🔍 Schnelle Analytics mit SQL Queries 📈 Historische Daten für Backtesting ⚠️ Error Alerts wenn etwas schief geht
V1.8 ist jetzt eine professionelle Trading-Platform! 🚀
Bei Fragen oder Problemen: Check Troubleshooting oder frag nach! 💪