Files
Place-Order-Trading-Bot/SQLITE_TELEGRAM_SETUP.md
T
cbazzaandClaude 596718e30b feat: Trading Bot V1.8 - Aggressive Mode + Infrastructure
## 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>
2025-11-26 21:14:01 +01:00

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

  1. Öffne Telegram
  2. Suche nach @BotFather
  3. Sende /newbot
  4. Folge den Anweisungen:
    • Bot Name: z.B. "My Trading Bot"
    • Bot Username: z.B. "mytrading_bot" (muss auf "_bot" enden)
  5. Kopiere den Bot Token (z.B. 1234567890:ABCdefGHIjklMNOpqrsTUVwxyz)

Schritt 1.2: Chat ID herausfinden

  1. Suche nach @userinfobot in Telegram
  2. Sende /start
  3. 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:

  1. Prüfe telegram_config.json existiert
  2. Prüfe Bot Token ist korrekt
  3. Prüfe Chat ID ist korrekt
  4. 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:

  1. Prüfe infra.enable_telegram ist True
  2. Sende Test-Nachricht manuell
  3. Prüfe Bot ist nicht von @BotFather blockiert
  4. 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. 1 Woche monitoren:

    • Prüfe tägliche Telegram Reports
    • Verifiziere Database logging
    • Teste Queries
  2. Performance analysieren:

    # Nach 1 Woche
    stats = infra.get_performance_summary(days=7)
    print(stats)
    
  3. Optional - Custom Queries:

    • Erstelle eigene Performance-Metriken
    • Exportiere Daten für Excel/Charts
    • Backtesting mit historischen Daten
  4. 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.json erstellt mit echten Werten
  • python telegram_notifier.py läuft ohne Fehler
  • python trading_database.py erstellt 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! 💪