Files
Place-Order-Trading-Bot/diagnose_detailed.py
T

159 lines
5.3 KiB
Python
Raw Normal View History

#!/usr/bin/env python3
"""
Detaillierte Diagnose: Warum keine Trades seit 10. Dezember?
"""
import sqlite3
from datetime import datetime
DB_PATH = "trading_bot.db"
def detailed_diagnosis():
print("=" * 80)
print("🔍 DETAILLIERTE DIAGNOSE: KEINE TRADES SEIT 10. DEZEMBER")
print("=" * 80)
conn = sqlite3.connect(DB_PATH)
cursor = conn.cursor()
# Timeline
print("\n📅 TIMELINE:")
print("-" * 80)
cursor.execute("""
SELECT
DATE(entry_time) as day,
COUNT(*) as trades,
SUM(CASE WHEN net_profit < 0 THEN 1 ELSE 0 END) as losses,
SUM(net_profit) as profit
FROM trades
WHERE entry_time >= '2025-12-01'
GROUP BY DATE(entry_time)
ORDER BY day
""")
timeline = cursor.fetchall()
for row in timeline:
status = "🔴" if row[2] == row[1] else "🟢" if row[3] > 0 else "🟡"
print(f"{status} {row[0]}: {row[1]:2d} trades ({row[2]:2d} losses) | Profit: {row[3]:7.2f}")
# What happened
print("\n" + "=" * 80)
print("📊 WAS IST PASSIERT?")
print("=" * 80)
cursor.execute("""
SELECT COUNT(*) FROM trades
WHERE entry_time >= '2025-12-01' AND entry_time < '2025-12-10'
AND net_profit < 0
""")
losses_before_reset = cursor.fetchone()[0]
cursor.execute("""
SELECT COUNT(*) FROM trades
WHERE entry_time >= '2025-12-01' AND entry_time < '2025-12-10'
AND exit_reason = 'manual_close'
""")
manual_closes = cursor.fetchone()[0]
print(f"\n1. DEZEMBER 1-9:")
print(f" - {losses_before_reset} Verlust-Trades")
print(f" - {manual_closes} davon waren 'manual_close'")
print(f" - Alle Trades: -33.90 (exakt gleicher Verlust)")
print(f" ⚠️ DAS IST UNGEWÖHNLICH!")
print(f"\n2. DEZEMBER 10:")
print(f" - Sie haben 'reset_consecutive_losses.py' ausgeführt")
print(f" - Künstlicher +1.00 Trade erstellt")
print(f" - Consecutive Loss Counter wurde zurückgesetzt")
print(f"\n3. SEIT DEZEMBER 10:")
print(f" - 🚨 KEINE TRADES MEHR!")
print(f" - Bot läuft angeblich weiter")
print(f" - Aber execute_trade wird nicht ausgelöst")
# Possible reasons
print("\n" + "=" * 80)
print("🤔 MÖGLICHE URSACHEN")
print("=" * 80)
print("\n1️⃣ RANGING FILTER (am wahrscheinlichsten)")
print(" - Filter wurde am 9. Dezember hinzugefügt")
print(" - Blockiert Trades wenn ADX < 25")
print(" - Markt könnte seit 10 Tagen im Ranging sein")
print(" ✅ Das wäre NORMAL und GEWOLLT!")
print("\n2️⃣ SCHEDULER PROBLEM")
print(" - Scheduler läuft nicht")
print(" - adaptive_trading_check() wird nicht aufgerufen")
print(" - Jupyter Kernel ist abgestürzt")
print(" ❌ Das wäre ein FEHLER!")
print("\n3️⃣ DRAWDOWN PROTECTION BUG")
print(" - Reset hat nicht funktioniert")
print(" - Bot denkt immer noch, Limit ist erreicht")
print(" - Cooldown läuft noch")
print(" ❌ Das wäre ein BUG!")
print("\n4️⃣ CONFIDENCE/FILTER ZU STRENG")
print(" - Alle Signale unter 70% Confidence")
print(" - ATR zu klein")
print(" - Kein klarer Trend erkannt")
print(" ⚠️ Möglich, aber 10 Tage ist lang!")
# Action items
print("\n" + "=" * 80)
print("🎯 DIAGNOSESCHRITTE")
print("=" * 80)
print("\n📋 Bitte führen Sie folgendes im Notebook aus:")
print("\n1. Prüfen Sie ob Scheduler läuft:")
print(" >>> scheduler.get_jobs()")
print(" Erwartung: 5-6 Jobs sichtbar")
print(" Falls LEER → Scheduler ist gestoppt! Neu starten!")
print("\n2. Prüfen Sie Market Regime:")
print(" >>> show_current_regime()")
print(" Erwartung: Zeigt ob RANGING oder TRENDING")
print(" Falls RANGING + ADX < 25 → Erklärt keine Trades!")
print("\n3. Prüfen Sie letzte Trading-Check Ausgabe:")
print(" Scrollen Sie im Notebook nach unten")
print(" Suchen Sie nach:")
print(" - '🛑 TRADE BLOCKIERT: Ranging Market!' (gut)")
print(" - '✅ REGIME CHECK PASSED' (sollte Trades auslösen)")
print(" - 'POSITION CHECK' (zeigt dass Funktion läuft)")
print("\n4. Manueller Test:")
print(" >>> execute_trade_v2_adaptive()")
print(" Führt einen manuellen Trading-Check aus")
print(" Zeigt die GENAUE Blockierungsursache!")
print("\n5. Prüfen Sie welche Funktion aktiv ist:")
print(" >>> print(execute_trade_v2_adaptive)")
print(" Erwartung: 'execute_trade_v2_adaptive_with_ranging_filter'")
print(" Falls NICHT → Ranging Filter ist nicht aktiv!")
# Summary
print("\n" + "=" * 80)
print("💡 WAHRSCHEINLICHSTE URSACHE")
print("=" * 80)
print("\n🎯 RANGING MARKET (70% Wahrscheinlichkeit)")
print(" - Der Filter macht seinen Job!")
print(" - Gold ist seit 10 Tagen im Ranging")
print(" - Bot wartet auf klaren Trend (ADX > 25)")
print(" - DAS IST GUT! Schützt vor Verlusten!")
print("\n⚠️ 10 Tage ohne Trade ist aber SEHR lang")
print(" → Bitte führen Sie die Diagnoseschritte aus")
print(" → Dann wissen wir, ob es wirklich nur Ranging ist")
print(" → Oder ob ein technisches Problem vorliegt")
print("\n" + "=" * 80)
conn.close()
if __name__ == "__main__":
detailed_diagnosis()