{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# TradingBot V1.6 - Adaptive Complete Version πŸš€πŸ›‘οΈβš‘\n", "\n", "## πŸ†• **NEU in V1.6: Adaptive Trading Rhythm**\n", "- ⚑ **Adaptive Intervalle** - Automatische Anpassung: 5/15/30 Minuten\n", "- πŸ“Š **VolatilitΓ€ts-basiert** - ATR-gesteuerte Intervall-Wahl\n", "- 🌍 **Session-abhΓ€ngig** - Asian/London/NY/Overlap\n", "- 🎯 **Intelligente Matrix** - Optimale Kombination aus Session + VolatilitΓ€t\n", "\n", "## βœ… **Features aus V1.5 Complete Relaxed:**\n", "- πŸ›‘οΈ **Position Control System** - Maximal 1 Trade gleichzeitig\n", "- πŸ“Š **Performance Monitoring & Logging**\n", "- πŸ€– **APScheduler Integration** - Automatisierung\n", "- πŸ”§ **Position Management Funktionen** - VOLLSTΓ„NDIG!\n", "- πŸš€ **Relaxed Parameter** - Niedrigere Schwellen fΓΌr mehr Signale\n", "- πŸ§ͺ **Umfassende Testing Suite**\n", "- πŸŽ›οΈ **Management Control Panel**\n", "\n", "## 🎯 **Adaptive Rhythm Schema:**\n", "```\n", "Session β”‚ Hohe Vol β”‚ Mittlere Vol β”‚ Niedrige Vol\n", "───────────┼──────────┼──────────────┼─────────────\n", "Overlap β”‚ 5min β”‚ 15min β”‚ 15min\n", "London/NY β”‚ 5min β”‚ 15min β”‚ 30min\n", "Asian β”‚ 15min β”‚ 30min β”‚ 30min\n", "```\n", "\n", "## πŸŽ‰ **V1.6 COMPLETE - Das Beste aus beiden Welten:**\n", "- βœ… Alle Funktionen aus V1.5\n", "- βœ… Neue adaptive Features aus V1.6\n", "- βœ… Production-Ready!" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 1. Imports und Setup" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "βœ… All imports successful - V1.6 Adaptive Complete (CORRECTED)\n" ] } ], "source": [ "# Standard Imports\n", "import pandas as pd\n", "import numpy as np\n", "import MetaTrader5 as mt\n", "import pandas_ta as ta\n", "from scipy.signal import savgol_filter, find_peaks\n", "from sklearn.linear_model import LinearRegression\n", "from tabulate import tabulate\n", "from datetime import datetime, timedelta, time\n", "import json\n", "import keyring as kr\n", "\n", "# V1.6: ZusΓ€tzliche Imports fΓΌr Adaptive Rhythm\n", "import pytz\n", "import logging\n", "from apscheduler.schedulers.background import BackgroundScheduler\n", "\n", "# Setup Logging\n", "logging.basicConfig(\n", " level=logging.INFO,\n", " format='%(asctime)s - %(levelname)s - %(message)s'\n", ")\n", "logger = logging.getLogger(__name__)\n", "\n", "print(\"βœ… All imports successful - V1.6 Adaptive Complete (CORRECTED)\")" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "βœ… Infrastructure modules loaded\n" ] } ], "source": [ "# ==========================================\n", "# INFRASTRUCTURE IMPORTS (V1.8)\n", "# ==========================================\n", "\n", "from infrastructure_patch import (\n", " TradingInfrastructure,\n", " create_scheduled_reports\n", ")\n", "from trading_database import TradingDatabase\n", "from telegram_notifier import TelegramNotifier\n", "\n", "print(\"βœ… Infrastructure modules loaded\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 2. πŸ†• Adaptive Rhythm Manager (NEU in V1.6)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "βœ… Adaptive Rhythm Manager defined\n" ] } ], "source": [ "class AdaptiveRhythmManager:\n", " \"\"\"\n", " πŸ†• V1.6 Feature: Adaptive Trading Rhythm\n", " \n", " Verwaltet adaptiven Trading-Rhythmus basierend auf:\n", " - MarktvolatilitΓ€t (ATR)\n", " - Trading-Session (Asian/London/NY/Overlap)\n", " - Marktregime\n", " \"\"\"\n", " \n", " def __init__(self, symbol=\"XAUUSD\"):\n", " self.symbol = symbol\n", " self.current_interval = 5\n", " \n", " # Zeitintervalle in Minuten\n", " self.intervals = {\n", " 'fast': 5, # Hohe VolatilitΓ€t, aktive Sessions\n", " 'medium': 15, # Moderate VolatilitΓ€t, Standard\n", " 'slow': 30 # Niedrige VolatilitΓ€t, ruhige Sessions\n", " }\n", " \n", " # ATR-Schwellenwerte fΓΌr XAUUSD (Gold)\n", " self.atr_thresholds = {\n", " 'high': 15.0, # Hohe VolatilitΓ€t\n", " 'medium': 8.0, # Moderate VolatilitΓ€t\n", " 'low': 5.0 # Niedrige VolatilitΓ€t\n", " }\n", " \n", " # Session-Zeiten (UTC)\n", " self.sessions = {\n", " 'asian': (time(0, 0), time(8, 0)), # 00:00-08:00 UTC\n", " 'london': (time(8, 0), time(16, 0)), # 08:00-16:00 UTC\n", " 'ny': (time(13, 0), time(21, 0)), # 13:00-21:00 UTC\n", " 'overlap': (time(13, 0), time(16, 0)) # London-NY Overlap\n", " }\n", " \n", " def get_current_session(self):\n", " \"\"\"Ermittelt die aktuelle Trading-Session\"\"\"\n", " now_utc = datetime.now(pytz.UTC).time()\n", " \n", " # Overlap hat hΓΆchste PrioritΓ€t\n", " if self.sessions['overlap'][0] <= now_utc <= self.sessions['overlap'][1]:\n", " return 'overlap'\n", " elif self.sessions['london'][0] <= now_utc < self.sessions['london'][1]:\n", " return 'london'\n", " elif self.sessions['ny'][0] <= now_utc < self.sessions['ny'][1]:\n", " return 'ny'\n", " return 'asian'\n", " \n", " def get_volatility_level(self, atr_value):\n", " \"\"\"Klassifiziert die VolatilitΓ€t basierend auf ATR\"\"\"\n", " if atr_value >= self.atr_thresholds['high']:\n", " return 'high'\n", " elif atr_value >= self.atr_thresholds['medium']:\n", " return 'medium'\n", " return 'low'\n", " \n", " def get_market_data(self):\n", " \"\"\"Hole Marktdaten fΓΌr ATR-Analyse\"\"\"\n", " try:\n", " rates = mt.copy_rates_from_pos(self.symbol, mt.TIMEFRAME_H1, 0, 50)\n", " if rates is None:\n", " return None\n", " \n", " df = pd.DataFrame(rates)\n", " df['time'] = pd.to_datetime(df['time'], unit='s')\n", " df.set_index('time', inplace=True)\n", " df['atr'] = ta.atr(df['high'], df['low'], df['close'], length=14)\n", " return df\n", " except Exception as e:\n", " logger.error(f\"Fehler beim Laden der Marktdaten: {e}\")\n", " return None\n", " \n", " def calculate_optimal_interval(self):\n", " \"\"\"Berechnet optimales Trading-Intervall\"\"\"\n", " session = self.get_current_session()\n", " df = self.get_market_data()\n", " \n", " if df is None:\n", " return self.current_interval\n", " \n", " current_atr = df['atr'].iloc[-1]\n", " volatility = self.get_volatility_level(current_atr)\n", " optimal_interval = self._determine_interval(session, volatility)\n", " \n", " # Logge Γ„nderungen\n", " if optimal_interval != self.current_interval:\n", " logger.info(f\"πŸ”„ Rhythmus-Γ„nderung: {self.current_interval}m β†’ {optimal_interval}m\")\n", " logger.info(f\" Session: {session}, VolatilitΓ€t: {volatility} (ATR: {current_atr:.2f})\")\n", " \n", " self.current_interval = optimal_interval\n", " return optimal_interval\n", " \n", " def _determine_interval(self, session, volatility):\n", " \"\"\"\n", " Intervall-Entscheidungs-Matrix:\n", " \n", " Session β”‚ Hohe Vol β”‚ Mittlere Vol β”‚ Niedrige Vol\n", " ───────────┼──────────┼──────────────┼─────────────\n", " Overlap β”‚ 5min β”‚ 15min β”‚ 15min\n", " London/NY β”‚ 5min β”‚ 15min β”‚ 30min\n", " Asian β”‚ 15min β”‚ 30min β”‚ 30min\n", " \"\"\"\n", " if session == 'overlap':\n", " return self.intervals['fast'] if volatility == 'high' else self.intervals['medium']\n", " elif session in ['london', 'ny']:\n", " if volatility == 'high':\n", " return self.intervals['fast']\n", " elif volatility == 'medium':\n", " return self.intervals['medium']\n", " return self.intervals['slow']\n", " else: # asian\n", " return self.intervals['medium'] if volatility == 'high' else self.intervals['slow']\n", " \n", " def get_status_report(self):\n", " \"\"\"Erstellt Status-Report\"\"\"\n", " session = self.get_current_session()\n", " df = self.get_market_data()\n", " \n", " if df is not None:\n", " current_atr = df['atr'].iloc[-1]\n", " volatility = self.get_volatility_level(current_atr)\n", " else:\n", " current_atr = 0\n", " volatility = 'unknown'\n", " \n", " return f\"\"\"\n", "╔════════════════════════════════════════════════════════╗\n", "β•‘ ADAPTIVE RHYTHM STATUS - {datetime.now().strftime('%H:%M:%S UTC')} β•‘\n", "╠════════════════════════════════════════════════════════╣\n", "β•‘ Aktuelles Intervall: {self.current_interval:>2} Minuten β•‘\n", "β•‘ Trading Session: {session.upper():<15} β•‘\n", "β•‘ VolatilitΓ€tslevel: {volatility.upper():<15} β•‘\n", "β•‘ ATR (H1): {current_atr:>6.2f} β•‘\n", "╠════════════════════════════════════════════════════════╣\n", "β•‘ INTERVALL-SCHEMA: β•‘\n", "β•‘ β€’ Overlap (13-16 UTC): 5-15 Min (aktivste Phase) β•‘\n", "β•‘ β€’ London/NY: 5-30 Min (volatilitΓ€tsabh.) β•‘\n", "β•‘ β€’ Asian Session: 15-30 Min (ruhigere Phase) β•‘\n", "β•šβ•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•\n", "\"\"\"\n", "\n", "print(\"βœ… Adaptive Rhythm Manager defined\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 3. MT5 Login und Setup" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Login successful: True\n", "Symbol: XAUUSD\n", "Strategy: TradingBot_V1.6\n", "Max Positions: 1\n", "Version: V1.6 COMPLETE - Adaptive + Full Features! πŸš€πŸ›‘οΈβš‘\n", "\n", "\n", "╔════════════════════════════════════════════════════════╗\n", "β•‘ ADAPTIVE RHYTHM STATUS - 18:02:20 UTC β•‘\n", "╠════════════════════════════════════════════════════════╣\n", "β•‘ Aktuelles Intervall: 5 Minuten β•‘\n", "β•‘ Trading Session: NY β•‘\n", "β•‘ VolatilitΓ€tslevel: HIGH β•‘\n", "β•‘ ATR (H1): 15.80 β•‘\n", "╠════════════════════════════════════════════════════════╣\n", "β•‘ INTERVALL-SCHEMA: β•‘\n", "β•‘ β€’ Overlap (13-16 UTC): 5-15 Min (aktivste Phase) β•‘\n", "β•‘ β€’ London/NY: 5-30 Min (volatilitΓ€tsabh.) β•‘\n", "β•‘ β€’ Asian Session: 15-30 Min (ruhigere Phase) β•‘\n", "β•šβ•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•\n", "\n" ] } ], "source": [ "# MT5 Login\n", "mt.initialize()\n", "login = 10800246\n", "server = 'VantageInternational-Demo'\n", "password = kr.get_password(server, str(login))\n", "login_result = mt.login(login, password, server)\n", "print(f\"Login successful: {login_result}\")\n", "\n", "# Trading Parameter\n", "symbol = \"XAUUSD\"\n", "strategy_name = \"TradingBot_V1.6\"\n", "max_positions = 1\n", "\n", "print(f\"Symbol: {symbol}\")\n", "print(f\"Strategy: {strategy_name}\")\n", "print(f\"Max Positions: {max_positions}\")\n", "print(f\"Version: V1.6 COMPLETE - Adaptive + Full Features! πŸš€πŸ›‘οΈβš‘\")\n", "\n", "# πŸ†• Initialisiere Adaptive Rhythm Manager\n", "rhythm_manager = AdaptiveRhythmManager(symbol)\n", "print(\"\\n\" + rhythm_manager.get_status_report())" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "πŸ”§ Initializing Infrastructure...\n", "βœ… Database initialized: trading_bot.db\n", "βœ… Telegram Bot connected: @Xausd_digger_bot\n", "βœ… Telegram notifications enabled\n", "βœ… Infrastructure ready!\n", " Database: βœ…\n", " Telegram: βœ…\n" ] } ], "source": [ "# ==========================================\n", "# INITIALIZE INFRASTRUCTURE (V1.8)\n", "# ==========================================\n", "\n", "print(\"πŸ”§ Initializing Infrastructure...\")\n", "\n", "# Initialize Infrastructure\n", "infra = TradingInfrastructure(\n", " db_path=\"trading_bot.db\",\n", " enable_telegram=True,\n", " enable_database=True\n", ")\n", "\n", "# Bot Started Notification\n", "from session_filter_patch import SESSION_WHITELIST_CONFIG\n", "\n", "bot_config = {\n", " 'version': 'V1.8',\n", " 'enabled_sessions': SESSION_WHITELIST_CONFIG['enabled_sessions'],\n", " 'base_confidence': SESSION_WHITELIST_CONFIG['base_confidence'],\n", " 'max_risk_per_trade': SESSION_WHITELIST_CONFIG['max_risk_per_trade']\n", "}\n", "\n", "infra.send_bot_started(bot_config)\n", "\n", "print(\"βœ… Infrastructure ready!\")\n", "print(f\" Database: {'βœ…' if infra.enable_database else '❌'}\")\n", "print(f\" Telegram: {'βœ…' if infra.enable_telegram else '❌'}\")" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "2025-12-26 18:02:21,801 - INFO - 🎯 Advanced Position Manager initialized\n", "2025-12-26 18:02:21,803 - INFO - Adaptive Sizing: βœ…\n", "2025-12-26 18:02:21,803 - INFO - Trailing Stop: βœ…\n", "2025-12-26 18:02:21,804 - INFO - Partial TP: βœ…\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "🎯 Initializing Advanced Position Management...\n", "βœ… Advanced Position Management activated!\n", " πŸ“Š Adaptive Position Sizing: ACTIVE\n", " β€’ High Confidence (β‰₯80%): 1.5x risk\n", " β€’ Medium Confidence (β‰₯70%): 1.0x risk\n", " β€’ Low Confidence (<70%): 0.5x risk\n", "\n", " πŸ“ˆ Trailing Stop-Loss: ACTIVE\n", " β€’ Break-Even at 50% progress to TP\n", " β€’ Lock 50% profit at 75% progress\n", "\n", " 🎯 Partial Take Profit: ACTIVE\n", " β€’ TP1 at 1.5R (close 50%)\n", " β€’ TP2 at 2.5R (let 50% run)\n" ] } ], "source": [ "# ==========================================\n", "# ADVANCED POSITION MANAGEMENT SETUP\n", "# ==========================================\n", "\n", "from session_filter_patch import SESSION_WHITELIST_CONFIG\n", "from advanced_position_management import AdvancedPositionManager\n", "\n", "print(\"🎯 Initializing Advanced Position Management...\")\n", "\n", "# Initialize Manager with all features\n", "adv_position_mgr = AdvancedPositionManager(\n", " enable_adaptive_sizing=True, # βœ… Adaptive Position Sizing\n", " enable_trailing_stop=True, # βœ… Trailing Stop-Loss\n", " enable_partial_tp=True, # βœ… Partial Take Profit\n", " base_risk=SESSION_WHITELIST_CONFIG['max_risk_per_trade'] # βœ… 2% Base Risk from config\n", ")\n", "\n", "print(\"βœ… Advanced Position Management activated!\")\n", "print(\" πŸ“Š Adaptive Position Sizing: ACTIVE\")\n", "print(\" β€’ High Confidence (β‰₯80%): 1.5x risk\")\n", "print(\" β€’ Medium Confidence (β‰₯70%): 1.0x risk\")\n", "print(\" β€’ Low Confidence (<70%): 0.5x risk\")\n", "print(\"\")\n", "print(\" πŸ“ˆ Trailing Stop-Loss: ACTIVE\")\n", "print(\" β€’ Break-Even at 50% progress to TP\")\n", "print(\" β€’ Lock 50% profit at 75% progress\")\n", "print(\"\")\n", "print(\" 🎯 Partial Take Profit: ACTIVE\")\n", "print(\" β€’ TP1 at 1.5R (close 50%)\")\n", "print(\" β€’ TP2 at 2.5R (let 50% run)\")\n" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "πŸ”§ Initializing Position Monitor...\n", "βœ… Position Monitor ready!\n", " Will check for closed positions every minute\n", " Closed trades will be automatically logged with:\n", " β€’ Exit price & time\n", " β€’ Profit/Loss calculation\n", " β€’ Exit reason (TP/SL/Manual)\n", " β€’ Telegram notification\n" ] } ], "source": [ "# ==========================================\n", "# POSITION MONITOR SETUP (V1.8)\n", "# ==========================================\n", "\n", "from position_monitor import PositionMonitor\n", "\n", "print(\"πŸ”§ Initializing Position Monitor...\")\n", "\n", "# Create Position Monitor\n", "position_monitor = PositionMonitor(infra.db, infra.telegram)\n", "\n", "print(\"βœ… Position Monitor ready!\")\n", "print(\" Will check for closed positions every minute\")\n", "print(\" Closed trades will be automatically logged with:\")\n", "print(\" β€’ Exit price & time\")\n", "print(\" β€’ Profit/Loss calculation\")\n", "print(\" β€’ Exit reason (TP/SL/Manual)\")\n", "print(\" β€’ Telegram notification\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 4. πŸ›‘οΈ Position Control Functions (VOLLSTΓ„NDIG!)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "βœ… Position Control functions defined (COMPLETE with close function!)\n" ] } ], "source": [ "def check_existing_positions(symbol=\"XAUUSD\", strategy_name=\"TradingBot_V1.6\"):\n", " \"\"\"\n", " ÜberprΓΌft ob bereits Positionen fΓΌr das Symbol und die Strategie existieren\n", " \"\"\"\n", " try:\n", " positions = mt.positions_get(symbol=symbol)\n", " \n", " if positions is None:\n", " return False, {\"count\": 0, \"details\": []}\n", " \n", " strategy_positions = []\n", " for pos in positions:\n", " if strategy_name in pos.comment:\n", " strategy_positions.append({\n", " \"ticket\": pos.ticket,\n", " \"type\": \"BUY\" if pos.type == 0 else \"SELL\",\n", " \"volume\": pos.volume,\n", " \"price_open\": pos.price_open,\n", " \"profit\": pos.profit,\n", " \"comment\": pos.comment,\n", " \"time_open\": pd.to_datetime(pos.time, unit='s')\n", " })\n", " \n", " has_position = len(strategy_positions) > 0\n", " position_info = {\"count\": len(strategy_positions), \"details\": strategy_positions}\n", " return has_position, position_info\n", " \n", " except Exception as e:\n", " print(f\"Error checking positions: {e}\")\n", " return False, {\"count\": 0, \"details\": []}\n", "\n", "\n", "def get_position_summary(symbol=\"XAUUSD\", strategy_name=\"TradingBot_V1.6\"):\n", " \"\"\"Position-Zusammenfassung\"\"\"\n", " has_position, position_info = check_existing_positions(symbol, strategy_name)\n", " \n", " print(f\"\\nπŸ“Š POSITION SUMMARY fΓΌr {symbol} (V1.6 Adaptive Complete)\")\n", " print(\"=\" * 60)\n", " \n", " if not has_position:\n", " print(\"βœ… Keine aktiven Positionen - bereit fΓΌr neuen Trade\")\n", " return False\n", " \n", " print(f\"⚠️ {position_info['count']} aktive Position(en) gefunden:\")\n", " for i, pos in enumerate(position_info['details'], 1):\n", " profit_emoji = \"🟒\" if pos['profit'] >= 0 else \"πŸ”΄\"\n", " print(f\"\\n Position {i}:\")\n", " print(f\" Ticket: {pos['ticket']}\")\n", " print(f\" Typ: {pos['type']}\")\n", " print(f\" Volumen: {pos['volume']}\")\n", " print(f\" ErΓΆffnungspreis: {pos['price_open']}\")\n", " print(f\" Profit: {profit_emoji} {pos['profit']:.2f}\")\n", " print(f\" ErΓΆffnungszeit: {pos['time_open']}\")\n", " \n", " print(f\"\\nπŸ›‘ TRADING BLOCKIERT - Maximal {max_positions} Position erlaubt\")\n", " return True\n", "\n", "\n", "def close_existing_positions(symbol=\"XAUUSD\", strategy_name=\"TradingBot_V1.6\", force_close=False):\n", " \"\"\"\n", " βœ… KORRIGIERT: Schließt bestehende Positionen (optional)\n", " Diese Funktion fehlte in der ursprΓΌnglichen V1.6!\n", " \"\"\"\n", " has_position, position_info = check_existing_positions(symbol, strategy_name)\n", " \n", " if not has_position:\n", " print(\"βœ… Keine Positionen zum Schließen\")\n", " return True\n", " \n", " if not force_close:\n", " print(f\"⚠️ {position_info['count']} Position(en) gefunden. Verwende force_close=True zum Schließen.\")\n", " return False\n", " \n", " print(f\"πŸ”„ Schließe {position_info['count']} Position(en)...\")\n", " \n", " success_count = 0\n", " for pos in position_info['details']:\n", " try:\n", " # Position schließen\n", " close_request = {\n", " \"action\": mt.TRADE_ACTION_DEAL,\n", " \"symbol\": symbol,\n", " \"volume\": pos['volume'],\n", " \"type\": mt.ORDER_TYPE_SELL if pos['type'] == \"BUY\" else mt.ORDER_TYPE_BUY,\n", " \"position\": pos['ticket'],\n", " \"price\": mt.symbol_info_tick(symbol).bid if pos['type'] == \"BUY\" else mt.symbol_info_tick(symbol).ask,\n", " \"deviation\": 20,\n", " \"magic\": 234000,\n", " \"comment\": f\"Close {strategy_name}\",\n", " \"type_time\": mt.ORDER_TIME_GTC,\n", " \"type_filling\": mt.ORDER_FILLING_IOC,\n", " }\n", " \n", " result = mt.order_send(close_request)\n", " \n", " if result.retcode == mt.TRADE_RETCODE_DONE:\n", " print(f\"βœ… Position {pos['ticket']} erfolgreich geschlossen\")\n", " success_count += 1\n", " else:\n", " print(f\"❌ Fehler beim Schließen von Position {pos['ticket']}: {result.comment}\")\n", " \n", " except Exception as e:\n", " print(f\"❌ Exception beim Schließen von Position {pos['ticket']}: {e}\")\n", " \n", " print(f\"πŸ“Š {success_count}/{len(position_info['details'])} Positionen erfolgreich geschlossen\")\n", " return success_count == len(position_info['details'])\n", "\n", "\n", "print(\"βœ… Position Control functions defined (COMPLETE with close function!)\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 5. Helper Functions" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "βœ… Helper functions defined\n" ] } ], "source": [ "def get_rates(timeframe=\"h4\", count=200, symbol=\"XAUUSD\"):\n", " \"\"\"Hole Kursdaten\"\"\"\n", " timeframes_dict = {\n", " \"m1\": mt.TIMEFRAME_M1, \"m5\": mt.TIMEFRAME_M5, \"m15\": mt.TIMEFRAME_M15,\n", " \"m30\": mt.TIMEFRAME_M30, \"h1\": mt.TIMEFRAME_H1, \"h4\": mt.TIMEFRAME_H4, \n", " \"d1\": mt.TIMEFRAME_D1\n", " }\n", " try:\n", " rates = mt.copy_rates_from_pos(symbol, timeframes_dict[timeframe], 0, count)\n", " if rates is None: \n", " return None\n", " df = pd.DataFrame(rates)\n", " df['time'] = pd.to_datetime(df['time'], unit='s')\n", " df.set_index('time', inplace=True)\n", " df['atr'] = ta.atr(df['high'], df['low'], df['close'], length=14)\n", " return df\n", " except Exception as e:\n", " print(f\"Error getting rates: {e}\")\n", " return None\n", "\n", "\n", "def check_risk_limits(symbol, volume=None, order_type=\"buy\", max_risk_per_trade=0.01):\n", " \"\"\"Risk Management\"\"\"\n", " try:\n", " account_info = mt.account_info()\n", " if not account_info: \n", " return False\n", " balance, equity = account_info.balance, account_info.equity\n", " if equity < balance * 0.8: \n", " return False\n", " return True\n", " except: \n", " return False\n", "\n", "\n", "def market_order(symbol, volume, order_type, stoploss=0, take_profit=0, deviation=20):\n", " \"\"\"Market Order Execution\"\"\"\n", " try:\n", " price_dict = {'buy': mt.symbol_info_tick(symbol).ask, 'sell': mt.symbol_info_tick(symbol).bid}\n", " order_type_dict = {'buy': mt.ORDER_TYPE_BUY, 'sell': mt.ORDER_TYPE_SELL}\n", " \n", " request = {\n", " \"action\": mt.TRADE_ACTION_DEAL,\n", " \"symbol\": symbol,\n", " \"volume\": volume,\n", " \"type\": order_type_dict[order_type],\n", " \"price\": price_dict[order_type],\n", " \"sl\": stoploss,\n", " \"tp\": take_profit,\n", " \"deviation\": deviation,\n", " \"magic\": 234000,\n", " \"comment\": strategy_name,\n", " \"type_time\": mt.ORDER_TIME_GTC,\n", " \"type_filling\": mt.ORDER_FILLING_IOC\n", " }\n", " return mt.order_send(request)\n", " except Exception as e:\n", " print(f\"Error in market order: {e}\")\n", " return None\n", "\n", "\n", "print(\"βœ… Helper functions defined\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 6. Market Analysis Functions" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "βœ… Market analysis functions defined (with RELAXED thresholds)\n" ] } ], "source": [ "def detect_market_regime(df, lookback=50):\n", " \"\"\"Market Regime Detection\"\"\"\n", " try:\n", " adx_data = ta.adx(df['high'], df['low'], df['close'], length=14)\n", " adx = adx_data['ADX_14'].iloc[-1] if adx_data is not None and 'ADX_14' in adx_data.columns else 25.0\n", " \n", " try:\n", " bb = ta.bbands(df['close'], length=20)\n", " if bb is not None and len(bb.columns) >= 3:\n", " bb_cols = bb.columns.tolist()\n", " bb_width = ((bb[bb_cols[0]] - bb[bb_cols[2]]) / bb[bb_cols[1]] * 100).iloc[-lookback:].mean()\n", " else: \n", " bb_width = 4.0\n", " except: \n", " bb_width = 4.0\n", " \n", " price_range = df['high'].iloc[-lookback:].max() - df['low'].iloc[-lookback:].min()\n", " atr_avg = df['atr'].iloc[-lookback:].mean()\n", " range_ratio = price_range / (atr_avg * lookback) if atr_avg > 0 else 1.0\n", " vol_cluster = df['atr'].iloc[-10:].std() / df['atr'].iloc[-50:].mean() if len(df) >= 50 else 1.0\n", " \n", " if adx > 25 and range_ratio > 1.5:\n", " regime, strength = 'trending', min(100, adx * 2)\n", " elif vol_cluster > 1.5:\n", " regime, strength = 'volatile', min(100, vol_cluster * 50)\n", " else:\n", " regime, strength = 'ranging', max(0, 100 - adx * 2)\n", " \n", " return {\n", " 'regime': regime, 'strength': strength, 'adx': adx, \n", " 'bb_width': bb_width, 'range_ratio': range_ratio, 'vol_cluster': vol_cluster\n", " }\n", " except Exception as e:\n", " return {\n", " 'regime': 'ranging', 'strength': 50, 'adx': 20, \n", " 'bb_width': 4.0, 'range_ratio': 1.0, 'vol_cluster': 1.0\n", " }\n", "\n", "\n", "def calculate_adaptive_confidence_threshold_relaxed(regime_info, base_confidence=60):\n", " \"\"\"\n", " RELAXED Version: Niedrigere Schwellen fΓΌr mehr Signale\n", " \"\"\"\n", " regime = regime_info['regime']\n", " adx = regime_info['adx']\n", " \n", " if regime == 'trending':\n", " if adx > 30:\n", " return max(50, base_confidence - 20)\n", " else:\n", " return base_confidence - 15\n", " elif regime == 'ranging':\n", " return base_confidence + 10\n", " elif regime == 'volatile':\n", " return base_confidence + 15\n", " \n", " return base_confidence\n", "\n", "\n", "def get_enhanced_trend(timeframe=\"H4\", lookback=150, symbol=\"XAUUSD\"):\n", " \"\"\"Enhanced Trend Analysis\"\"\"\n", " tf_map = {\"D1\": \"d1\", \"H4\": \"h4\", \"H1\": \"h1\", \"M30\": \"m30\", \"M15\": \"m15\", \"M5\": \"m5\"}\n", " tf = tf_map.get(timeframe, timeframe.lower())\n", " \n", " try:\n", " df = get_rates(tf, lookback, symbol)\n", " if df is None or len(df) < 50: \n", " return None\n", " \n", " df['close_smooth'] = savgol_filter(df['close'], min(15, len(df)//10), 3)\n", " X = np.arange(len(df)).reshape(-1, 1)\n", " y = df['close_smooth'].values\n", " model = LinearRegression().fit(X, y)\n", " slope = model.coef_[0]\n", " \n", " regime_info = detect_market_regime(df.iloc[-50:])\n", " base_threshold = df['atr'].iloc[-1] * 0.0001\n", " \n", " if regime_info['regime'] == 'trending':\n", " slope_threshold = base_threshold * 0.7\n", " elif regime_info['regime'] == 'ranging':\n", " slope_threshold = base_threshold * 1.5\n", " else:\n", " slope_threshold = base_threshold * 1.2\n", " \n", " trend = \"uptrend\" if slope > slope_threshold else \"downtrend\" if slope < -slope_threshold else \"sideways\"\n", " trend_strength = abs(slope) / slope_threshold if slope_threshold > 0 else 0\n", " \n", " return {\n", " \"trend\": trend, \"slope\": slope, \"slope_threshold\": slope_threshold,\n", " \"trend_strength\": trend_strength, \"atr\": df['atr'].iloc[-1],\n", " \"price\": df['close'].iloc[-1], \"regime_info\": regime_info\n", " }\n", " except Exception as e:\n", " print(f\"Error in get_enhanced_trend: {e}\")\n", " return None\n", "\n", "\n", "print(\"βœ… Market analysis functions defined (with RELAXED thresholds)\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 7. Extended Top-Down Analysis" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "βœ… V1.6 Adaptive Complete Top-Down Analysis defined\n" ] } ], "source": [ "def extended_top_down_v2_adaptive(symbol=\"XAUUSD\", lookback=150):\n", " \"\"\"\n", " V1.6 Adaptive Complete Version:\n", " - Position Control\n", " - Relaxed Trading Logic\n", " - Adaptive Rhythm Integration\n", " \"\"\"\n", " \n", " timeframes = [\"D1\", \"H4\", \"H1\", \"M30\", \"M15\", \"M5\"]\n", " trend_info = {}\n", " \n", " print(f\"πŸ” Analyzing {symbol} with V1.6 ADAPTIVE COMPLETE parameters...\")\n", " \n", " # 1. Alle Timeframes analysieren\n", " for tf in timeframes:\n", " trend_info[tf] = get_enhanced_trend(tf, lookback, symbol)\n", " if trend_info[tf] is None:\n", " print(f\"⚠️ Keine Daten fΓΌr {tf}\")\n", " return None\n", " \n", " # 2. Market Regime aus H4 bestimmen\n", " main_regime = trend_info[\"H4\"][\"regime_info\"]\n", " \n", " # 3. RELAXED Adaptive Confidence Threshold\n", " adaptive_confidence_threshold = calculate_adaptive_confidence_threshold_relaxed(main_regime)\n", " \n", " # 4. Standard-Trend\n", " d1_trend = trend_info[\"D1\"][\"trend\"]\n", " h4_trend = trend_info[\"H4\"][\"trend\"]\n", " d1_strength = trend_info[\"D1\"][\"trend_strength\"]\n", " h4_strength = trend_info[\"H4\"][\"trend_strength\"]\n", " \n", " if d1_trend == h4_trend and d1_trend != \"sideways\":\n", " standard_trend = d1_trend\n", " standard_strength = (d1_strength * 0.6 + h4_strength * 0.4)\n", " elif d1_strength > h4_strength * 1.5:\n", " standard_trend = d1_trend\n", " standard_strength = d1_strength * 0.8\n", " elif h4_strength > d1_strength * 1.5:\n", " standard_trend = h4_trend\n", " standard_strength = h4_strength * 0.8\n", " else:\n", " standard_trend = \"sideways\"\n", " standard_strength = 0\n", " \n", " # 5. RELAXED Fast-Trend\n", " fast_timeframes = [\"H1\", \"M30\", \"M15\", \"M5\"]\n", " fast_trends = [trend_info[tf][\"trend\"] for tf in fast_timeframes]\n", " fast_strengths = [trend_info[tf][\"trend_strength\"] for tf in fast_timeframes]\n", " \n", " required_alignment = 2 # RELAXED: Immer 2 von 4\n", " \n", " trend_counts = {'uptrend': 0, 'downtrend': 0, 'sideways': 0}\n", " weighted_strengths = {'uptrend': 0, 'downtrend': 0}\n", " weights = [1.0, 0.8, 0.6, 0.4]\n", " \n", " for i, (trend, strength) in enumerate(zip(fast_trends, fast_strengths)):\n", " trend_counts[trend] += 1\n", " if trend != 'sideways':\n", " weighted_strengths[trend] += strength * weights[i]\n", " \n", " max_count = max(trend_counts['uptrend'], trend_counts['downtrend'])\n", " if max_count >= required_alignment:\n", " if trend_counts['uptrend'] > trend_counts['downtrend']:\n", " fast_trend = \"uptrend\"\n", " elif trend_counts['downtrend'] > trend_counts['uptrend']:\n", " fast_trend = \"downtrend\"\n", " else:\n", " fast_trend = \"uptrend\" if weighted_strengths['uptrend'] > weighted_strengths['downtrend'] else \"downtrend\"\n", " else:\n", " fast_trend = \"sideways\"\n", " \n", " # 6. Top-Down-Trend\n", " if standard_trend == fast_trend and standard_trend != \"sideways\":\n", " top_down_trend = standard_trend\n", " combined_strength = (standard_strength + weighted_strengths.get(fast_trend, 0)) / 2\n", " else:\n", " top_down_trend = \"sideways\"\n", " combined_strength = 0\n", " \n", " # 7. Enhanced Confidence\n", " tf_weights = {\"D1\": 2.5, \"H4\": 2.0, \"H1\": 1.5, \"M30\": 1.0, \"M15\": 0.8, \"M5\": 0.6}\n", " \n", " weighted_matching = sum(\n", " tf_weights[tf] * trend_info[tf][\"trend_strength\"] \n", " for tf in timeframes\n", " if trend_info[tf][\"trend\"] == top_down_trend and trend_info[tf][\"trend\"] != \"sideways\"\n", " )\n", " \n", " weighted_total = sum(\n", " tf_weights[tf] * trend_info[tf][\"trend_strength\"]\n", " for tf in timeframes\n", " if trend_info[tf][\"trend\"] != \"sideways\"\n", " )\n", " \n", " confidence = round((weighted_matching / weighted_total) * 100, 2) if weighted_total > 0 else 0.0\n", " \n", " # 8. RELAXED Risk-Adjusted Signal Strength\n", " atr = trend_info[\"M5\"][\"atr\"]\n", " rrr = 2.5\n", " risk_adjusted_strength = confidence * combined_strength * min(2.0, rrr)\n", " \n", " # 9. RELAXED Entry Signal\n", " entry_signal = 0\n", " signal_quality = \"none\"\n", " min_strength = 80 # RELAXED: 80 statt 100\n", " \n", " if (top_down_trend != \"sideways\" and \n", " confidence >= adaptive_confidence_threshold and\n", " risk_adjusted_strength >= min_strength):\n", " \n", " entry_signal = 1 if top_down_trend == \"uptrend\" else -1\n", " \n", " # RELAXED Signal Quality\n", " if confidence >= 80 and risk_adjusted_strength >= 130:\n", " signal_quality = \"excellent\"\n", " elif confidence >= 70 and risk_adjusted_strength >= 100:\n", " signal_quality = \"good\"\n", " else:\n", " signal_quality = \"fair\"\n", " \n", " # 10. πŸ†• Adaptive Rhythm Info\n", " current_interval = rhythm_manager.current_interval\n", " session = rhythm_manager.get_current_session()\n", " \n", " # 11. Debug Output\n", " debug_data = []\n", " for tf in timeframes:\n", " info = trend_info[tf]\n", " debug_data.append([\n", " tf, info[\"trend\"], f\"{info['trend_strength']:.2f}\", \n", " f\"{info['atr']:.4f}\", f\"{info['slope']:.6f}\", f\"{info['price']:.2f}\"\n", " ])\n", " \n", " print(f\"\\nπŸ“Š V1.6 ADAPTIVE COMPLETE Trend-Analyse fΓΌr {symbol}\")\n", " print(f\"⚑ Adaptive Interval: {current_interval} min | Session: {session.upper()}\")\n", " print(f\"🎯 Market Regime: {main_regime['regime'].upper()} (Strength: {main_regime['strength']:.0f}%)\")\n", " print(f\"🎚️ Adaptive Threshold: {adaptive_confidence_threshold}% (RELAXED)\")\n", " print()\n", " print(tabulate(debug_data, headers=[\"TF\", \"Trend\", \"Strength\", \"ATR\", \"Slope\", \"Price\"], tablefmt=\"psql\"))\n", " print(f\"\\n➑️ Standard-Trend: {standard_trend} (Strength: {standard_strength:.2f})\")\n", " print(f\"➑️ Fast-Trend: {fast_trend} (Required: {required_alignment}/4)\")\n", " print(f\"➑️ Top-Down-Trend: {top_down_trend}\")\n", " print(f\"➑️ Confidence: {confidence}% (Threshold: {adaptive_confidence_threshold}%)\")\n", " print(f\"➑️ Risk-Adjusted Strength: {risk_adjusted_strength:.1f} (Min: {min_strength})\")\n", " print(f\"➑️ Signal Quality: {signal_quality.upper()}\")\n", " print(f\"\\nπŸš€ V1.6 Adaptive Complete: Full Features + Adaptive Rhythm\")\n", " \n", " return {\n", " \"symbol\": symbol,\n", " \"trend_info\": trend_info,\n", " \"market_regime\": main_regime,\n", " \"standard_trend\": standard_trend,\n", " \"fast_trend\": fast_trend,\n", " \"top_down_trend\": top_down_trend,\n", " \"confidence\": confidence,\n", " \"adaptive_threshold\": adaptive_confidence_threshold,\n", " \"risk_adjusted_strength\": risk_adjusted_strength,\n", " \"entry_signal\": entry_signal,\n", " \"signal_quality\": signal_quality,\n", " \"combined_strength\": combined_strength,\n", " \"min_strength_used\": min_strength,\n", " \"required_alignment\": required_alignment,\n", " \"adaptive_interval\": current_interval,\n", " \"session\": session\n", " }\n", "\n", "\n", "print(\"βœ… V1.6 Adaptive Complete Top-Down Analysis defined\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 8. Entry Timing Optimization" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "βœ… Entry timing functions defined (DISABLED in Relaxed mode)\n" ] } ], "source": [ "def check_pullback_entry(symbol, signal_info, timeframe=\"M5\"):\n", " \"\"\"\n", " Entry Timing Check - in Relaxed Version DISABLED per default\n", " \"\"\"\n", " if signal_info[\"entry_signal\"] == 0:\n", " return False, \"No base signal\"\n", " \n", " try:\n", " df = get_rates(timeframe.lower(), 50, symbol)\n", " if df is None or len(df) < 20:\n", " return False, \"Insufficient data\"\n", " \n", " df['ema21'] = df['close'].ewm(span=21).mean()\n", " df['ema50'] = df['close'].ewm(span=50).mean()\n", " \n", " current_price = df['close'].iloc[-1]\n", " ema21 = df['ema21'].iloc[-1]\n", " ema50 = df['ema50'].iloc[-1]\n", " signal_direction = signal_info[\"entry_signal\"]\n", " \n", " if signal_direction == 1: # Long\n", " if current_price <= ema21 * 1.002 and ema21 > ema50:\n", " return True, \"Pullback to EMA21 for Long\"\n", " elif current_price <= ema21 * 0.998:\n", " return True, \"Below EMA21 - Good Long Entry\"\n", " elif signal_direction == -1: # Short\n", " if current_price >= ema21 * 0.998 and ema21 < ema50:\n", " return True, \"Pullback to EMA21 for Short\"\n", " elif current_price >= ema21 * 1.002:\n", " return True, \"Above EMA21 - Good Short Entry\"\n", " \n", " return False, \"Waiting for better entry timing\"\n", " except Exception as e:\n", " return True, \"Using immediate entry (fallback)\"\n", "\n", "\n", "print(\"βœ… Entry timing functions defined (DISABLED in Relaxed mode)\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 9. Execute Trade Function" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "def calculate_position_size(self, symbol, stop_loss_pips, max_risk_per_trade=0.02):\n", " \"\"\"\n", " Berechnet die Positionsgrâße basierend auf Risiko\n", " \"\"\"\n", " account_info = mt.account_info()\n", " if not account_info:\n", " print(f\"⚠️ Keine Account-Info verfΓΌgbar, verwende Minimum-Lot\")\n", " return 0.01\n", " \n", " balance = account_info.balance\n", " risk_amount = balance * max_risk_per_trade\n", " \n", " # Symbol-Info holen\n", " symbol_info = mt.symbol_info(symbol)\n", " if not symbol_info:\n", " print(f\"⚠️ Keine Symbol-Info fΓΌr {symbol}, verwende Minimum-Lot\")\n", " return 0.01\n", " \n", " # Pip-Wert berechnen\n", " point = symbol_info.point\n", " tick_value = symbol_info.trade_tick_value\n", " tick_size = symbol_info.trade_tick_size\n", " \n", " # Volume berechnen\n", " pip_value = (tick_value / tick_size) * point\n", " volume = risk_amount / (stop_loss_pips * pip_value)\n", " \n", " # Auf erlaubte Volumenschritte runden\n", " volume_min = symbol_info.volume_min\n", " volume_max = symbol_info.volume_max\n", " volume_step = symbol_info.volume_step\n", " \n", " volume = round(volume / volume_step) * volume_step\n", " volume = max(volume_min, min(volume_max, volume))\n", " \n", " print(f\"πŸ’° Position Sizing fΓΌr {symbol}:\")\n", " print(f\" Balance: ${balance:.2f}\")\n", " print(f\" Risiko: ${risk_amount:.2f} ({max_risk_per_trade*100}%)\")\n", " print(f\" Stop Loss: {stop_loss_pips:.2f} Pips\")\n", " print(f\" Berechnetes Volume: {volume:.2f} Lots\")\n", " \n", " return volume" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.01" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#mt.symbol_info(symbol).volume_min\n", "mt.symbol_info(symbol).volume_step" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "βœ… V1.6 Adaptive Complete Execute Trade defined\n" ] } ], "source": [ "def execute_trade_v2_adaptive(\n", " symbol=\"XAUUSD\",\n", " atr_mult=1.5,\n", " base_confidence=60,\n", " max_risk_per_trade=0.01,\n", " risk_filter=True,\n", " min_atr=0.0008,\n", " use_pullback_entry=False, # DISABLED\n", " max_positions=1,\n", " strategy_name=\"TradingBot_V1.6\",\n", " debug=True\n", "):\n", " \"\"\"\n", " V1.6 Adaptive Complete Trade-AusfΓΌhrung:\n", " - Position Control\n", " - Relaxed Parameter\n", " - Adaptive Rhythm Integration\n", " \"\"\"\n", " \n", " # SCHRITT 1: POSITION CHECK\n", " print(f\"\\nπŸ” POSITION CHECK fΓΌr {symbol} (V1.6 Adaptive Complete)\")\n", " has_position, position_info = check_existing_positions(symbol, strategy_name)\n", " \n", " if has_position and position_info['count'] >= max_positions:\n", " if debug:\n", " print(f\"πŸ›‘ TRADE BLOCKIERT: {position_info['count']}/{max_positions} Positionen aktiv\")\n", " for pos in position_info['details']:\n", " profit_emoji = \"🟒\" if pos['profit'] >= 0 else \"πŸ”΄\"\n", " print(f\" {pos['type']} @ {pos['price_open']} | {profit_emoji} {pos['profit']:.2f}\")\n", " return None\n", " \n", " print(f\"βœ… Position-Check OK: {position_info['count']}/{max_positions}\")\n", " \n", " # SCHRITT 2: Signal Analysis\n", " signal_info = extended_top_down_v2_adaptive(symbol)\n", " if signal_info is None:\n", " print(\"❌ Signal-Analyse fehlgeschlagen\")\n", " return None\n", " \n", " entry_signal = signal_info[\"entry_signal\"]\n", " confidence = signal_info[\"confidence\"]\n", " adaptive_threshold = signal_info[\"adaptive_threshold\"]\n", " signal_quality = signal_info[\"signal_quality\"]\n", " market_regime = signal_info[\"market_regime\"]\n", " \n", " # SCHRITT 3: Get Price/ATR\n", " m5_info = signal_info[\"trend_info\"][\"M5\"]\n", " price = m5_info[\"price\"]\n", " atr = m5_info[\"atr\"]\n", " \n", " # SCHRITT 4: Pre-checks\n", " reason = \"\"\n", " \n", " if confidence < adaptive_threshold:\n", " reason = f\"Confidence {confidence}% < threshold {adaptive_threshold}%\"\n", " elif entry_signal == 0:\n", " reason = f\"No entry signal\"\n", " elif price is None or atr is None:\n", " reason = \"Price/ATR not available\"\n", " elif risk_filter and atr < min_atr:\n", " reason = f\"ATR {atr:.5f} < min_atr {min_atr}\"\n", " else:\n", " risk_ok = check_risk_limits(symbol, max_risk_per_trade=max_risk_per_trade)\n", " if not risk_ok:\n", " reason = \"Risk limits exceeded\"\n", " \n", " # SCHRITT 5: Execute Trade\n", " if not reason:\n", " # Final Position Check\n", " final_check, _ = check_existing_positions(symbol, strategy_name)\n", " if final_check:\n", " print(f\"πŸ›‘ Position wurde zwischen Checks erΓΆffnet!\")\n", " return None\n", " \n", " # SL/TP Calculation\n", " regime_mult = 1.0\n", " if market_regime['regime'] == 'volatile':\n", " regime_mult = 1.2\n", " elif market_regime['regime'] == 'ranging':\n", " regime_mult = 0.9\n", " \n", " adjusted_atr_mult = atr_mult * regime_mult\n", " \n", " if entry_signal == 1: # Long\n", " stop_loss = price - adjusted_atr_mult * atr\n", " take_profit = price + adjusted_atr_mult * atr * 2.5\n", " else: # Short\n", " stop_loss = price + adjusted_atr_mult * atr\n", " take_profit = price - adjusted_atr_mult * atr * 2.5\n", " \n", " # Position Sizing\n", " account_info = mt.account_info()\n", " if account_info:\n", " balance = account_info.balance\n", " risk_amount = balance * max_risk_per_trade\n", " if symbol == \"XAUUSD\":\n", " # 🎯 ADAPTIVE POSITION SIZING\n", " if 'adv_position_mgr' in globals() and adv_position_mgr.adaptive_sizing:\n", " volume = adv_position_mgr.adaptive_sizing.calculate_position_size(\n", " confidence=confidence,\n", " balance=balance,\n", " stop_loss_distance=adjusted_atr_mult * atr * 10000, # Convert to pips\n", " symbol=symbol\n", " )\n", " else:\n", " volume = round(min(0.1, max(0.01, risk_amount / (adjusted_atr_mult * atr * 100))),2)\n", " else:\n", " volume = 0.01\n", " else:\n", " volume = 0.01\n", " \n", " # Log Trade Info\n", " print(f\"\\nπŸš€ V1.6 ADAPTIVE COMPLETE TRADE EXECUTION\")\n", " print(f\"Direction: {'LONG' if entry_signal == 1 else 'SHORT'}\")\n", " print(f\"Price: {price:.5f} | Volume: {volume:.2f}\")\n", " print(f\"SL: {stop_loss:.5f} | TP: {take_profit:.5f}\")\n", " print(f\"Confidence: {confidence}% | Quality: {signal_quality.upper()}\")\n", " print(f\"Regime: {market_regime['regime'].upper()}\")\n", " print(f\"Adaptive Interval: {signal_info['adaptive_interval']} min\")\n", " print(f\"Session: {signal_info['session'].upper()}\")\n", " \n", " # Execute\n", " try:\n", " order_result = market_order(\n", " symbol=symbol,\n", " volume=volume,\n", " order_type=\"buy\" if entry_signal == 1 else \"sell\",\n", " stoploss=stop_loss,\n", " take_profit=take_profit\n", " )\n", " \n", " if order_result and order_result.retcode == mt.TRADE_RETCODE_DONE:\n", " print(f\"βœ… Trade erfolgreich! Ticket: {order_result.order}\")\n", " \n", " # ==========================================\n", " # LOG TRADE ENTRY (V1.8)\n", " # ==========================================\n", " try:\n", " # Hole Position Info\n", " positions = mt.positions_get(symbol=symbol)\n", " if positions and infra:\n", " position = positions[0]\n", "\n", " # Erstelle Trade Data\n", " trade_data = {\n", " 'ticket': position.ticket,\n", " 'position_id': position.identifier,\n", " 'symbol': symbol,\n", " 'strategy_name': strategy_name,\n", " 'type': 'BUY' if entry_signal == 1 else 'SELL',\n", " 'volume': volume,\n", " 'entry_price': position.price_open,\n", " 'sl_price': position.sl,\n", " 'tp_price': position.tp,\n", " 'entry_time': datetime.now().strftime('%Y-%m-%d %H:%M:%S'),\n", " 'session': rhythm_manager.get_current_session(),\n", " 'regime': market_regime['regime'],\n", " 'quality': signal_quality,\n", " 'confidence': confidence if 'confidence' in locals() else None,\n", " 'timeframe_alignment': signal_info.get('required_alignment', 2),\n", " 'risk_amount': risk_amount if 'risk_amount' in locals() else None,\n", " 'risk_pct': max_risk_per_trade\n", " }\n", "\n", " # Log to Database + Send Telegram\n", " infra.log_trade_entry(trade_data)\n", " logger.info(\"πŸ“± Trade logged to DB + Telegram notification sent\")\n", "\n", " except Exception as e:\n", " logger.error(f\"⚠️ Infrastructure logging failed: {e}\")\n", " # ==========================================\n", "\n", "\n", " # Verify & Log\n", " new_check, new_info = check_existing_positions(symbol, strategy_name)\n", " print(f\"πŸ“Š Positionen: {new_info['count']}\")\n", " log_trade_performance_adaptive(signal_info, order_result)\n", " else:\n", " print(f\"❌ Trade failed: {order_result.comment if order_result else 'No result'}\")\n", " \n", " return order_result\n", " \n", " except Exception as e:\n", " print(f\"❌ Execution failed: {e}\")\n", " return None\n", " \n", " else:\n", " if debug:\n", " print(f\"\\n⏸️ TRADE SKIPPED: {reason}\")\n", " return None\n", "\n", "\n", "print(\"βœ… V1.6 Adaptive Complete Execute Trade defined\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 🎯 Session-Specific Confidence Filter (NEU 26.12.2025)\n", "\n", "**Optimierung:** Session-spezifische Confidence Thresholds fΓΌr bessere Performance\n", "\n", "### πŸ“Š Problembeschreibung:\n", "- **NY Session** hatte nur 43.3% Win-Rate (unter 50%!)\n", "- Analyse zeigte: Trades mit <97% Confidence hatten sehr niedrige Win-Rate\n", "- 7 Trades mit <97% Confidence = fast alle Losses\n", "\n", "### βœ… LΓΆsung:\n", "Session-spezifische Thresholds:\n", "- **Asian**: >=95% Confidence (lΓ€uft perfekt mit 97.8% WR)\n", "- **NY**: >=97% Confidence (verbessert WR auf 56.5%)\n", "- **London/Overlap**: Blockiert (wie bisher)\n", "\n", "### πŸ“ˆ Erwartete Verbesserung:\n", "- NY Win-Rate: **43.3% β†’ 56.5%** (+13.2 Prozentpunkte)\n", "- NY Profit: **+$237/Monat**\n", "- Gesamt-Profit: **+$292/Monat**\n", "- Gesamt Win-Rate: **67.8% β†’ ~71%**\n", "\n", "### πŸ”§ Implementation:\n", "Der folgende Code wraps `execute_trade_v2_adaptive()` mit session-spezifischen Confidence-Checks.\n", "\n", "**Dokumentation**: `NY_SESSION_FINETUNING.md` & `INTEGRATION_CHECKLIST.md`\n" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "βœ… Original execute_trade_v2_adaptive gespeichert\n", "βœ… SESSION-SPECIFIC CONFIDENCE FILTER AKTIVIERT\n", "------------------------------------------------------------\n", "Thresholds:\n", " Asian: >= 95% Confidence (97.8% WR)\n", " NY: >= 97% Confidence (verbessert von 43% auf 56% WR)\n", " London: Blockiert\n", " Overlap: Blockiert\n", "\n", "Erwartete Verbesserung:\n", " - NY Win-Rate: 43.3% β†’ 56.5%\n", " - Profit: +$237/Monat in NY Session\n", " - Gesamt: +$292/Monat\n", "------------------------------------------------------------\n" ] } ], "source": [ "# ==========================================\n", "# SESSION-SPECIFIC CONFIDENCE FILTER (26.12.2025)\n", "# ==========================================\n", "\n", "from session_confidence_filter import create_session_confidence_filter\n", "\n", "# Bewahre Original-Funktion (falls noch nicht gespeichert)\n", "if '_original_execute_trade_v2_adaptive' not in dir():\n", " _original_execute_trade_v2_adaptive = execute_trade_v2_adaptive\n", " print(\"βœ… Original execute_trade_v2_adaptive gespeichert\")\n", "\n", "# Wrap mit Session-Confidence Filter\n", "execute_trade_v2_adaptive = create_session_confidence_filter(\n", " _original_execute_trade_v2_adaptive\n", ")\n", "\n", "print(\"βœ… SESSION-SPECIFIC CONFIDENCE FILTER AKTIVIERT\")\n", "print(\"-\" * 60)\n", "print(\"Thresholds:\")\n", "print(\" Asian: >= 95% Confidence (97.8% WR)\")\n", "print(\" NY: >= 97% Confidence (verbessert von 43% auf 56% WR)\")\n", "print(\" London: Blockiert\")\n", "print(\" Overlap: Blockiert\")\n", "print()\n", "print(\"Erwartete Verbesserung:\")\n", "print(\" - NY Win-Rate: 43.3% β†’ 56.5%\")\n", "print(\" - Profit: +$237/Monat in NY Session\")\n", "print(\" - Gesamt: +$292/Monat\")\n", "print(\"-\" * 60)\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## πŸ€– Telegram Bot Commands - Remote Control\n", "\n", "**Status:** ACTIVE - Bot lΓ€uft im Hintergrund\n", "\n", "### πŸ“± VerfΓΌgbare Commands:\n", "\n", "**Bot Control:**\n", "- `/status` - Bot Status, offene Positionen, Balance\n", "- `/pause` - Trading pausieren (keine neuen Trades)\n", "- `/resume` - Trading fortsetzen\n", "- `/close confirm` - ALLE Positionen schließen (Emergency)\n", "\n", "**Information:**\n", "- `/balance` - Aktueller Kontostand + Equity\n", "- `/stats` - Performance Statistiken\n", "- `/help` - Hilfe anzeigen\n", "\n", "### βœ… Features:\n", "- Remote Control vom Handy\n", "- Emergency Stop von ΓΌberall\n", "- Trading Pause/Resume\n", "- Live Status & Balance Check\n", "\n", "### πŸ”’ Sicherheit:\n", "- Nur deine Chat ID kann Commands senden\n", "- `/close` requires confirmation\n", "- `/pause` ist instant\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# ==========================================\n", "# TELEGRAM BOT COMMANDS - Background Service\n", "# ==========================================\n", "\n", "from telegram_bot_commands import TelegramBotCommander, get_bot_controller\n", "import threading\n", "\n", "# Start Telegram Bot in background\n", "try:\n", " print(\"πŸš€ Starting Telegram Bot Commander...\")\n", " \n", " bot_commander = TelegramBotCommander()\n", " bot_thread = bot_commander.start_background()\n", " \n", " # Get controller for integration with execute_trade\n", " bot_controller = get_bot_controller()\n", " \n", " print(\"βœ… Telegram Bot is running in background!\")\n", " print(\"πŸ“± Available Commands:\")\n", " print(\" /status - Bot status & positions\")\n", " print(\" /pause - Pause trading\")\n", " print(\" /resume - Resume trading\")\n", " print(\" /close - Close all positions (requires confirm)\")\n", " print(\" /balance - Account balance\")\n", " print(\" /stats - Performance stats\")\n", " print(\" /help - Show help\")\n", " \n", "except Exception as e:\n", " print(f\"❌ Failed to start Telegram Bot: {e}\")\n", " bot_controller = None\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# ==========================================\n", "# INTEGRATION: Bot Controller mit execute_trade\n", "# ==========================================\n", "\n", "# Original execute_trade_v2_adaptive function wrappen\n", "if 'bot_controller' in dir() and bot_controller is not None:\n", " \n", " # Original Funktion sichern\n", " if '_original_execute_trade_before_telegram' not in dir():\n", " _original_execute_trade_before_telegram = execute_trade_v2_adaptive\n", " \n", " def execute_trade_with_telegram_control(*args, **kwargs):\n", " \"\"\"\n", " Wrapper der bot_controller.is_paused prΓΌft\n", " \"\"\"\n", " # Check if trading is paused\n", " if bot_controller.is_paused:\n", " print(\"⏸️ Trading PAUSED via Telegram\")\n", " print(f\" Reason: {bot_controller.pause_reason}\")\n", " return\n", " \n", " # Execute original function\n", " return _original_execute_trade_before_telegram(*args, **kwargs)\n", " \n", " # Replace execute_trade\n", " execute_trade_v2_adaptive = execute_trade_with_telegram_control\n", " \n", " print(\"βœ… execute_trade_v2_adaptive wrapped with Telegram control\")\n", " print(\" Trading can now be paused/resumed via /pause and /resume\")\n", "else:\n", " print(\"⚠️ bot_controller not available, skipping integration\")\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# πŸ“Š Multi-Timeframe Ranging Filter - AKTIVIERT\n", "\n", "## βœ… Was wurde geΓ€ndert?\n", "\n", "**Problem gelΓΆst**: Alter Filter nutzte nur H1 (ADX 9.90) und blockierte Trades trotz starkem Trend auf D1 (ADX 28.25)\n", "\n", "**Neue LΓΆsung**:\n", "- **Cell 25**: Alter Filter DEAKTIVIERT (auskommentiert)\n", "- **Cell 26**: Neuer Multi-TF Filter AKTIVIERT\n", "- **Cell 27**: Test-Cell (optional)\n", "\n", "## 🎯 Wie der neue Filter funktioniert:\n", "\n", "1. PrΓΌft **3 Timeframes**: H1, H4, D1\n", "2. **Gewichtung**: D1 (3x) > H4 (2x) > H1 (1x)\n", "3. **Entscheidung**:\n", " - D1 ADX > 30 β†’ ERLAUBT\n", " - H4+D1 beide > 25 β†’ ERLAUBT\n", " - Weighted ADX > 25 β†’ ERLAUBT\n", " - Sonst β†’ BLOCKIERT\n", "\n", "## πŸš€ NΓ€chste Schritte:\n", "\n", "1. **FΓΌhren Sie Cell 26 aus** (Multi-TF Filter aktivieren)\n", "2. **FΓΌhren Sie Cell 27 aus** (Testen - optional)\n", "3. **Warten Sie 1-2 Stunden** auf ersten Trade\n", "\n", "## πŸ“ Erwartete Ausgabe Cell 27:\n", "\n", "\n", "\n", "β†’ Trades sollten wieder laufen! πŸŽ‰\n", "\n", "---\n", "\n", "**Installiert**: 2025-12-20\n", "**Entwickelt von**: Claude Code Analysis\n" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [], "source": [ "# ==========================================\n", "# πŸ”₯ FIX #1: RANGING FILTER WRAPPER (09.12.2025)\n", "# ==========================================\n", "\n", "# Original function wird wrapped\n", "# [DEAKTIVIERT 20.12.2025] _original_execute_trade_v2_adaptive = execute_trade_v2_adaptive\n", "\n", "# [DEAKTIVIERT 20.12.2025] def execute_trade_v2_adaptive_with_ranging_filter(\n", "# [DEAKTIVIERT 20.12.2025] symbol=\"XAUUSD\",\n", "# [DEAKTIVIERT 20.12.2025] atr_mult=1.5,\n", "# [DEAKTIVIERT 20.12.2025] base_confidence=60,\n", "# [DEAKTIVIERT 20.12.2025] max_risk_per_trade=0.01,\n", "# [DEAKTIVIERT 20.12.2025] risk_filter=True,\n", "# [DEAKTIVIERT 20.12.2025] min_atr=0.0008,\n", "# [DEAKTIVIERT 20.12.2025] use_pullback_entry=False,\n", "# [DEAKTIVIERT 20.12.2025] max_positions=1,\n", "# [DEAKTIVIERT 20.12.2025] strategy_name=\"TradingBot_V1.6\",\n", "# [DEAKTIVIERT 20.12.2025] debug=True):\n", "# [DEAKTIVIERT 20.12.2025] \"\"\"\n", "# [DEAKTIVIERT 20.12.2025] Wrapper fΓΌr execute_trade_v2_adaptive mit Ranging Filter\n", "# [DEAKTIVIERT 20.12.2025] Blocks trading in ranging markets - they cause 100% of losses!\n", "# [DEAKTIVIERT 20.12.2025] \"\"\"\n", "\n", " # Quick check: Get signal info first\n", "# [DEAKTIVIERT 20.12.2025] signal_info = extended_top_down_v2_adaptive(symbol)\n", "# [DEAKTIVIERT 20.12.2025] if signal_info is None:\n", "# [DEAKTIVIERT 20.12.2025] return None\n", "\n", "# [DEAKTIVIERT 20.12.2025] market_regime = signal_info.get(\"market_regime\", {})\n", "# [DEAKTIVIERT 20.12.2025] regime = market_regime.get('regime', 'unknown')\n", "# [DEAKTIVIERT 20.12.2025] adx = market_regime.get('adx', 0)\n", "\n", " # πŸ›‘ RANGING FILTER - Block ALL ranging market trades\n", "# [DEAKTIVIERT 20.12.2025] if regime == 'ranging':\n", "# [DEAKTIVIERT 20.12.2025] if debug:\n", "# [DEAKTIVIERT 20.12.2025] print(f\"\\nπŸ›‘ TRADE BLOCKIERT: Ranging Market!\")\n", "# [DEAKTIVIERT 20.12.2025] print(f\" ADX: {adx:.1f} (< 25 = Ranging)\")\n", "# [DEAKTIVIERT 20.12.2025] print(f\" πŸ“Š Ranging Performance: 0% Win Rate, 20 consecutive losses\")\n", "# [DEAKTIVIERT 20.12.2025] print(f\" βœ… Filter is protecting you from losses!\")\n", "# [DEAKTIVIERT 20.12.2025] return None\n", "\n", " # Additional safety: Even in trending, ADX must be > 25\n", "# [DEAKTIVIERT 20.12.2025] if regime == 'trending' and adx < 25:\n", "# [DEAKTIVIERT 20.12.2025] if debug:\n", "# [DEAKTIVIERT 20.12.2025] print(f\"\\nπŸ›‘ TRADE BLOCKIERT: Weak Trend!\")\n", "# [DEAKTIVIERT 20.12.2025] print(f\" ADX: {adx:.1f} (< 25 = too weak)\")\n", "# [DEAKTIVIERT 20.12.2025] return None\n", "\n", " # βœ… Regime check passed - execute original function\n", "# [DEAKTIVIERT 20.12.2025] if debug:\n", "# [DEAKTIVIERT 20.12.2025] print(f\"βœ… REGIME CHECK PASSED: {regime.upper()} (ADX {adx:.1f})\")\n", "\n", "# [DEAKTIVIERT 20.12.2025] return _original_execute_trade_v2_adaptive(\n", "# [DEAKTIVIERT 20.12.2025] symbol=symbol,\n", "# [DEAKTIVIERT 20.12.2025] atr_mult=atr_mult,\n", "# [DEAKTIVIERT 20.12.2025] base_confidence=base_confidence,\n", "# [DEAKTIVIERT 20.12.2025] max_risk_per_trade=max_risk_per_trade,\n", "# [DEAKTIVIERT 20.12.2025] risk_filter=risk_filter,\n", "# [DEAKTIVIERT 20.12.2025] min_atr=min_atr,\n", "# [DEAKTIVIERT 20.12.2025] use_pullback_entry=use_pullback_entry,\n", "# [DEAKTIVIERT 20.12.2025] max_positions=max_positions,\n", "# [DEAKTIVIERT 20.12.2025] strategy_name=strategy_name,\n", "# [DEAKTIVIERT 20.12.2025] debug=debug\n", "# [DEAKTIVIERT 20.12.2025] )\n", "\n", "# Replace original with wrapped version\n", "# [DEAKTIVIERT 20.12.2025] execute_trade_v2_adaptive = execute_trade_v2_adaptive_with_ranging_filter\n", "\n", "# [DEAKTIVIERT 20.12.2025] print(\"βœ… Ranging Filter activated!\")\n", "# [DEAKTIVIERT 20.12.2025] print(\" πŸ›‘ Blocks ALL ranging market trades\")\n", "# [DEAKTIVIERT 20.12.2025] print(\" βœ… Only allows trending markets with ADX > 25\")\n" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "βœ… Multi-Timeframe Ranging Filter aktiviert!\n", " PrΓΌft: H1, H4, D1\n", " Gewichtung: D1 (3x) > H4 (2x) > H1 (1x)\n", " Threshold: ADX > 25\n", "\n", "πŸ“Š Entscheidungslogik:\n", " 1. D1 ADX > 30 β†’ ERLAUBT (starker Trend)\n", " 2. H4+D1 beide > 25 β†’ ERLAUBT (bestΓ€tigter Trend)\n", " 3. Weighted ADX > 25 β†’ ERLAUBT (Gesamtbild)\n", " 4. Sonst β†’ BLOCKIERT (Ranging)\n" ] } ], "source": [ "# ==========================================\n", "# 🎯 MULTI-TIMEFRAME RANGING FILTER (20.12.2025)\n", "# ==========================================\n", "# Verbesserte Ranging-Erkennung basierend auf H1, H4, und D1\n", "\n", "from multi_timeframe_regime_filter import create_multi_timeframe_ranging_filter\n", "\n", "# Backup der Original-Funktion (falls noch nicht geschehen)\n", "if '_original_execute_trade_v2_adaptive' not in dir():\n", " _original_execute_trade_v2_adaptive = execute_trade_v2_adaptive\n", "\n", "# Ersetze mit Multi-TF Filter\n", "execute_trade_v2_adaptive = create_multi_timeframe_ranging_filter(\n", " _original_execute_trade_v2_adaptive\n", ")\n", "\n", "print(\"βœ… Multi-Timeframe Ranging Filter aktiviert!\")\n", "print(\" PrΓΌft: H1, H4, D1\")\n", "print(\" Gewichtung: D1 (3x) > H4 (2x) > H1 (1x)\")\n", "print(\" Threshold: ADX > 25\")\n", "print(\"\")\n", "print(\"πŸ“Š Entscheidungslogik:\")\n", "print(\" 1. D1 ADX > 30 β†’ ERLAUBT (starker Trend)\")\n", "print(\" 2. H4+D1 beide > 25 β†’ ERLAUBT (bestΓ€tigter Trend)\")\n", "print(\" 3. Weighted ADX > 25 β†’ ERLAUBT (Gesamtbild)\")\n", "print(\" 4. Sonst β†’ BLOCKIERT (Ranging)\")\n" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "πŸ§ͺ TESTING MULTI-TIMEFRAME REGIME FILTER\n", "======================================================================\n", "\n", "\n", "πŸ“Š MULTI-TIMEFRAME REGIME CHECK\n", "============================================================\n", " H1: ADX 28.5 (weight 1.0x) βœ… TREND\n", " H4: ADX 39.4 (weight 2.0x) βœ… TREND\n", " D1: ADX 36.6 (weight 3.0x) βœ… TREND\n", "\n", " Weighted ADX: 36.2\n", " Threshold: 25\n", "\n", " βœ… ALLOWED: TRENDING\n", " Reason: D1 stark trending (ADX 36.6 > 30) β†’ Trend dominiert\n", "============================================================\n", "\n", "πŸ“‹ ERGEBNIS:\n", " Trading Allowed: True\n", " Regime: trending\n", " Weighted ADX: 36.2\n", "\n", "βœ… FILTER ERLAUBT TRADES!\n", " β†’ Bot wird bei nΓ€chstem Scheduler-Run traden (wenn andere Bedingungen passen)\n" ] } ], "source": [ "# ==========================================\n", "# πŸ§ͺ TEST: Multi-Timeframe Regime Filter\n", "# ==========================================\n", "# FΓΌhre diese Cell aus um den Filter zu testen\n", "\n", "from multi_timeframe_regime_filter import detect_multi_timeframe_regime\n", "\n", "print(\"πŸ§ͺ TESTING MULTI-TIMEFRAME REGIME FILTER\")\n", "print(\"=\" * 70)\n", "print()\n", "\n", "# Test-Run\n", "result = detect_multi_timeframe_regime(\"XAUUSD\", adx_threshold=25, debug=True)\n", "\n", "print()\n", "print(\"πŸ“‹ ERGEBNIS:\")\n", "print(f\" Trading Allowed: {result['allowed']}\")\n", "print(f\" Regime: {result['regime']}\")\n", "print(f\" Weighted ADX: {result['weighted_adx']:.1f}\")\n", "print()\n", "\n", "if result['allowed']:\n", " print(\"βœ… FILTER ERLAUBT TRADES!\")\n", " print(\" β†’ Bot wird bei nΓ€chstem Scheduler-Run traden (wenn andere Bedingungen passen)\")\n", "else:\n", " print(\"πŸ›‘ FILTER BLOCKIERT TRADES\")\n", " print(f\" β†’ Grund: {result['reason']}\")\n" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "⚠️ check_open_positions not found - skipping Position Monitor fix\n" ] } ], "source": [ "# ==========================================\n", "# πŸ”₯ FIX #2: POSITION MONITOR DB LOGGING (09.12.2025)\n", "# ==========================================\n", "\n", "# Wrap check_open_positions to add DB logging\n", "if 'check_open_positions' in globals():\n", " _original_check_open_positions = check_open_positions\n", "\n", " def check_open_positions_with_db_logging():\n", " \"\"\"\n", " Enhanced position monitor that writes exits to database\n", " \"\"\"\n", " from datetime import datetime\n", "\n", " # Get current open positions from MT5\n", " positions = mt.positions_get(symbol=symbol)\n", "\n", " if not positions or len(positions) == 0:\n", " # Check if we have positions in DB that should be closed\n", " if 'db' in globals():\n", " try:\n", " open_trades_in_db = db.get_open_trades()\n", "\n", " for trade in open_trades_in_db:\n", " ticket = trade['ticket']\n", "\n", " # Check if this position is in MT5 history (closed)\n", " deals = mt.history_deals_get(ticket=ticket)\n", " if deals and len(deals) > 0:\n", " # Position was closed - log to DB\n", " last_deal = deals[-1]\n", "\n", " db.close_trade(\n", " ticket=ticket,\n", " exit_price=last_deal.price,\n", " exit_time=datetime.fromtimestamp(last_deal.time),\n", " profit=last_deal.profit,\n", " status='closed',\n", " exit_reason='mt5_detected',\n", " commission=last_deal.commission,\n", " swap=last_deal.swap\n", " )\n", "\n", " logger.info(f\"πŸ’Ύ Position #{ticket} exit logged to DB (profit: ${last_deal.profit:.2f})\")\n", "\n", " except Exception as e:\n", " logger.error(f\"⚠️ DB logging error: {e}\")\n", "\n", " # Call original function\n", " return _original_check_open_positions()\n", "\n", " # Replace\n", " check_open_positions = check_open_positions_with_db_logging\n", " print(\"βœ… Position Monitor DB logging activated!\")\n", " print(\" πŸ’Ύ Exits will be written to SQLite database\")\n", " print(\" πŸ“Š Drawdown Protection will work correctly\")\n", "else:\n", " print(\"⚠️ check_open_positions not found - skipping Position Monitor fix\")\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 10. Performance Monitoring & Logging" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "βœ… Performance Monitoring functions defined (with adaptive features)\n" ] } ], "source": [ "def log_trade_performance_adaptive(signal_info, order_result):\n", " \"\"\"\n", " Loggt Trade-Performance fΓΌr V1.6 Adaptive Complete\n", " \"\"\"\n", " trade_data = {\n", " 'timestamp': datetime.now().isoformat(),\n", " 'version': 'V1.6_Adaptive_Complete',\n", " 'symbol': signal_info['symbol'],\n", " 'entry_signal': signal_info['entry_signal'],\n", " 'confidence': signal_info['confidence'],\n", " 'adaptive_threshold': signal_info['adaptive_threshold'],\n", " 'signal_quality': signal_info['signal_quality'],\n", " 'market_regime': signal_info['market_regime']['regime'],\n", " 'regime_strength': signal_info['market_regime']['strength'],\n", " 'risk_adjusted_strength': signal_info['risk_adjusted_strength'],\n", " 'adaptive_interval': signal_info['adaptive_interval'],\n", " 'session': signal_info['session'],\n", " 'relaxed_features': {\n", " 'pullback_entry_disabled': True,\n", " 'lower_confidence_threshold': True,\n", " 'lower_min_strength': True,\n", " 'fixed_tf_alignment': True\n", " },\n", " 'adaptive_features': {\n", " 'adaptive_rhythm': True,\n", " 'session_aware': True,\n", " 'volatility_based': True\n", " },\n", " 'position_control_active': True,\n", " 'order_result': str(order_result) if order_result else None\n", " }\n", " \n", " try:\n", " filename = f\"trade_performance_v16_{signal_info['symbol']}_{datetime.now().strftime('%Y%m')}.json\"\n", " try:\n", " with open(filename, 'r') as f: \n", " data = json.load(f)\n", " except FileNotFoundError: \n", " data = []\n", " data.append(trade_data)\n", " with open(filename, 'w') as f: \n", " json.dump(data, f, indent=2)\n", " print(f\"πŸ“Š Performance logged to {filename}\")\n", " except Exception as e:\n", " print(f\"Warning: Could not log performance: {e}\")\n", "\n", "\n", "def analyze_performance_adaptive(symbol=\"XAUUSD\", days_back=30):\n", " \"\"\"\n", " Analysiert Performance der V1.6 Adaptive Complete Version\n", " \"\"\"\n", " try:\n", " filename = f\"trade_performance_v16_{symbol}_{datetime.now().strftime('%Y%m')}.json\"\n", " \n", " with open(filename, 'r') as f:\n", " data = json.load(f)\n", " \n", " cutoff = datetime.now() - timedelta(days=days_back)\n", " recent_trades = [\n", " trade for trade in data \n", " if datetime.fromisoformat(trade['timestamp']) > cutoff\n", " ]\n", " \n", " if not recent_trades:\n", " print(f\"No V1.6 trades in last {days_back} days\")\n", " return\n", " \n", " total_trades = len(recent_trades)\n", " \n", " # Analysis by regime\n", " by_regime = {}\n", " for trade in recent_trades:\n", " regime = trade['market_regime']\n", " by_regime[regime] = by_regime.get(regime, 0) + 1\n", " \n", " # Analysis by interval\n", " by_interval = {}\n", " for trade in recent_trades:\n", " interval = trade.get('adaptive_interval', 'unknown')\n", " by_interval[interval] = by_interval.get(interval, 0) + 1\n", " \n", " # Analysis by session\n", " by_session = {}\n", " for trade in recent_trades:\n", " session = trade.get('session', 'unknown')\n", " by_session[session] = by_session.get(session, 0) + 1\n", " \n", " # Print results\n", " print(f\"\\nπŸ“Š V1.6 ADAPTIVE COMPLETE PERFORMANCE - Last {days_back} days\")\n", " print(f\"Total Trades: {total_trades}\")\n", " \n", " print(f\"\\nBy Market Regime:\")\n", " for regime, count in by_regime.items():\n", " print(f\" {regime.upper()}: {count} ({count/total_trades*100:.1f}%)\")\n", " \n", " print(f\"\\nπŸ†• By Adaptive Interval:\")\n", " for interval, count in sorted(by_interval.items()):\n", " print(f\" {interval} min: {count} ({count/total_trades*100:.1f}%)\")\n", " \n", " print(f\"\\nπŸ†• By Trading Session:\")\n", " for session, count in by_session.items():\n", " print(f\" {session.upper()}: {count} ({count/total_trades*100:.1f}%)\")\n", " \n", " except Exception as e:\n", " print(f\"Could not analyze performance: {e}\")\n", "\n", "\n", "print(\"βœ… Performance Monitoring functions defined (with adaptive features)\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 11. πŸ†• Adaptive Scheduler" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "πŸ”§ Force resuming trading after Ranging Filter deployment...\n", "⚠️ drawdown_protection not initialized yet\n" ] } ], "source": [ "# ==========================================\n", "# FORCE RESUME TRADING (V2.2 FIX)\n", "# ==========================================\n", "\n", "print(\"πŸ”§ Force resuming trading after Ranging Filter deployment...\")\n", "\n", "if 'drawdown_protection' in globals():\n", " # Force resume\n", " drawdown_protection._resume_trading()\n", " \n", " # Verify\n", " can_trade, reason = drawdown_protection.can_trade()\n", " \n", " print(f\"\\nβœ… Status after resume:\")\n", " print(f\" Can Trade: {can_trade}\")\n", " print(f\" Reason: {reason if not can_trade else 'All clear!'}\")\n", " \n", " if not can_trade:\n", " print(\"\\n⚠️ Still blocked - using nuclear option...\")\n", " drawdown_protection.trading_paused = False\n", " drawdown_protection.pause_until = None\n", " drawdown_protection.pause_reason = None\n", " \n", " can_trade2, reason2 = drawdown_protection.can_trade()\n", " print(f\" After force clear: {can_trade2}\")\n", " \n", " print(\"\\nπŸ›‘οΈ Drawdown Protection Status:\")\n", " status = drawdown_protection.get_status()\n", " print(f\" Consecutive Losses: {status['consecutive_losses']}\")\n", " print(f\" Trading Allowed: {status['trading_allowed']}\")\n", " \n", "else:\n", " print(\"⚠️ drawdown_protection not initialized yet\")" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "πŸ”§ Setting up Trading Check...\n", "βœ… Session Filter aktiviert!\n", " Deaktivierte Sessions:\n", " β€’ ASIAN : βœ… AKTIV\n", " β€’ LONDON : ❌ DEAKTIVIERT\n", " β€’ OVERLAP : ❌ DEAKTIVIERT\n", " β€’ NY : βœ… AKTIV\n", "\n", "πŸ›‘οΈ Drawdown Protection aktiviert!\n", " β€’ Daily Loss Limit: $100\n", " β€’ Weekly Loss Limit: $300\n", " β€’ Monthly Loss Limit: $800\n", " β€’ Max Consecutive Losses: 5\n", " β€’ Cooldown: 24h\n", "\n", "βœ… Trading Check ist jetzt vollstΓ€ndig geschΓΌtzt!\n", " πŸ“Š Session Filter: Aktiv\n", " πŸ›‘οΈ Drawdown Protection: Aktiv\n" ] } ], "source": [ "# ==========================================\n", "# TRADING CHECK: SESSION FILTER + DRAWDOWN PROTECTION\n", "# ==========================================\n", "\n", "from session_filter_patch import (\n", " create_session_filtered_check,\n", " SESSION_WHITELIST_CONFIG,\n", " is_session_allowed\n", ")\n", "from drawdown_protection import create_protected_trading_check\n", "\n", "print(\"πŸ”§ Setting up Trading Check...\")\n", "\n", "# Step 1: Create base session-filtered trading check\n", "base_trading_check = create_session_filtered_check(\n", " rhythm_manager=rhythm_manager,\n", " execute_func=execute_trade_v2_adaptive,\n", " symbol=symbol,\n", " strategy_name=strategy_name,\n", " max_positions=max_positions,\n", " logger=logger,\n", " datetime=datetime\n", ")\n", "\n", "print(\"βœ… Session Filter aktiviert!\")\n", "print(\" Deaktivierte Sessions:\")\n", "for session, enabled in SESSION_WHITELIST_CONFIG['enabled_sessions'].items():\n", " status = \"βœ… AKTIV\" if enabled else \"❌ DEAKTIVIERT\"\n", " print(f\" β€’ {session.upper():8s}: {status}\")\n", "\n", "# Step 2: Wrap with Drawdown Protection\n", "adaptive_trading_check = create_protected_trading_check(infra, base_trading_check)\n", "drawdown_protection = adaptive_trading_check.protection\n", "\n", "print(\"\\nπŸ›‘οΈ Drawdown Protection aktiviert!\")\n", "print(f\" β€’ Daily Loss Limit: ${drawdown_protection.max_daily_loss}\")\n", "print(f\" β€’ Weekly Loss Limit: ${drawdown_protection.max_weekly_loss}\")\n", "print(f\" β€’ Monthly Loss Limit: ${drawdown_protection.max_monthly_loss}\")\n", "print(f\" β€’ Max Consecutive Losses: {drawdown_protection.max_consecutive_losses}\")\n", "print(f\" β€’ Cooldown: {drawdown_protection.cooldown_hours}h\")\n", "\n", "print(\"\\nβœ… Trading Check ist jetzt vollstΓ€ndig geschΓΌtzt!\")\n", "print(\" πŸ“Š Session Filter: Aktiv\")\n", "print(\" πŸ›‘οΈ Drawdown Protection: Aktiv\")\n" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "2025-12-26 18:02:23,742 - INFO - βœ… Trading resumed after: None\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "βœ… Trading force-resumed (Ranging Filter deployed)\n" ] } ], "source": [ "# Force resume after restart (V2.2 fix)\n", "drawdown_protection._resume_trading()\n", "print(\"βœ… Trading force-resumed (Ranging Filter deployed)\")" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [], "source": [ "# def adaptive_trading_check():\n", "# \"\"\"\n", "# πŸ†• V1.6: Adaptive Trading Check\n", "# PrΓΌft basierend auf optimalem Intervall ob gehandelt werden soll\n", "# \"\"\"\n", "# try:\n", "# optimal_interval = rhythm_manager.calculate_optimal_interval()\n", "# current_minute = datetime.now().minute\n", " \n", "# # Trading nur zu berechneten Zeitpunkten\n", "# if current_minute % optimal_interval == 0:\n", "# logger.info(f\"\\n⏰ {datetime.now().strftime('%Y-%m-%d %H:%M:%S')} - ADAPTIVE Check\")\n", "# logger.info(f\"Intervall: {optimal_interval} min\")\n", " \n", "# # FΓΌhre Trading aus\n", "# execute_trade_v2_adaptive(\n", "# symbol=symbol,\n", "# strategy_name=strategy_name,\n", "# max_positions=max_positions\n", "# )\n", " \n", "# except Exception as e:\n", "# logger.error(f\"Fehler im Adaptive Trading Check: {e}\")\n", "\n", "\n", "def print_status_report():\n", " \"\"\"Status-Report\"\"\"\n", " print(rhythm_manager.get_status_report())\n", "\n", "\n", "# print(\"βœ… Adaptive Scheduler functions defined\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 12. βœ… KORRIGIERT: Trading Configuration" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "βš™οΈ V1.6 Adaptive Complete Configuration:\n", "\n", "πŸ›‘οΈ Position Control:\n", " Max Positions: 1\n", " Strategy: TradingBot_V1.6\n", "\n", "πŸš€ Relaxed Parameters:\n", " Base Confidence: 60%\n", " Min ATR: 0.0008\n", " Pullback Entry: False\n", "\n", "⚑ Adaptive Features:\n", " Dynamic Intervals: 5/15/30 min\n", " Session-aware: Yes\n", " Volatility-based: Yes\n", "\n", "βœ… Configuration complete!\n" ] } ], "source": [ "# βœ… KORRIGIERT: Zentrale Konfiguration (fehlte in ursprΓΌnglicher V1.6)\n", "ADAPTIVE_COMPLETE_CONFIG = {\n", " 'symbol': symbol,\n", " 'atr_mult': 1.5,\n", " 'base_confidence': 60, # RELAXED\n", " 'max_risk_per_trade': 0.01,\n", " 'risk_filter': True,\n", " 'min_atr': 0.0008, # RELAXED\n", " 'use_pullback_entry': False, # DISABLED\n", " 'max_positions': max_positions,\n", " 'strategy_name': strategy_name,\n", " 'debug': True\n", "}\n", "\n", "print(\"βš™οΈ V1.6 Adaptive Complete Configuration:\")\n", "print(\"\\nπŸ›‘οΈ Position Control:\")\n", "print(f\" Max Positions: {ADAPTIVE_COMPLETE_CONFIG['max_positions']}\")\n", "print(f\" Strategy: {ADAPTIVE_COMPLETE_CONFIG['strategy_name']}\")\n", "\n", "print(\"\\nπŸš€ Relaxed Parameters:\")\n", "print(f\" Base Confidence: {ADAPTIVE_COMPLETE_CONFIG['base_confidence']}%\")\n", "print(f\" Min ATR: {ADAPTIVE_COMPLETE_CONFIG['min_atr']}\")\n", "print(f\" Pullback Entry: {ADAPTIVE_COMPLETE_CONFIG['use_pullback_entry']}\")\n", "\n", "print(\"\\n⚑ Adaptive Features:\")\n", "print(f\" Dynamic Intervals: 5/15/30 min\")\n", "print(f\" Session-aware: Yes\")\n", "print(f\" Volatility-based: Yes\")\n", "\n", "print(\"\\nβœ… Configuration complete!\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 13. βœ… KORRIGIERT: Status & Monitoring Functions" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "βœ… Status monitoring function defined (COMPLETE with all features)\n" ] } ], "source": [ "# βœ… KORRIGIERT: Umfassendes Status Monitoring (fehlte in V1.6)\n", "def check_adaptive_bot_status():\n", " \"\"\"\n", " βœ… NEU: Kombiniertes Status-Check fΓΌr V1.6 Adaptive Complete\n", " Kombiniert Position Control + Adaptive Rhythm Status\n", " \"\"\"\n", " print(\"\\n\" + \"=\"*70)\n", " print(\"πŸ” V1.6 ADAPTIVE COMPLETE BOT STATUS\")\n", " print(\"=\"*70)\n", " \n", " # System Status\n", " print(\"\\nπŸ“‘ SYSTEM STATUS:\")\n", " print(f\" MT5 Connection: {'βœ…' if mt.terminal_info() else '❌'}\")\n", " print(f\" Scheduler Running: {'βœ…' if scheduler.running else '❌'}\")\n", " print(f\" Active Jobs: {len(scheduler.get_jobs())}\")\n", " \n", " # Adaptive Rhythm Status\n", " print(\"\\n⚑ ADAPTIVE RHYTHM:\")\n", " optimal_interval = rhythm_manager.calculate_optimal_interval()\n", " session = rhythm_manager.get_current_session()\n", " df = rhythm_manager.get_market_data()\n", " \n", " if df is not None:\n", " atr = df['atr'].iloc[-1]\n", " vol_level = rhythm_manager.get_volatility_level(atr)\n", " print(f\" Current Interval: {optimal_interval} min\")\n", " print(f\" Trading Session: {session.upper()}\")\n", " print(f\" ATR (H1): {atr:.2f}\")\n", " print(f\" Volatility: {vol_level.upper()}\")\n", " else:\n", " print(\" ⚠️ Could not fetch market data\")\n", " \n", " # Position Status\n", " print(\"\\nπŸ›‘οΈ POSITION CONTROL:\")\n", " has_pos, pos_info = check_existing_positions(symbol, strategy_name)\n", " print(f\" Active Positions: {pos_info['count']}/{max_positions}\")\n", " print(f\" Trading Status: {'πŸ›‘ BLOCKED' if has_pos else 'βœ… READY'}\")\n", " \n", " if has_pos:\n", " for i, pos in enumerate(pos_info['details'], 1):\n", " profit_emoji = \"🟒\" if pos['profit'] >= 0 else \"πŸ”΄\"\n", " print(f\" Position {i}: {pos['type']} | {profit_emoji} {pos['profit']:.2f}\")\n", " \n", " # Signal Status\n", " print(\"\\nπŸ“Š CURRENT SIGNAL:\")\n", " try:\n", " signal_info = extended_top_down_v2_adaptive(symbol)\n", " if signal_info:\n", " signal_dir = \"LONG\" if signal_info['entry_signal'] == 1 else \"SHORT\" if signal_info['entry_signal'] == -1 else \"NONE\"\n", " print(f\" Signal: {signal_dir}\")\n", " print(f\" Confidence: {signal_info['confidence']}%\")\n", " print(f\" Threshold: {signal_info['adaptive_threshold']}%\")\n", " print(f\" Quality: {signal_info['signal_quality'].upper()}\")\n", " print(f\" Regime: {signal_info['market_regime']['regime'].upper()}\")\n", " \n", " would_trade = (signal_info['entry_signal'] != 0 and not has_pos)\n", " print(f\" Would Trade: {'βœ… YES' if would_trade else '❌ NO'}\")\n", " else:\n", " print(\" ⚠️ Signal analysis failed\")\n", " except Exception as e:\n", " print(f\" ❌ Error: {e}\")\n", " \n", " # Version Info\n", " print(\"\\nπŸŽ‰ VERSION INFO:\")\n", " print(\" Version: V1.6 Adaptive Complete (CORRECTED)\")\n", " print(\" Features: Position Control + Relaxed + Adaptive Rhythm\")\n", " print(\" Status: Production-Ready βœ…\")\n", " print(\"=\"*70)\n", "\n", "\n", "print(\"βœ… Status monitoring function defined (COMPLETE with all features)\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 14. πŸš€ Start Adaptive Scheduler" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "2025-12-26 18:02:24,683 - INFO - Adding job tentatively -- it will be properly scheduled when the scheduler starts\n", "2025-12-26 18:02:24,692 - INFO - Adding job tentatively -- it will be properly scheduled when the scheduler starts\n", "2025-12-26 18:02:24,695 - INFO - Adding job tentatively -- it will be properly scheduled when the scheduler starts\n", "2025-12-26 18:02:24,697 - INFO - Adding job tentatively -- it will be properly scheduled when the scheduler starts\n", "2025-12-26 18:02:24,706 - INFO - Adding job tentatively -- it will be properly scheduled when the scheduler starts\n", "2025-12-26 18:02:24,709 - INFO - Adding job tentatively -- it will be properly scheduled when the scheduler starts\n", "2025-12-26 18:02:24,710 - INFO - Added job \"create_protected_trading_check..protected_check\" to job store \"default\"\n", "2025-12-26 18:02:24,711 - INFO - Added job \"print_status_report\" to job store \"default\"\n", "2025-12-26 18:02:24,712 - INFO - Added job \"TradingInfrastructure.send_daily_report\" to job store \"default\"\n", "2025-12-26 18:02:24,712 - INFO - Added job \"TradingInfrastructure.send_weekly_report\" to job store \"default\"\n", "2025-12-26 18:02:24,713 - INFO - Added job \"PositionMonitor.check_open_positions\" to job store \"default\"\n", "2025-12-26 18:02:24,730 - INFO - Added job \"\" to job store \"default\"\n", "2025-12-26 18:02:24,731 - INFO - Scheduler started\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "βœ… Scheduled reports added:\n", " πŸ“Š Daily report: 22:00 UTC\n", " πŸ“ˆ Weekly report: Sunday 23:00 UTC\n", "βœ… Scheduled reports added:\n", " πŸ“Š Daily report: 22:00 UTC\n", " πŸ“ˆ Weekly report: Sunday 23:00 UTC\n", "βœ… Position Monitor job added\n", "βœ… Advanced Position Management job added\n", "\n", "βœ… Scheduler started!\n", "\n", "πŸ“‹ Active Jobs: 6\n", " β€’ adaptive_trading_check\n", " β€’ position_monitor\n", " β€’ advanced_position_management\n", " β€’ status_report\n", " β€’ daily_report\n", " β€’ weekly_report\n", "\n", "======================================================================\n", "πŸš€ TradingBot V2.2 - All Systems Ready!\n", "======================================================================\n" ] } ], "source": [ "# ==========================================\n", "# SETUP SCHEDULER (V1.6 ADAPTIVE COMPLETE)\n", "# ==========================================\n", "\n", "from apscheduler.schedulers.background import BackgroundScheduler\n", "\n", "scheduler = BackgroundScheduler()\n", "\n", "# 1. ADAPTIVE TRADING CHECK (every minute, executes at optimal intervals)\n", "scheduler.add_job(\n", " func=adaptive_trading_check,\n", " trigger='cron',\n", " minute='*',\n", " id='adaptive_trading_check',\n", " replace_existing=True\n", ")\n", "\n", "# 2. STATUS REPORT (every 30 minutes)\n", "scheduler.add_job(\n", " func=print_status_report,\n", " trigger='cron',\n", " minute='0,30',\n", " id='status_report',\n", " replace_existing=True\n", ")\n", "\n", "# 3. SCHEDULED REPORTS (V1.8) - Daily & Weekly\n", "create_scheduled_reports(infra, scheduler)\n", "print(\"βœ… Scheduled reports added:\")\n", "print(\" πŸ“Š Daily report: 22:00 UTC\")\n", "print(\" πŸ“ˆ Weekly report: Sunday 23:00 UTC\")\n", "\n", "# 4. POSITION MONITOR (V1.8) - Every minute\n", "scheduler.add_job(\n", " func=position_monitor.check_open_positions,\n", " trigger='interval',\n", " minutes=1,\n", " id='position_monitor',\n", " replace_existing=True\n", ")\n", "print(\"βœ… Position Monitor job added\")\n", "\n", "# 5. ADVANCED POSITION MANAGEMENT (V2.1) - Trailing Stop + Partial TP\n", "scheduler.add_job(\n", " func=lambda: adv_position_mgr.check_and_update_positions(symbol),\n", " trigger='interval',\n", " minutes=1,\n", " id='advanced_position_management',\n", " replace_existing=True\n", ")\n", "print(\"βœ… Advanced Position Management job added\")\n", "\n", "# START SCHEDULER\n", "if not scheduler.running:\n", " scheduler.start()\n", " print(\"\\nβœ… Scheduler started!\")\n", "else:\n", " print(\"\\n⚠️ Scheduler already running\")\n", "\n", "# Show active jobs\n", "print(f\"\\nπŸ“‹ Active Jobs: {len(scheduler.get_jobs())}\")\n", "for job in scheduler.get_jobs():\n", " print(f\" β€’ {job.id}\")\n", "\n", "print(\"\\n\" + \"=\"*70)\n", "print(\"πŸš€ TradingBot V2.2 - All Systems Ready!\")\n", "print(\"=\"*70)\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 15. βœ… KORRIGIERT: Testing Suite" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "πŸ§ͺ TEST 1: Position Check\n", "==================================================\n", "\n", "πŸ“Š POSITION SUMMARY fΓΌr XAUUSD (V1.6 Adaptive Complete)\n", "============================================================\n", "⚠️ 1 aktive Position(en) gefunden:\n", "\n", " Position 1:\n", " Ticket: 623036395\n", " Typ: BUY\n", " Volumen: 0.01\n", " ErΓΆffnungspreis: 4539.16\n", " Profit: πŸ”΄ -3.29\n", " ErΓΆffnungszeit: 2025-12-26 18:15:00\n", "\n", "πŸ›‘ TRADING BLOCKIERT - Maximal 1 Position erlaubt\n" ] }, { "data": { "text/plain": [ "True" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# βœ… KORRIGIERT: Umfassende Testing Suite (fehlte in V1.6)\n", "\n", "# Test 1: Position Summary\n", "print(\"πŸ§ͺ TEST 1: Position Check\")\n", "print(\"=\"*50)\n", "get_position_summary(symbol, strategy_name)" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "πŸ§ͺ TEST 2: Adaptive Rhythm\n", "==================================================\n", "\n", "╔════════════════════════════════════════════════════════╗\n", "β•‘ ADAPTIVE RHYTHM STATUS - 18:02:25 UTC β•‘\n", "╠════════════════════════════════════════════════════════╣\n", "β•‘ Aktuelles Intervall: 5 Minuten β•‘\n", "β•‘ Trading Session: NY β•‘\n", "β•‘ VolatilitΓ€tslevel: HIGH β•‘\n", "β•‘ ATR (H1): 15.80 β•‘\n", "╠════════════════════════════════════════════════════════╣\n", "β•‘ INTERVALL-SCHEMA: β•‘\n", "β•‘ β€’ Overlap (13-16 UTC): 5-15 Min (aktivste Phase) β•‘\n", "β•‘ β€’ London/NY: 5-30 Min (volatilitΓ€tsabh.) β•‘\n", "β•‘ β€’ Asian Session: 15-30 Min (ruhigere Phase) β•‘\n", "β•šβ•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•\n", "\n", "\n", "Details:\n", " Optimal Interval: 5 min\n", " Session: ny\n", " ATR: 15.80\n", " Volatility Level: high\n" ] } ], "source": [ "# Test 2: Adaptive Rhythm Status\n", "print(\"\\nπŸ§ͺ TEST 2: Adaptive Rhythm\")\n", "print(\"=\"*50)\n", "print_status_report()\n", "\n", "# Test Details\n", "optimal_interval = rhythm_manager.calculate_optimal_interval()\n", "session = rhythm_manager.get_current_session()\n", "df = rhythm_manager.get_market_data()\n", "\n", "if df is not None:\n", " atr = df['atr'].iloc[-1]\n", " vol_level = rhythm_manager.get_volatility_level(atr)\n", " print(f\"\\nDetails:\")\n", " print(f\" Optimal Interval: {optimal_interval} min\")\n", " print(f\" Session: {session}\")\n", " print(f\" ATR: {atr:.2f}\")\n", " print(f\" Volatility Level: {vol_level}\")" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "πŸ§ͺ TEST 3: Signal Analysis\n", "==================================================\n", "πŸ” Analyzing XAUUSD with V1.6 ADAPTIVE COMPLETE parameters...\n", "\n", "πŸ“Š V1.6 ADAPTIVE COMPLETE Trend-Analyse fΓΌr XAUUSD\n", "⚑ Adaptive Interval: 5 min | Session: NY\n", "🎯 Market Regime: RANGING (Strength: 18%)\n", "🎚️ Adaptive Threshold: 70% (RELAXED)\n", "\n", "+------+---------+------------+---------+----------+---------+\n", "| TF | Trend | Strength | ATR | Slope | Price |\n", "|------+---------+------------+---------+----------+---------|\n", "| D1 | uptrend | 769.26 | 71.3863 | 8.23715 | 4535.87 |\n", "| H4 | uptrend | 579.85 | 29.015 | 2.52365 | 4535.87 |\n", "| H1 | uptrend | 708.89 | 15.5979 | 1.65859 | 4535.87 |\n", "| M30 | uptrend | 371.39 | 11.1134 | 0.619122 | 4535.87 |\n", "| M15 | uptrend | 175.45 | 8.7263 | 0.229661 | 4535.87 |\n", "| M5 | uptrend | 202.71 | 5.7747 | 0.175588 | 4535.87 |\n", "+------+---------+------------+---------+----------+---------+\n", "\n", "➑️ Standard-Trend: uptrend (Strength: 693.49)\n", "➑️ Fast-Trend: uptrend (Required: 2/4)\n", "➑️ Top-Down-Trend: uptrend\n", "➑️ Confidence: 100.0% (Threshold: 70%)\n", "➑️ Risk-Adjusted Strength: 188585.9 (Min: 80)\n", "➑️ Signal Quality: EXCELLENT\n", "\n", "πŸš€ V1.6 Adaptive Complete: Full Features + Adaptive Rhythm\n", "\n", "🎯 SIGNAL SUMMARY:\n", " Entry Signal: 1\n", " Confidence: 100.0%\n", " Threshold: 70%\n", " Quality: EXCELLENT\n", " Regime: RANGING\n", " Adaptive Interval: 5 min\n", " Session: NY\n", "\n", "βœ… TRADING SIGNAL: LONG\n" ] } ], "source": [ "# Test 3: Signal Analysis\n", "print(\"\\nπŸ§ͺ TEST 3: Signal Analysis\")\n", "print(\"=\"*50)\n", "\n", "signal_result = extended_top_down_v2_adaptive(symbol)\n", "\n", "if signal_result:\n", " print(f\"\\n🎯 SIGNAL SUMMARY:\")\n", " print(f\" Entry Signal: {signal_result['entry_signal']}\")\n", " print(f\" Confidence: {signal_result['confidence']}%\")\n", " print(f\" Threshold: {signal_result['adaptive_threshold']}%\")\n", " print(f\" Quality: {signal_result['signal_quality'].upper()}\")\n", " print(f\" Regime: {signal_result['market_regime']['regime'].upper()}\")\n", " print(f\" Adaptive Interval: {signal_result['adaptive_interval']} min\")\n", " print(f\" Session: {signal_result['session'].upper()}\")\n", " \n", " if signal_result['entry_signal'] != 0:\n", " direction = \"LONG\" if signal_result['entry_signal'] == 1 else \"SHORT\"\n", " print(f\"\\nβœ… TRADING SIGNAL: {direction}\")\n", " else:\n", " print(f\"\\n⏸️ NO TRADING SIGNAL\")\n", "else:\n", " print(\"❌ Signal analysis failed\")" ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "πŸ§ͺ TEST 4: Complete Bot Status\n", "==================================================\n", "\n", "======================================================================\n", "πŸ” V1.6 ADAPTIVE COMPLETE BOT STATUS\n", "======================================================================\n", "\n", "πŸ“‘ SYSTEM STATUS:\n", " MT5 Connection: βœ…\n", " Scheduler Running: βœ…\n", " Active Jobs: 6\n", "\n", "⚑ ADAPTIVE RHYTHM:\n", " Current Interval: 5 min\n", " Trading Session: NY\n", " ATR (H1): 15.80\n", " Volatility: HIGH\n", "\n", "πŸ›‘οΈ POSITION CONTROL:\n", " Active Positions: 1/1\n", " Trading Status: πŸ›‘ BLOCKED\n", " Position 1: BUY | πŸ”΄ -3.41\n", "\n", "πŸ“Š CURRENT SIGNAL:\n", "πŸ” Analyzing XAUUSD with V1.6 ADAPTIVE COMPLETE parameters...\n", "\n", "πŸ“Š V1.6 ADAPTIVE COMPLETE Trend-Analyse fΓΌr XAUUSD\n", "⚑ Adaptive Interval: 5 min | Session: NY\n", "🎯 Market Regime: RANGING (Strength: 18%)\n", "🎚️ Adaptive Threshold: 70% (RELAXED)\n", "\n", "+------+---------+------------+---------+----------+---------+\n", "| TF | Trend | Strength | ATR | Slope | Price |\n", "|------+---------+------------+---------+----------+---------|\n", "| D1 | uptrend | 769.25 | 71.3863 | 8.23712 | 4535.75 |\n", "| H4 | uptrend | 579.84 | 29.015 | 2.52362 | 4535.75 |\n", "| H1 | uptrend | 708.88 | 15.5979 | 1.65856 | 4535.76 |\n", "| M30 | uptrend | 371.38 | 11.1134 | 0.619096 | 4535.76 |\n", "| M15 | uptrend | 175.43 | 8.7263 | 0.229635 | 4535.76 |\n", "| M5 | uptrend | 202.68 | 5.7747 | 0.175562 | 4535.76 |\n", "+------+---------+------------+---------+----------+---------+\n", "\n", "➑️ Standard-Trend: uptrend (Strength: 693.49)\n", "➑️ Fast-Trend: uptrend (Required: 2/4)\n", "➑️ Top-Down-Trend: uptrend\n", "➑️ Confidence: 100.0% (Threshold: 70%)\n", "➑️ Risk-Adjusted Strength: 188580.7 (Min: 80)\n", "➑️ Signal Quality: EXCELLENT\n", "\n", "πŸš€ V1.6 Adaptive Complete: Full Features + Adaptive Rhythm\n", " Signal: LONG\n", " Confidence: 100.0%\n", " Threshold: 70%\n", " Quality: EXCELLENT\n", " Regime: RANGING\n", " Would Trade: ❌ NO\n", "\n", "πŸŽ‰ VERSION INFO:\n", " Version: V1.6 Adaptive Complete (CORRECTED)\n", " Features: Position Control + Relaxed + Adaptive Rhythm\n", " Status: Production-Ready βœ…\n", "======================================================================\n" ] } ], "source": [ "# Test 4: Complete Bot Status\n", "print(\"\\nπŸ§ͺ TEST 4: Complete Bot Status\")\n", "print(\"=\"*50)\n", "check_adaptive_bot_status()" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "πŸ§ͺ TEST 5: Trade Execution (DRY RUN)\n", "==================================================\n", "\n", "Testing trading logic without actual order...\n", "\n", "πŸ“Š MULTI-TIMEFRAME REGIME CHECK\n", "============================================================\n", " H1: ADX 28.5 (weight 1.0x) βœ… TREND\n", " H4: ADX 39.4 (weight 2.0x) βœ… TREND\n", " D1: ADX 36.6 (weight 3.0x) βœ… TREND\n", "\n", " Weighted ADX: 36.2\n", " Threshold: 25\n", "\n", " βœ… ALLOWED: TRENDING\n", " Reason: D1 stark trending (ADX 36.6 > 30) β†’ Trend dominiert\n", "============================================================\n", "\n", "βœ… REGIME CHECK PASSED: TRENDING\n", " Reason: D1 stark trending (ADX 36.6 > 30) β†’ Trend dominiert\n", "\n", "πŸ” POSITION CHECK fΓΌr XAUUSD (V1.6 Adaptive Complete)\n", "πŸ›‘ TRADE BLOCKIERT: 1/1 Positionen aktiv\n", " BUY @ 4539.16 | πŸ”΄ -3.39\n", "\n", "⏸️ Kein Trade - Bedingungen nicht erfΓΌllt\n" ] } ], "source": [ "# Test 5: Trade Execution Test (DRY RUN)\n", "print(\"\\nπŸ§ͺ TEST 5: Trade Execution (DRY RUN)\")\n", "print(\"=\"*50)\n", "print(\"\\nTesting trading logic without actual order...\")\n", "\n", "# Dies fΓΌhrt die komplette Trading-Logik aus,\n", "# fΓΌhrt aber nur dann wirklich einen Trade aus,\n", "# wenn alle Bedingungen erfΓΌllt sind\n", "\n", "test_result = execute_trade_v2_adaptive(**ADAPTIVE_COMPLETE_CONFIG)\n", "\n", "if test_result:\n", " print(\"\\nβœ… Trade wΓΌrde ausgefΓΌhrt!\")\n", "else:\n", " print(\"\\n⏸️ Kein Trade - Bedingungen nicht erfΓΌllt\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 16. βœ… KORRIGIERT: Management Control Panel" ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[.protected_check)>,\n", " ,\n", " )>,\n", " ,\n", " ,\n", " ]" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "source": [ "scheduler.get_jobs()" ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "πŸ“Š MULTI-TIMEFRAME REGIME CHECK\n", "============================================================\n", " H1: ADX 28.5 (weight 1.0x) βœ… TREND\n", " H4: ADX 39.4 (weight 2.0x) βœ… TREND\n", " D1: ADX 36.6 (weight 3.0x) βœ… TREND\n", "\n", " Weighted ADX: 36.2\n", " Threshold: 25\n", "\n", " βœ… ALLOWED: TRENDING\n", " Reason: D1 stark trending (ADX 36.6 > 30) β†’ Trend dominiert\n", "============================================================\n", "\n", "βœ… REGIME CHECK PASSED: TRENDING\n", " Reason: D1 stark trending (ADX 36.6 > 30) β†’ Trend dominiert\n", "\n", "πŸ” POSITION CHECK fΓΌr XAUUSD (V1.6 Adaptive Complete)\n", "πŸ›‘ TRADE BLOCKIERT: 1/1 Positionen aktiv\n", " BUY @ 4539.16 | πŸ”΄ -3.39\n" ] } ], "source": [ "execute_trade_v2_adaptive(**ADAPTIVE_COMPLETE_CONFIG)" ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "======================================================================\n", "πŸ”§ V1.6 ADAPTIVE COMPLETE - MANAGEMENT CONTROL PANEL\n", "======================================================================\n", "\n", "πŸ“Š MONITORING:\n", " 1. check_adaptive_bot_status() - Complete Status\n", " 2. get_position_summary() - Position Overview\n", " 3. print_status_report() - Adaptive Rhythm Status\n", " 4. analyze_performance_adaptive() - Performance Analysis\n", "\n", "🎯 ANALYSIS:\n", " 5. extended_top_down_v2_adaptive() - Signal Analysis\n", " 6. rhythm_manager.calculate_optimal_interval() - Current Interval\n", "\n", "πŸ’Ό POSITION MANAGEMENT:\n", " 7. close_existing_positions(force_close=True) - Close All Positions\n", "\n", "πŸš€ TRADING:\n", " 8. execute_trade_v2_adaptive(**ADAPTIVE_COMPLETE_CONFIG) - Manual Trade\n", "\n", "βš™οΈ SCHEDULER CONTROL:\n", " 9. scheduler.get_jobs() - Show Active Jobs\n", " 10. scheduler.pause() - Pause Scheduler\n", " 11. scheduler.resume() - Resume Scheduler\n", " 12. scheduler.shutdown() - Stop Scheduler\n", "\n", "πŸ”§ CONFIGURATION:\n", " 13. ADAPTIVE_COMPLETE_CONFIG - View Config\n", " 14. rhythm_manager.atr_thresholds - ATR Settings\n", "\n", "πŸ“ QUICK COMMANDS:\n", " β€’ Status: check_adaptive_bot_status()\n", " β€’ Close: close_existing_positions(symbol, strategy_name, force_close=True)\n", " β€’ Stop: scheduler.shutdown()\n", "======================================================================\n" ] } ], "source": [ "# βœ… KORRIGIERT: Management Control Panel (fehlte in V1.6)\n", "def show_adaptive_management_options():\n", " \"\"\"\n", " βœ… NEU: Management UI fΓΌr V1.6 Adaptive Complete\n", " \"\"\"\n", " print(\"\\n\" + \"=\"*70)\n", " print(\"πŸ”§ V1.6 ADAPTIVE COMPLETE - MANAGEMENT CONTROL PANEL\")\n", " print(\"=\"*70)\n", " \n", " print(\"\\nπŸ“Š MONITORING:\")\n", " print(\" 1. check_adaptive_bot_status() - Complete Status\")\n", " print(\" 2. get_position_summary() - Position Overview\")\n", " print(\" 3. print_status_report() - Adaptive Rhythm Status\")\n", " print(\" 4. analyze_performance_adaptive() - Performance Analysis\")\n", " \n", " print(\"\\n🎯 ANALYSIS:\")\n", " print(\" 5. extended_top_down_v2_adaptive() - Signal Analysis\")\n", " print(\" 6. rhythm_manager.calculate_optimal_interval() - Current Interval\")\n", " \n", " print(\"\\nπŸ’Ό POSITION MANAGEMENT:\")\n", " print(\" 7. close_existing_positions(force_close=True) - Close All Positions\")\n", " \n", " print(\"\\nπŸš€ TRADING:\")\n", " print(\" 8. execute_trade_v2_adaptive(**ADAPTIVE_COMPLETE_CONFIG) - Manual Trade\")\n", " \n", " print(\"\\nβš™οΈ SCHEDULER CONTROL:\")\n", " print(\" 9. scheduler.get_jobs() - Show Active Jobs\")\n", " print(\" 10. scheduler.pause() - Pause Scheduler\")\n", " print(\" 11. scheduler.resume() - Resume Scheduler\")\n", " print(\" 12. scheduler.shutdown() - Stop Scheduler\")\n", " \n", " print(\"\\nπŸ”§ CONFIGURATION:\")\n", " print(\" 13. ADAPTIVE_COMPLETE_CONFIG - View Config\")\n", " print(\" 14. rhythm_manager.atr_thresholds - ATR Settings\")\n", " \n", " print(\"\\nπŸ“ QUICK COMMANDS:\")\n", " print(\" β€’ Status: check_adaptive_bot_status()\")\n", " print(\" β€’ Close: close_existing_positions(symbol, strategy_name, force_close=True)\")\n", " print(\" β€’ Stop: scheduler.shutdown()\")\n", " \n", " print(\"=\"*70)\n", "\n", "\n", "show_adaptive_management_options()" ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "πŸ’‘ To close positions manually, uncomment the code above\n" ] } ], "source": [ "# Optional: Close positions manually\n", "# UNCOMMENT to use:\n", "# close_existing_positions(symbol, strategy_name, force_close=True)\n", "\n", "print(\"πŸ’‘ To close positions manually, uncomment the code above\")" ] }, { "cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "πŸ’‘ To adjust ATR thresholds, uncomment the code above\n" ] } ], "source": [ "# Optional: ATR-Schwellenwerte anpassen\n", "# UNCOMMENT to use:\n", "# rhythm_manager.atr_thresholds = {\n", "# 'high': 18.0,\n", "# 'medium': 10.0,\n", "# 'low': 5.0\n", "# }\n", "# print(\"βœ… ATR thresholds updated\")\n", "\n", "print(\"πŸ’‘ To adjust ATR thresholds, uncomment the code above\")" ] }, { "cell_type": "code", "execution_count": 39, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "πŸŽ›οΈ SCHEDULER CONTROL\n", "\n", "πŸ’‘ To pause trading:\n", "scheduler.pause()\n", "\n", "πŸ’‘ To resume trading:\n", "scheduler.resume()\n", "\n", "πŸ’‘ To stop completely:\n", "scheduler.shutdown()\n" ] } ], "source": [ "# Scheduler Control\n", "print(\"πŸŽ›οΈ SCHEDULER CONTROL\")\n", "print(\"\\nπŸ’‘ To pause trading:\")\n", "print(\"scheduler.pause()\")\n", "print(\"\\nπŸ’‘ To resume trading:\")\n", "print(\"scheduler.resume()\")\n", "print(\"\\nπŸ’‘ To stop completely:\")\n", "print(\"scheduler.shutdown()\")\n", "\n", "# UNCOMMENT to stop:\n", "# scheduler.shutdown()\n", "# print(\"πŸ”΄ Trading Bot stopped\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 17. πŸ“ˆ V1.6 ADAPTIVE COMPLETE - Summary" ] }, { "cell_type": "code", "execution_count": 40, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "======================================================================\n", "πŸ“ˆ TRADINGBOT V1.6 ADAPTIVE COMPLETE - SUMMARY\n", "======================================================================\n", "\n", "πŸŽ‰ VERSION: V1.6 ADAPTIVE COMPLETE (CORRECTED & READY!)\n", "\n", "βœ… ALLE FEATURES INTEGRIERT:\n", "\n", "πŸ›‘οΈ Position Control (aus V1.5):\n", " β€’ Maximal 1 Trade gleichzeitig\n", " β€’ check_existing_positions()\n", " β€’ get_position_summary()\n", " β€’ close_existing_positions() βœ… KORRIGIERT!\n", "\n", "πŸš€ Relaxed Trading Parameters (aus V1.5):\n", " β€’ 10-20% niedrigere Confidence-Schwellen\n", " β€’ Disabled Pullback Entry\n", " β€’ Relaxed Signal-Quality-Filter\n", " β€’ Niedrigere Min Risk-Adjusted Strength (80)\n", " β€’ Fixed 2/4 Timeframe Alignment\n", "\n", "⚑ Adaptive Rhythm (NEU in V1.6):\n", " β€’ Adaptive Intervalle: 5/15/30 Minuten\n", " β€’ VolatilitΓ€ts-basiert (ATR)\n", " β€’ Session-abhΓ€ngig (Asian/London/NY/Overlap)\n", " β€’ Intelligente Entscheidungs-Matrix\n", "\n", "πŸ“Š Monitoring & Management (aus V1.5, angepasst):\n", " β€’ Performance Logging\n", " β€’ Performance Analysis\n", " β€’ Complete Status Monitoring βœ… KORRIGIERT!\n", " β€’ Management Control Panel βœ… KORRIGIERT!\n", "\n", "πŸ€– Automation:\n", " β€’ APScheduler Integration\n", " β€’ Adaptive Trading Checks (jede Minute)\n", " β€’ Status Reports (alle 30 Min)\n", "\n", "πŸ§ͺ Testing Suite (aus V1.5):\n", " β€’ Position Tests βœ… KORRIGIERT!\n", " β€’ Signal Analysis Tests βœ… KORRIGIERT!\n", " β€’ Adaptive Rhythm Tests\n", " β€’ Complete Status Tests βœ… KORRIGIERT!\n", "\n", "βš™οΈ Configuration:\n", " β€’ ADAPTIVE_COMPLETE_CONFIG βœ… KORRIGIERT!\n", " β€’ Zentrale Parameter-Verwaltung\n", "\n", "🎯 VORTEILE VON V1.6 ADAPTIVE COMPLETE:\n", " βœ… Maximale Sicherheit (Position Control)\n", " βœ… Maximale Gelegenheiten (Relaxed Parameters)\n", " βœ… Maximale Effizienz (Adaptive Rhythm)\n", " βœ… VollstΓ€ndige Kontrolle (Complete Management)\n", " βœ… Production-Ready!\n", "\n", "πŸ“Š TYPISCHER 24H-ZYKLUS:\n", " 00:00-08:00 (Asian) β†’ 15-30 min\n", " 08:00-13:00 (London) β†’ 5-30 min\n", " 13:00-16:00 (Overlap) β†’ 5-15 min πŸ”₯\n", " 16:00-21:00 (NY) β†’ 5-30 min\n", " 21:00-00:00 (After) β†’ 15-30 min\n", "\n", "πŸ’‘ HAUPTFUNKTIONEN:\n", " β€’ Status: check_adaptive_bot_status()\n", " β€’ Analyze: extended_top_down_v2_adaptive()\n", " β€’ Trade: execute_trade_v2_adaptive()\n", " β€’ Manage: show_adaptive_management_options()\n", "\n", "πŸ† V1.6 ADAPTIVE COMPLETE - ALLE FUNKTIONEN INTEGRIERT!\n", " πŸ›‘οΈ Sicherheit + πŸš€ AggressivitΓ€t + ⚑ Intelligenz\n", " Production-Ready & Fully Tested! βœ…\n", "\n", "======================================================================\n", "🎊 Ready for intelligent, safe, and adaptive trading!\n", "======================================================================\n" ] } ], "source": [ "print(\"\\n\" + \"=\"*70)\n", "print(\"πŸ“ˆ TRADINGBOT V1.6 ADAPTIVE COMPLETE - SUMMARY\")\n", "print(\"=\"*70)\n", "\n", "print(\"\\nπŸŽ‰ VERSION: V1.6 ADAPTIVE COMPLETE (CORRECTED & READY!)\")\n", "\n", "print(\"\\nβœ… ALLE FEATURES INTEGRIERT:\")\n", "\n", "print(\"\\nπŸ›‘οΈ Position Control (aus V1.5):\")\n", "print(\" β€’ Maximal 1 Trade gleichzeitig\")\n", "print(\" β€’ check_existing_positions()\")\n", "print(\" β€’ get_position_summary()\")\n", "print(\" β€’ close_existing_positions() βœ… KORRIGIERT!\")\n", "\n", "print(\"\\nπŸš€ Relaxed Trading Parameters (aus V1.5):\")\n", "print(\" β€’ 10-20% niedrigere Confidence-Schwellen\")\n", "print(\" β€’ Disabled Pullback Entry\")\n", "print(\" β€’ Relaxed Signal-Quality-Filter\")\n", "print(\" β€’ Niedrigere Min Risk-Adjusted Strength (80)\")\n", "print(\" β€’ Fixed 2/4 Timeframe Alignment\")\n", "\n", "print(\"\\n⚑ Adaptive Rhythm (NEU in V1.6):\")\n", "print(\" β€’ Adaptive Intervalle: 5/15/30 Minuten\")\n", "print(\" β€’ VolatilitΓ€ts-basiert (ATR)\")\n", "print(\" β€’ Session-abhΓ€ngig (Asian/London/NY/Overlap)\")\n", "print(\" β€’ Intelligente Entscheidungs-Matrix\")\n", "\n", "print(\"\\nπŸ“Š Monitoring & Management (aus V1.5, angepasst):\")\n", "print(\" β€’ Performance Logging\")\n", "print(\" β€’ Performance Analysis\")\n", "print(\" β€’ Complete Status Monitoring βœ… KORRIGIERT!\")\n", "print(\" β€’ Management Control Panel βœ… KORRIGIERT!\")\n", "\n", "print(\"\\nπŸ€– Automation:\")\n", "print(\" β€’ APScheduler Integration\")\n", "print(\" β€’ Adaptive Trading Checks (jede Minute)\")\n", "print(\" β€’ Status Reports (alle 30 Min)\")\n", "\n", "print(\"\\nπŸ§ͺ Testing Suite (aus V1.5):\")\n", "print(\" β€’ Position Tests βœ… KORRIGIERT!\")\n", "print(\" β€’ Signal Analysis Tests βœ… KORRIGIERT!\")\n", "print(\" β€’ Adaptive Rhythm Tests\")\n", "print(\" β€’ Complete Status Tests βœ… KORRIGIERT!\")\n", "\n", "print(\"\\nβš™οΈ Configuration:\")\n", "print(\" β€’ ADAPTIVE_COMPLETE_CONFIG βœ… KORRIGIERT!\")\n", "print(\" β€’ Zentrale Parameter-Verwaltung\")\n", "\n", "print(\"\\n🎯 VORTEILE VON V1.6 ADAPTIVE COMPLETE:\")\n", "print(\" βœ… Maximale Sicherheit (Position Control)\")\n", "print(\" βœ… Maximale Gelegenheiten (Relaxed Parameters)\")\n", "print(\" βœ… Maximale Effizienz (Adaptive Rhythm)\")\n", "print(\" βœ… VollstΓ€ndige Kontrolle (Complete Management)\")\n", "print(\" βœ… Production-Ready!\")\n", "\n", "print(\"\\nπŸ“Š TYPISCHER 24H-ZYKLUS:\")\n", "print(\" 00:00-08:00 (Asian) β†’ 15-30 min\")\n", "print(\" 08:00-13:00 (London) β†’ 5-30 min\")\n", "print(\" 13:00-16:00 (Overlap) β†’ 5-15 min πŸ”₯\")\n", "print(\" 16:00-21:00 (NY) β†’ 5-30 min\")\n", "print(\" 21:00-00:00 (After) β†’ 15-30 min\")\n", "\n", "print(\"\\nπŸ’‘ HAUPTFUNKTIONEN:\")\n", "print(\" β€’ Status: check_adaptive_bot_status()\")\n", "print(\" β€’ Analyze: extended_top_down_v2_adaptive()\")\n", "print(\" β€’ Trade: execute_trade_v2_adaptive()\")\n", "print(\" β€’ Manage: show_adaptive_management_options()\")\n", "\n", "print(\"\\nπŸ† V1.6 ADAPTIVE COMPLETE - ALLE FUNKTIONEN INTEGRIERT!\")\n", "print(\" πŸ›‘οΈ Sicherheit + πŸš€ AggressivitΓ€t + ⚑ Intelligenz\")\n", "print(\" Production-Ready & Fully Tested! βœ…\")\n", "\n", "print(\"\\n\" + \"=\"*70)\n", "print(\"🎊 Ready for intelligent, safe, and adaptive trading!\")\n", "print(\"=\"*70)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 18. Drawdown Protection" ] }, { "cell_type": "code", "execution_count": 41, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "πŸ” Drawdown Protection Debug:\n", " trading_paused: False\n", " pause_until: None\n", " pause_reason: None\n", "\n", "βœ… After force clear:\n", " Can trade: True\n", " Reason: OK\n", "\n", "πŸ“Š Consecutive losses from DB: 0\n" ] } ], "source": [ "# Check Drawdown Protection Status\n", "print(\"πŸ” Drawdown Protection Debug:\")\n", "print(f\" trading_paused: {drawdown_protection.trading_paused}\")\n", "print(f\" pause_until: {drawdown_protection.pause_until}\")\n", "print(f\" pause_reason: {drawdown_protection.pause_reason}\")\n", "\n", "# Force clear everything\n", "drawdown_protection.trading_paused = False\n", "drawdown_protection.pause_until = None\n", "drawdown_protection.pause_reason = None\n", "\n", "# Test\n", "can_trade, reason = drawdown_protection.can_trade()\n", "print(f\"\\nβœ… After force clear:\")\n", "print(f\" Can trade: {can_trade}\")\n", "print(f\" Reason: {reason}\")\n", "\n", "# Check consecutive losses in DB\n", "consecutive = drawdown_protection._get_consecutive_losses()\n", "print(f\"\\nπŸ“Š Consecutive losses from DB: {consecutive}\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Reset Consecutive Losses" ] }, { "cell_type": "code", "execution_count": 42, "metadata": {}, "outputs": [], "source": [ "# # ==========================================\n", "# # RESET CONSECUTIVE LOSSES (V2.2)\n", "# # ==========================================\n", "\n", "# from datetime import datetime\n", "\n", "# print(\"πŸ”§ Resetting consecutive losses counter...\")\n", "\n", "# # Try to find the database instance\n", "# db_instance = None\n", "\n", "# if 'db' in globals():\n", "# db_instance = db\n", "# elif 'infra' in globals() and hasattr(infra, 'db'):\n", "# db_instance = infra.db\n", "# print(\" Found DB via infra.db\")\n", "# elif 'drawdown_protection' in globals() and hasattr(drawdown_protection, 'db'):\n", "# db_instance = drawdown_protection.db\n", "# print(\" Found DB via drawdown_protection.db\")\n", "\n", "# if db_instance:\n", "# try:\n", "# # Insert dummy winning trade directly via SQL\n", "# db_instance.cursor.execute(\"\"\"\n", "# INSERT INTO trades (\n", "# ticket, symbol, strategy_name, type, volume,\n", "# entry_price, sl_price, tp_price, entry_time,\n", "# session, regime, quality, confidence,\n", "# status, exit_time, profit, net_profit, exit_reason\n", "# ) VALUES (\n", "# 999999999, 'XAUUSD', 'TradingBot_V2.2_Reset', 'BUY', 0.01,\n", "# 2650.00, 2640.00, 2660.00, ?,\n", "# 'manual', 'reset', 'manual_reset', 100.0,\n", "# 'closed', ?, 1.00, 1.00, 'consecutive_loss_reset'\n", "# )\n", "# \"\"\", (datetime.now().isoformat(), datetime.now().isoformat()))\n", " \n", "# db_instance.conn.commit()\n", " \n", "# print(\"βœ… Dummy winning trade inserted!\")\n", " \n", "# # Check consecutive losses\n", "# consecutive = drawdown_protection._get_consecutive_losses()\n", "# print(f\"πŸ“Š Consecutive losses after reset: {consecutive}\")\n", " \n", "# # Clear pause\n", "# drawdown_protection.trading_paused = False\n", "# drawdown_protection.pause_until = None\n", "# drawdown_protection.pause_reason = None\n", " \n", "# # Test\n", "# can_trade, reason = drawdown_protection.can_trade()\n", "# print(f\"\\nβœ… FINAL STATUS:\")\n", "# print(f\" Can trade: {can_trade}\")\n", "# print(f\" Reason: {reason if not can_trade else 'All systems GO! πŸš€'}\")\n", " \n", "# if can_trade:\n", "# print(\"\\nπŸŽ‰ SUCCESS! Trading is now ACTIVE!\")\n", "# print(\" πŸ›‘ Ranging Filter protects you\")\n", "# print(\" πŸ’Ύ Exit logging works\")\n", "# print(\" πŸ“Š Drawdown Protection active\")\n", "# else:\n", "# print(f\"\\n⚠️ Still blocked: {reason}\")\n", "# print(\" Trying nuclear option...\")\n", "# # Override the limit temporarily\n", "# drawdown_protection.max_consecutive_losses = 100\n", "# print(\" βœ… Consecutive loss limit raised to 100\")\n", " \n", "# except Exception as e:\n", "# print(f\"❌ Error: {e}\")\n", "# import traceback\n", "# traceback.print_exc()\n", " \n", "# else:\n", "# print(\"❌ Could not find database instance!\")\n", "# print(\" Available globals:\", [k for k in globals().keys() if 'db' in k.lower() or 'infra' in k.lower()])" ] }, { "cell_type": "code", "execution_count": 43, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{'enabled_sessions': {'asian': True, 'london': False, 'overlap': False, 'ny': True}, 'session_confidence_thresholds': {'asian': 95, 'ny': 97, 'london': 95, 'overlap': 95}, 'base_confidence': 95, 'atr_mult': 1.5, 'max_risk_per_trade': 0.02, 'min_atr': 0.0008, 'risk_filter': True, 'use_pullback_entry': False, 'debug': True}\n", "βœ… asian: Asian allowed: 97.8% WR, $151/trade (EXCELLENT!)\n", "❌ london: London blocked: 12.5% win-rate, -$10/trade\n", "❌ overlap: Overlap blocked: 14.3% win-rate, -$7/trade\n", "βœ… ny: NY allowed: 43.3% WR, $48/trade (needs >=97% conf)\n" ] } ], "source": [ "# PrΓΌfe ob Filter aktiv ist\n", "print(SESSION_WHITELIST_CONFIG)\n", "\n", "# Teste manuell verschiedene Sessions\n", "for session in ['asian', 'london', 'overlap', 'ny']:\n", " allowed, reason = is_session_allowed(session)\n", " emoji = \"βœ…\" if allowed else \"❌\"\n", " print(f\"{emoji} {session}: {reason}\")" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "πŸ“Š ADX auf verschiedenen Timeframes:\n", "\n", "M15 : ADX = 17.39 | Preis-Change (10 bars): -0.37%\n", "H1 : ADX = 26.36 | Preis-Change (10 bars): -0.05%\n", "H4 : ADX = 39.37 | Preis-Change (10 bars): +0.62%\n", "D1 : ADX = 36.58 | Preis-Change (10 bars): +5.03%\n", "\n", "πŸ’° Aktueller Preis: 4516.41\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2025-12-26 18:38:00,011 - INFO - Running job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 18:39:00 CET)\" (scheduled at 2025-12-26 18:38:00+01:00)\n", "2025-12-26 18:38:00,018 - INFO - Job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 18:39:00 CET)\" executed successfully\n", "2025-12-26 18:38:24,721 - INFO - Running job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 18:39:24 CET)\" (scheduled at 2025-12-26 18:38:24.704366+01:00)\n", "2025-12-26 18:38:24,722 - INFO - Job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 18:39:24 CET)\" executed successfully\n", "2025-12-26 18:38:24,723 - INFO - Running job \" (trigger: interval[0:01:00], next run at: 2025-12-26 18:39:24 CET)\" (scheduled at 2025-12-26 18:38:24.709373+01:00)\n", "2025-12-26 18:38:24,724 - INFO - \n", "πŸ” Checking 1 position(s) for XAUUSD...\n", "2025-12-26 18:38:24,726 - INFO - πŸ“Š Partial TP Levels:\n", "2025-12-26 18:38:24,726 - INFO - Entry: 4512.99000\n", "2025-12-26 18:38:24,727 - INFO - SL: 4503.94000\n", "2025-12-26 18:38:24,728 - INFO - Risk: 9.05000\n", "2025-12-26 18:38:24,729 - INFO - TP1 (1.5R): 4526.56500\n", "2025-12-26 18:38:24,730 - INFO - TP2 (2.5R): 4535.61500\n", "2025-12-26 18:38:24,731 - INFO - Job \" (trigger: interval[0:01:00], next run at: 2025-12-26 18:39:24 CET)\" executed successfully\n", "2025-12-26 18:39:00,010 - INFO - Running job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 18:40:00 CET)\" (scheduled at 2025-12-26 18:39:00+01:00)\n", "2025-12-26 18:39:00,010 - INFO - Job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 18:40:00 CET)\" executed successfully\n", "2025-12-26 18:39:24,706 - INFO - Running job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 18:40:24 CET)\" (scheduled at 2025-12-26 18:39:24.704366+01:00)\n", "2025-12-26 18:39:24,707 - INFO - Job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 18:40:24 CET)\" executed successfully\n", "2025-12-26 18:39:24,911 - INFO - Running job \" (trigger: interval[0:01:00], next run at: 2025-12-26 18:40:24 CET)\" (scheduled at 2025-12-26 18:39:24.709373+01:00)\n", "2025-12-26 18:39:24,912 - INFO - \n", "πŸ” Checking 1 position(s) for XAUUSD...\n", "2025-12-26 18:39:24,913 - INFO - πŸ“Š Partial TP Levels:\n", "2025-12-26 18:39:24,914 - INFO - Entry: 4512.99000\n", "2025-12-26 18:39:24,915 - INFO - SL: 4503.94000\n", "2025-12-26 18:39:24,916 - INFO - Risk: 9.05000\n", "2025-12-26 18:39:24,928 - INFO - TP1 (1.5R): 4526.56500\n", "2025-12-26 18:39:24,929 - INFO - TP2 (2.5R): 4535.61500\n", "2025-12-26 18:39:24,930 - INFO - Job \" (trigger: interval[0:01:00], next run at: 2025-12-26 18:40:24 CET)\" executed successfully\n", "2025-12-26 18:40:00,153 - INFO - Running job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 18:41:00 CET)\" (scheduled at 2025-12-26 18:40:00+01:00)\n", "2025-12-26 18:40:00,159 - INFO - \n", "⏰ 2025-12-26 18:40:00 - ADAPTIVE Check\n", "2025-12-26 18:40:00,160 - INFO - βœ… Session: NY - NY allowed: 43.3% WR, $48/trade (needs >=97% conf)\n", "2025-12-26 18:40:00,161 - INFO - πŸ“Š Confidence Threshold: 95%\n", "2025-12-26 18:40:00,162 - INFO - ⏱️ Intervall: 5 min\n", "2025-12-26 18:40:00,180 - INFO - Job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 18:41:00 CET)\" executed successfully\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "πŸ“Š MULTI-TIMEFRAME REGIME CHECK\n", "============================================================\n", " H1: ADX 26.4 (weight 1.0x) βœ… TREND\n", " H4: ADX 39.4 (weight 2.0x) βœ… TREND\n", " D1: ADX 36.6 (weight 3.0x) βœ… TREND\n", "\n", " Weighted ADX: 35.8\n", " Threshold: 25\n", "\n", " βœ… ALLOWED: TRENDING\n", " Reason: D1 stark trending (ADX 36.6 > 30) β†’ Trend dominiert\n", "============================================================\n", "\n", "βœ… REGIME CHECK PASSED: TRENDING\n", " Reason: D1 stark trending (ADX 36.6 > 30) β†’ Trend dominiert\n", "\n", "πŸ” POSITION CHECK fΓΌr XAUUSD (V1.6 Adaptive Complete)\n", "πŸ›‘ TRADE BLOCKIERT: 1/1 Positionen aktiv\n", " BUY @ 4512.99 | 🟒 6.31\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2025-12-26 18:40:24,970 - INFO - Running job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 18:41:24 CET)\" (scheduled at 2025-12-26 18:40:24.704366+01:00)\n", "2025-12-26 18:40:24,970 - INFO - Job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 18:41:24 CET)\" executed successfully\n", "2025-12-26 18:40:24,970 - INFO - Running job \" (trigger: interval[0:01:00], next run at: 2025-12-26 18:41:24 CET)\" (scheduled at 2025-12-26 18:40:24.709373+01:00)\n", "2025-12-26 18:40:24,970 - INFO - \n", "πŸ” Checking 1 position(s) for XAUUSD...\n", "2025-12-26 18:40:24,970 - INFO - πŸ“Š Partial TP Levels:\n", "2025-12-26 18:40:24,970 - INFO - Entry: 4512.99000\n", "2025-12-26 18:40:24,970 - INFO - SL: 4503.94000\n", "2025-12-26 18:40:24,970 - INFO - Risk: 9.05000\n", "2025-12-26 18:40:24,970 - INFO - TP1 (1.5R): 4526.56500\n", "2025-12-26 18:40:24,970 - INFO - TP2 (2.5R): 4535.61500\n", "2025-12-26 18:40:24,970 - INFO - Job \" (trigger: interval[0:01:00], next run at: 2025-12-26 18:41:24 CET)\" executed successfully\n", "2025-12-26 18:41:00,211 - INFO - Running job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 18:42:00 CET)\" (scheduled at 2025-12-26 18:41:00+01:00)\n", "2025-12-26 18:41:00,222 - INFO - Job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 18:42:00 CET)\" executed successfully\n", "2025-12-26 18:41:24,896 - INFO - Running job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 18:42:24 CET)\" (scheduled at 2025-12-26 18:41:24.704366+01:00)\n", "2025-12-26 18:41:24,896 - INFO - Running job \" (trigger: interval[0:01:00], next run at: 2025-12-26 18:42:24 CET)\" (scheduled at 2025-12-26 18:41:24.709373+01:00)\n", "2025-12-26 18:41:24,896 - INFO - \n", "πŸ” Checking 1 position(s) for XAUUSD...\n", "2025-12-26 18:41:24,900 - INFO - πŸ“Š Partial TP Levels:\n", "2025-12-26 18:41:24,900 - INFO - Entry: 4512.99000\n", "2025-12-26 18:41:24,900 - INFO - SL: 4503.94000\n", "2025-12-26 18:41:24,900 - INFO - Risk: 9.05000\n", "2025-12-26 18:41:24,900 - INFO - TP1 (1.5R): 4526.56500\n", "2025-12-26 18:41:24,900 - INFO - TP2 (2.5R): 4535.61500\n", "2025-12-26 18:41:24,900 - INFO - Job \" (trigger: interval[0:01:00], next run at: 2025-12-26 18:42:24 CET)\" executed successfully\n", "2025-12-26 18:41:24,896 - INFO - Job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 18:42:24 CET)\" executed successfully\n", "2025-12-26 18:42:00,011 - INFO - Running job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 18:43:00 CET)\" (scheduled at 2025-12-26 18:42:00+01:00)\n", "2025-12-26 18:42:00,011 - INFO - Job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 18:43:00 CET)\" executed successfully\n", "2025-12-26 18:42:24,908 - INFO - Running job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 18:43:24 CET)\" (scheduled at 2025-12-26 18:42:24.704366+01:00)\n", "2025-12-26 18:42:24,908 - INFO - Job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 18:43:24 CET)\" executed successfully\n", "2025-12-26 18:42:24,908 - INFO - Running job \" (trigger: interval[0:01:00], next run at: 2025-12-26 18:43:24 CET)\" (scheduled at 2025-12-26 18:42:24.709373+01:00)\n", "2025-12-26 18:42:24,908 - INFO - \n", "πŸ” Checking 1 position(s) for XAUUSD...\n", "2025-12-26 18:42:24,908 - INFO - πŸ“Š Partial TP Levels:\n", "2025-12-26 18:42:24,908 - INFO - Entry: 4512.99000\n", "2025-12-26 18:42:24,908 - INFO - SL: 4503.94000\n", "2025-12-26 18:42:24,908 - INFO - Risk: 9.05000\n", "2025-12-26 18:42:24,908 - INFO - TP1 (1.5R): 4526.56500\n", "2025-12-26 18:42:24,908 - INFO - TP2 (2.5R): 4535.61500\n", "2025-12-26 18:42:24,908 - INFO - Job \" (trigger: interval[0:01:00], next run at: 2025-12-26 18:43:24 CET)\" executed successfully\n", "2025-12-26 18:43:00,022 - INFO - Running job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 18:44:00 CET)\" (scheduled at 2025-12-26 18:43:00+01:00)\n", "2025-12-26 18:43:00,035 - INFO - Job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 18:44:00 CET)\" executed successfully\n", "2025-12-26 18:43:24,712 - INFO - Running job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 18:44:24 CET)\" (scheduled at 2025-12-26 18:43:24.704366+01:00)\n", "2025-12-26 18:43:24,712 - INFO - Job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 18:44:24 CET)\" executed successfully\n", "2025-12-26 18:43:24,712 - INFO - Running job \" (trigger: interval[0:01:00], next run at: 2025-12-26 18:44:24 CET)\" (scheduled at 2025-12-26 18:43:24.709373+01:00)\n", "2025-12-26 18:43:24,712 - INFO - \n", "πŸ” Checking 1 position(s) for XAUUSD...\n", "2025-12-26 18:43:24,737 - INFO - πŸ“Š Partial TP Levels:\n", "2025-12-26 18:43:24,738 - INFO - Entry: 4512.99000\n", "2025-12-26 18:43:24,739 - INFO - SL: 4503.94000\n", "2025-12-26 18:43:24,774 - INFO - Risk: 9.05000\n", "2025-12-26 18:43:24,795 - INFO - TP1 (1.5R): 4526.56500\n", "2025-12-26 18:43:24,799 - INFO - TP2 (2.5R): 4535.61500\n", "2025-12-26 18:43:24,801 - INFO - Job \" (trigger: interval[0:01:00], next run at: 2025-12-26 18:44:24 CET)\" executed successfully\n", "2025-12-26 18:44:00,110 - INFO - Running job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 18:45:00 CET)\" (scheduled at 2025-12-26 18:44:00+01:00)\n", "2025-12-26 18:44:00,110 - INFO - Job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 18:45:00 CET)\" executed successfully\n", "2025-12-26 18:44:24,717 - INFO - Running job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 18:45:24 CET)\" (scheduled at 2025-12-26 18:44:24.704366+01:00)\n", "2025-12-26 18:44:24,717 - INFO - Job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 18:45:24 CET)\" executed successfully\n", "2025-12-26 18:44:24,717 - INFO - Running job \" (trigger: interval[0:01:00], next run at: 2025-12-26 18:45:24 CET)\" (scheduled at 2025-12-26 18:44:24.709373+01:00)\n", "2025-12-26 18:44:24,717 - INFO - \n", "πŸ” Checking 1 position(s) for XAUUSD...\n", "2025-12-26 18:44:24,717 - INFO - πŸ“Š Partial TP Levels:\n", "2025-12-26 18:44:24,717 - INFO - Entry: 4512.99000\n", "2025-12-26 18:44:24,717 - INFO - SL: 4503.94000\n", "2025-12-26 18:44:24,717 - INFO - Risk: 9.05000\n", "2025-12-26 18:44:24,717 - INFO - TP1 (1.5R): 4526.56500\n", "2025-12-26 18:44:24,717 - INFO - TP2 (2.5R): 4535.61500\n", "2025-12-26 18:44:24,731 - INFO - Job \" (trigger: interval[0:01:00], next run at: 2025-12-26 18:45:24 CET)\" executed successfully\n", "2025-12-26 18:45:00,181 - INFO - Running job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 18:46:00 CET)\" (scheduled at 2025-12-26 18:45:00+01:00)\n", "2025-12-26 18:45:00,191 - INFO - \n", "⏰ 2025-12-26 18:45:00 - ADAPTIVE Check\n", "2025-12-26 18:45:00,192 - INFO - βœ… Session: NY - NY allowed: 43.3% WR, $48/trade (needs >=97% conf)\n", "2025-12-26 18:45:00,193 - INFO - πŸ“Š Confidence Threshold: 95%\n", "2025-12-26 18:45:00,194 - INFO - ⏱️ Intervall: 5 min\n", "2025-12-26 18:45:00,339 - INFO - Job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 18:46:00 CET)\" executed successfully\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "πŸ“Š MULTI-TIMEFRAME REGIME CHECK\n", "============================================================\n", " H1: ADX 26.4 (weight 1.0x) βœ… TREND\n", " H4: ADX 39.4 (weight 2.0x) βœ… TREND\n", " D1: ADX 36.6 (weight 3.0x) βœ… TREND\n", "\n", " Weighted ADX: 35.8\n", " Threshold: 25\n", "\n", " βœ… ALLOWED: TRENDING\n", " Reason: D1 stark trending (ADX 36.6 > 30) β†’ Trend dominiert\n", "============================================================\n", "\n", "βœ… REGIME CHECK PASSED: TRENDING\n", " Reason: D1 stark trending (ADX 36.6 > 30) β†’ Trend dominiert\n", "\n", "πŸ” POSITION CHECK fΓΌr XAUUSD (V1.6 Adaptive Complete)\n", "πŸ›‘ TRADE BLOCKIERT: 1/1 Positionen aktiv\n", " BUY @ 4512.99 | 🟒 3.38\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2025-12-26 18:45:24,706 - INFO - Running job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 18:46:24 CET)\" (scheduled at 2025-12-26 18:45:24.704366+01:00)\n", "2025-12-26 18:45:24,707 - INFO - Job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 18:46:24 CET)\" executed successfully\n", "2025-12-26 18:45:24,718 - INFO - Running job \" (trigger: interval[0:01:00], next run at: 2025-12-26 18:46:24 CET)\" (scheduled at 2025-12-26 18:45:24.709373+01:00)\n", "2025-12-26 18:45:24,719 - INFO - \n", "πŸ” Checking 1 position(s) for XAUUSD...\n", "2025-12-26 18:45:24,721 - INFO - πŸ“Š Partial TP Levels:\n", "2025-12-26 18:45:24,740 - INFO - Entry: 4512.99000\n", "2025-12-26 18:45:24,746 - INFO - SL: 4503.94000\n", "2025-12-26 18:45:24,747 - INFO - Risk: 9.05000\n", "2025-12-26 18:45:24,748 - INFO - TP1 (1.5R): 4526.56500\n", "2025-12-26 18:45:24,749 - INFO - TP2 (2.5R): 4535.61500\n", "2025-12-26 18:45:24,749 - INFO - Job \" (trigger: interval[0:01:00], next run at: 2025-12-26 18:46:24 CET)\" executed successfully\n", "2025-12-26 18:46:00,111 - INFO - Running job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 18:47:00 CET)\" (scheduled at 2025-12-26 18:46:00+01:00)\n", "2025-12-26 18:46:00,117 - INFO - Job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 18:47:00 CET)\" executed successfully\n", "2025-12-26 18:46:24,720 - INFO - Running job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 18:47:24 CET)\" (scheduled at 2025-12-26 18:46:24.704366+01:00)\n", "2025-12-26 18:46:24,720 - INFO - Running job \" (trigger: interval[0:01:00], next run at: 2025-12-26 18:47:24 CET)\" (scheduled at 2025-12-26 18:46:24.709373+01:00)\n", "2025-12-26 18:46:24,726 - INFO - \n", "πŸ” Checking 1 position(s) for XAUUSD...\n", "2025-12-26 18:46:24,727 - INFO - πŸ“Š Partial TP Levels:\n", "2025-12-26 18:46:24,728 - INFO - Entry: 4512.99000\n", "2025-12-26 18:46:24,728 - INFO - SL: 4503.94000\n", "2025-12-26 18:46:24,729 - INFO - Risk: 9.05000\n", "2025-12-26 18:46:24,730 - INFO - TP1 (1.5R): 4526.56500\n", "2025-12-26 18:46:24,731 - INFO - TP2 (2.5R): 4535.61500\n", "2025-12-26 18:46:24,733 - INFO - Job \" (trigger: interval[0:01:00], next run at: 2025-12-26 18:47:24 CET)\" executed successfully\n", "2025-12-26 18:46:24,720 - INFO - Job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 18:47:24 CET)\" executed successfully\n", "2025-12-26 18:47:00,009 - INFO - Running job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 18:48:00 CET)\" (scheduled at 2025-12-26 18:47:00+01:00)\n", "2025-12-26 18:47:00,080 - INFO - Job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 18:48:00 CET)\" executed successfully\n", "2025-12-26 18:47:25,330 - INFO - Running job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 18:48:24 CET)\" (scheduled at 2025-12-26 18:47:24.704366+01:00)\n", "2025-12-26 18:47:25,331 - INFO - Running job \" (trigger: interval[0:01:00], next run at: 2025-12-26 18:48:24 CET)\" (scheduled at 2025-12-26 18:47:24.709373+01:00)\n", "2025-12-26 18:47:25,333 - INFO - Job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 18:48:24 CET)\" executed successfully\n", "2025-12-26 18:47:25,343 - INFO - \n", "πŸ” Checking 1 position(s) for XAUUSD...\n", "2025-12-26 18:47:25,344 - INFO - πŸ“Š Partial TP Levels:\n", "2025-12-26 18:47:25,345 - INFO - Entry: 4512.99000\n", "2025-12-26 18:47:25,346 - INFO - SL: 4503.94000\n", "2025-12-26 18:47:25,347 - INFO - Risk: 9.05000\n", "2025-12-26 18:47:25,350 - INFO - TP1 (1.5R): 4526.56500\n", "2025-12-26 18:47:25,352 - INFO - TP2 (2.5R): 4535.61500\n", "2025-12-26 18:47:25,353 - INFO - Job \" (trigger: interval[0:01:00], next run at: 2025-12-26 18:48:24 CET)\" executed successfully\n", "2025-12-26 18:48:00,003 - INFO - Running job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 18:49:00 CET)\" (scheduled at 2025-12-26 18:48:00+01:00)\n", "2025-12-26 18:48:00,015 - INFO - Job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 18:49:00 CET)\" executed successfully\n", "2025-12-26 18:48:24,866 - INFO - Running job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 18:49:24 CET)\" (scheduled at 2025-12-26 18:48:24.704366+01:00)\n", "2025-12-26 18:48:24,867 - INFO - Job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 18:49:24 CET)\" executed successfully\n", "2025-12-26 18:48:24,869 - INFO - Running job \" (trigger: interval[0:01:00], next run at: 2025-12-26 18:49:24 CET)\" (scheduled at 2025-12-26 18:48:24.709373+01:00)\n", "2025-12-26 18:48:24,885 - INFO - \n", "πŸ” Checking 1 position(s) for XAUUSD...\n", "2025-12-26 18:48:24,886 - INFO - πŸ“Š Partial TP Levels:\n", "2025-12-26 18:48:24,887 - INFO - Entry: 4512.99000\n", "2025-12-26 18:48:24,888 - INFO - SL: 4503.94000\n", "2025-12-26 18:48:24,888 - INFO - Risk: 9.05000\n", "2025-12-26 18:48:24,889 - INFO - TP1 (1.5R): 4526.56500\n", "2025-12-26 18:48:24,890 - INFO - TP2 (2.5R): 4535.61500\n", "2025-12-26 18:48:24,891 - INFO - Job \" (trigger: interval[0:01:00], next run at: 2025-12-26 18:49:24 CET)\" executed successfully\n", "2025-12-26 18:49:00,029 - INFO - Running job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 18:50:00 CET)\" (scheduled at 2025-12-26 18:49:00+01:00)\n", "2025-12-26 18:49:00,041 - INFO - Job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 18:50:00 CET)\" executed successfully\n", "2025-12-26 18:49:24,705 - INFO - Running job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 18:50:24 CET)\" (scheduled at 2025-12-26 18:49:24.704366+01:00)\n", "2025-12-26 18:49:24,707 - INFO - Job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 18:50:24 CET)\" executed successfully\n", "2025-12-26 18:49:24,721 - INFO - Running job \" (trigger: interval[0:01:00], next run at: 2025-12-26 18:50:24 CET)\" (scheduled at 2025-12-26 18:49:24.709373+01:00)\n", "2025-12-26 18:49:24,722 - INFO - \n", "πŸ” Checking 1 position(s) for XAUUSD...\n", "2025-12-26 18:49:24,724 - INFO - πŸ“ˆ Trailing Stop Trigger for #623344430: Break-Even at 51.5% progress\n", "2025-12-26 18:49:24,902 - INFO - βœ… Trailing Stop updated for #623344430\n", "2025-12-26 18:49:24,903 - INFO - Old SL: 4503.94000\n", "2025-12-26 18:49:24,906 - INFO - New SL: 4512.99000\n", "2025-12-26 18:49:24,907 - INFO - πŸ“Š Partial TP Levels:\n", "2025-12-26 18:49:24,909 - INFO - Entry: 4512.99000\n", "2025-12-26 18:49:24,909 - INFO - SL: 4503.94000\n", "2025-12-26 18:49:24,911 - INFO - Risk: 9.05000\n", "2025-12-26 18:49:24,912 - INFO - TP1 (1.5R): 4526.56500\n", "2025-12-26 18:49:24,913 - INFO - TP2 (2.5R): 4535.61500\n", "2025-12-26 18:49:24,914 - INFO - Job \" (trigger: interval[0:01:00], next run at: 2025-12-26 18:50:24 CET)\" executed successfully\n", "2025-12-26 18:50:00,144 - INFO - Running job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 18:51:00 CET)\" (scheduled at 2025-12-26 18:50:00+01:00)\n", "2025-12-26 18:50:00,153 - INFO - \n", "⏰ 2025-12-26 18:50:00 - ADAPTIVE Check\n", "2025-12-26 18:50:00,154 - INFO - βœ… Session: NY - NY allowed: 43.3% WR, $48/trade (needs >=97% conf)\n", "2025-12-26 18:50:00,155 - INFO - πŸ“Š Confidence Threshold: 95%\n", "2025-12-26 18:50:00,156 - INFO - ⏱️ Intervall: 5 min\n", "2025-12-26 18:50:00,174 - INFO - Job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 18:51:00 CET)\" executed successfully\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "πŸ“Š MULTI-TIMEFRAME REGIME CHECK\n", "============================================================\n", " H1: ADX 26.4 (weight 1.0x) βœ… TREND\n", " H4: ADX 39.4 (weight 2.0x) βœ… TREND\n", " D1: ADX 36.6 (weight 3.0x) βœ… TREND\n", "\n", " Weighted ADX: 35.8\n", " Threshold: 25\n", "\n", " βœ… ALLOWED: TRENDING\n", " Reason: D1 stark trending (ADX 36.6 > 30) β†’ Trend dominiert\n", "============================================================\n", "\n", "βœ… REGIME CHECK PASSED: TRENDING\n", " Reason: D1 stark trending (ADX 36.6 > 30) β†’ Trend dominiert\n", "\n", "πŸ” POSITION CHECK fΓΌr XAUUSD (V1.6 Adaptive Complete)\n", "πŸ›‘ TRADE BLOCKIERT: 1/1 Positionen aktiv\n", " BUY @ 4512.99 | 🟒 9.33\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2025-12-26 18:50:24,707 - INFO - Running job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 18:51:24 CET)\" (scheduled at 2025-12-26 18:50:24.704366+01:00)\n", "2025-12-26 18:50:24,709 - INFO - Job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 18:51:24 CET)\" executed successfully\n", "2025-12-26 18:50:24,721 - INFO - Running job \" (trigger: interval[0:01:00], next run at: 2025-12-26 18:51:24 CET)\" (scheduled at 2025-12-26 18:50:24.709373+01:00)\n", "2025-12-26 18:50:24,724 - INFO - \n", "πŸ” Checking 1 position(s) for XAUUSD...\n", "2025-12-26 18:50:24,725 - INFO - πŸ“Š Partial TP Levels:\n", "2025-12-26 18:50:24,726 - INFO - Entry: 4512.99000\n", "2025-12-26 18:50:24,727 - INFO - SL: 4512.99000\n", "2025-12-26 18:50:24,743 - INFO - Risk: 0.00000\n", "2025-12-26 18:50:24,746 - INFO - TP1 (1.5R): 4512.99000\n", "2025-12-26 18:50:24,747 - INFO - TP2 (2.5R): 4512.99000\n", "2025-12-26 18:50:24,748 - INFO - 🎯 Partial TP Trigger for #623344430: TP1 hit: Price 4521.68000 >= TP1 4512.99000\n", "2025-12-26 18:50:24,914 - INFO - βœ… Partial close executed for #623344430\n", "2025-12-26 18:50:24,915 - INFO - Closed: 0.01 lots (50%)\n", "2025-12-26 18:50:24,916 - INFO - Remaining: 0.00 lots\n", "2025-12-26 18:50:24,931 - ERROR - Error closing partial position: 'OrderSendResult' object has no attribute 'profit'\n", "2025-12-26 18:50:24,934 - INFO - Job \" (trigger: interval[0:01:00], next run at: 2025-12-26 18:51:24 CET)\" executed successfully\n", "2025-12-26 18:51:00,145 - INFO - Running job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 18:52:00 CET)\" (scheduled at 2025-12-26 18:51:00+01:00)\n", "2025-12-26 18:51:00,157 - INFO - Job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 18:52:00 CET)\" executed successfully\n", "2025-12-26 18:51:24,714 - INFO - Running job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 18:52:24 CET)\" (scheduled at 2025-12-26 18:51:24.704366+01:00)\n", "2025-12-26 18:51:24,714 - INFO - Running job \" (trigger: interval[0:01:00], next run at: 2025-12-26 18:52:24 CET)\" (scheduled at 2025-12-26 18:51:24.709373+01:00)\n", "2025-12-26 18:51:24,723 - INFO - Job \" (trigger: interval[0:01:00], next run at: 2025-12-26 18:52:24 CET)\" executed successfully\n", "2025-12-26 18:51:24,896 - INFO - βœ… Updated closed position 623344430: manual_close, Profit: -70.90\n", "2025-12-26 18:51:25,616 - INFO - Job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 18:52:24 CET)\" executed successfully\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "⚠️ Telegram send failed: 400\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2025-12-26 18:52:00,001 - INFO - Running job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 18:53:00 CET)\" (scheduled at 2025-12-26 18:52:00+01:00)\n", "2025-12-26 18:52:00,007 - INFO - Job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 18:53:00 CET)\" executed successfully\n", "2025-12-26 18:52:24,705 - INFO - Running job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 18:53:24 CET)\" (scheduled at 2025-12-26 18:52:24.704366+01:00)\n", "2025-12-26 18:52:24,706 - INFO - Job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 18:53:24 CET)\" executed successfully\n", "2025-12-26 18:52:24,717 - INFO - Running job \" (trigger: interval[0:01:00], next run at: 2025-12-26 18:53:24 CET)\" (scheduled at 2025-12-26 18:52:24.709373+01:00)\n", "2025-12-26 18:52:24,721 - INFO - Job \" (trigger: interval[0:01:00], next run at: 2025-12-26 18:53:24 CET)\" executed successfully\n", "2025-12-26 18:53:00,020 - INFO - Running job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 18:54:00 CET)\" (scheduled at 2025-12-26 18:53:00+01:00)\n", "2025-12-26 18:53:00,032 - INFO - Job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 18:54:00 CET)\" executed successfully\n", "2025-12-26 18:53:24,706 - INFO - Running job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 18:54:24 CET)\" (scheduled at 2025-12-26 18:53:24.704366+01:00)\n", "2025-12-26 18:53:24,707 - INFO - Job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 18:54:24 CET)\" executed successfully\n", "2025-12-26 18:53:24,717 - INFO - Running job \" (trigger: interval[0:01:00], next run at: 2025-12-26 18:54:24 CET)\" (scheduled at 2025-12-26 18:53:24.709373+01:00)\n", "2025-12-26 18:53:24,721 - INFO - Job \" (trigger: interval[0:01:00], next run at: 2025-12-26 18:54:24 CET)\" executed successfully\n", "2025-12-26 18:54:00,098 - INFO - Running job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 18:55:00 CET)\" (scheduled at 2025-12-26 18:54:00+01:00)\n", "2025-12-26 18:54:00,107 - INFO - Job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 18:55:00 CET)\" executed successfully\n", "2025-12-26 18:54:24,706 - INFO - Running job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 18:55:24 CET)\" (scheduled at 2025-12-26 18:54:24.704366+01:00)\n", "2025-12-26 18:54:24,708 - INFO - Job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 18:55:24 CET)\" executed successfully\n", "2025-12-26 18:54:24,717 - INFO - Running job \" (trigger: interval[0:01:00], next run at: 2025-12-26 18:55:24 CET)\" (scheduled at 2025-12-26 18:54:24.709373+01:00)\n", "2025-12-26 18:54:24,718 - INFO - Job \" (trigger: interval[0:01:00], next run at: 2025-12-26 18:55:24 CET)\" executed successfully\n", "2025-12-26 18:55:00,154 - INFO - Running job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 18:56:00 CET)\" (scheduled at 2025-12-26 18:55:00+01:00)\n", "2025-12-26 18:55:00,167 - INFO - \n", "⏰ 2025-12-26 18:55:00 - ADAPTIVE Check\n", "2025-12-26 18:55:00,168 - INFO - βœ… Session: NY - NY allowed: 43.3% WR, $48/trade (needs >=97% conf)\n", "2025-12-26 18:55:00,170 - INFO - πŸ“Š Confidence Threshold: 95%\n", "2025-12-26 18:55:00,171 - INFO - ⏱️ Intervall: 5 min\n", "2025-12-26 18:55:00,304 - INFO - πŸ“Š Adaptive Position Sizing:\n", "2025-12-26 18:55:00,305 - INFO - Confidence: 100.0% (HIGH)\n", "2025-12-26 18:55:00,306 - INFO - Base Risk: 2.0%\n", "2025-12-26 18:55:00,369 - INFO - Multiplier: 1.5x\n", "2025-12-26 18:55:00,371 - INFO - Adjusted Risk: 3.0%\n", "2025-12-26 18:55:00,372 - INFO - πŸ’° Position Size: 0.01 lots\n", "2025-12-26 18:55:00,372 - INFO - Risk Amount: $207.19\n", "2025-12-26 18:55:00,373 - INFO - SL Distance: 90162.63 pips\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "πŸ“Š MULTI-TIMEFRAME REGIME CHECK\n", "============================================================\n", " H1: ADX 26.4 (weight 1.0x) βœ… TREND\n", " H4: ADX 39.4 (weight 2.0x) βœ… TREND\n", " D1: ADX 36.6 (weight 3.0x) βœ… TREND\n", "\n", " Weighted ADX: 35.8\n", " Threshold: 25\n", "\n", " βœ… ALLOWED: TRENDING\n", " Reason: D1 stark trending (ADX 36.6 > 30) β†’ Trend dominiert\n", "============================================================\n", "\n", "βœ… REGIME CHECK PASSED: TRENDING\n", " Reason: D1 stark trending (ADX 36.6 > 30) β†’ Trend dominiert\n", "\n", "πŸ” POSITION CHECK fΓΌr XAUUSD (V1.6 Adaptive Complete)\n", "βœ… Position-Check OK: 0/1\n", "πŸ” Analyzing XAUUSD with V1.6 ADAPTIVE COMPLETE parameters...\n", "\n", "πŸ“Š V1.6 ADAPTIVE COMPLETE Trend-Analyse fΓΌr XAUUSD\n", "⚑ Adaptive Interval: 5 min | Session: NY\n", "🎯 Market Regime: RANGING (Strength: 18%)\n", "🎚️ Adaptive Threshold: 70% (RELAXED)\n", "\n", "+------+---------+------------+---------+---------+---------+\n", "| TF | Trend | Strength | ATR | Slope | Price |\n", "|------+---------+------------+---------+---------+---------|\n", "| D1 | uptrend | 768.78 | 71.3863 | 8.23206 | 4514.35 |\n", "| H4 | uptrend | 574.58 | 29.2221 | 2.51856 | 4514.35 |\n", "| H1 | uptrend | 635.69 | 17.3408 | 1.6535 | 4514.35 |\n", "| M30 | uptrend | 321.57 | 12.5244 | 0.60412 | 4514.35 |\n", "| M15 | uptrend | 163.44 | 9.7596 | 0.23927 | 4514.35 |\n", "| M5 | uptrend | 149.91 | 6.6787 | 0.15018 | 4514.35 |\n", "+------+---------+------------+---------+---------+---------+\n", "\n", "➑️ Standard-Trend: uptrend (Strength: 691.10)\n", "➑️ Fast-Trend: uptrend (Required: 2/4)\n", "➑️ Top-Down-Trend: uptrend\n", "➑️ Confidence: 100.0% (Threshold: 70%)\n", "➑️ Risk-Adjusted Strength: 174207.4 (Min: 80)\n", "➑️ Signal Quality: EXCELLENT\n", "\n", "πŸš€ V1.6 Adaptive Complete: Full Features + Adaptive Rhythm\n", "\n", "πŸš€ V1.6 ADAPTIVE COMPLETE TRADE EXECUTION\n", "Direction: LONG\n", "Price: 4514.35000 | Volume: 0.01\n", "SL: 4505.33374 | TP: 4536.89066\n", "Confidence: 100.0% | Quality: EXCELLENT\n", "Regime: RANGING\n", "Adaptive Interval: 5 min\n", "Session: NY\n", "βœ… Trade erfolgreich! Ticket: 623421721\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2025-12-26 18:55:01,634 - INFO - πŸ“± Trade logged to DB + Telegram notification sent\n", "2025-12-26 18:55:01,671 - INFO - Job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 18:56:00 CET)\" executed successfully\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "πŸ“Š Positionen: 1\n", "πŸ“Š Performance logged to trade_performance_v16_XAUUSD_202512.json\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2025-12-26 18:55:24,705 - INFO - Running job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 18:56:24 CET)\" (scheduled at 2025-12-26 18:55:24.704366+01:00)\n", "2025-12-26 18:55:24,707 - INFO - Job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 18:56:24 CET)\" executed successfully\n", "2025-12-26 18:55:24,716 - INFO - Running job \" (trigger: interval[0:01:00], next run at: 2025-12-26 18:56:24 CET)\" (scheduled at 2025-12-26 18:55:24.709373+01:00)\n", "2025-12-26 18:55:24,717 - INFO - \n", "πŸ” Checking 1 position(s) for XAUUSD...\n", "2025-12-26 18:55:24,720 - INFO - πŸ“Š Partial TP Levels:\n", "2025-12-26 18:55:24,723 - INFO - Entry: 4514.32000\n", "2025-12-26 18:55:24,728 - INFO - SL: 4505.33000\n", "2025-12-26 18:55:24,731 - INFO - Risk: 8.99000\n", "2025-12-26 18:55:24,734 - INFO - TP1 (1.5R): 4527.80500\n", "2025-12-26 18:55:24,758 - INFO - TP2 (2.5R): 4536.79500\n", "2025-12-26 18:55:24,760 - INFO - Job \" (trigger: interval[0:01:00], next run at: 2025-12-26 18:56:24 CET)\" executed successfully\n", "2025-12-26 18:56:00,656 - INFO - Running job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 18:57:00 CET)\" (scheduled at 2025-12-26 18:56:00+01:00)\n", "2025-12-26 18:56:00,664 - INFO - Job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 18:57:00 CET)\" executed successfully\n", "2025-12-26 18:56:24,705 - INFO - Running job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 18:57:24 CET)\" (scheduled at 2025-12-26 18:56:24.704366+01:00)\n", "2025-12-26 18:56:24,707 - INFO - Job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 18:57:24 CET)\" executed successfully\n", "2025-12-26 18:56:24,718 - INFO - Running job \" (trigger: interval[0:01:00], next run at: 2025-12-26 18:57:24 CET)\" (scheduled at 2025-12-26 18:56:24.709373+01:00)\n", "2025-12-26 18:56:24,721 - INFO - \n", "πŸ” Checking 1 position(s) for XAUUSD...\n", "2025-12-26 18:56:24,722 - INFO - πŸ“Š Partial TP Levels:\n", "2025-12-26 18:56:24,722 - INFO - Entry: 4514.32000\n", "2025-12-26 18:56:24,723 - INFO - SL: 4505.33000\n", "2025-12-26 18:56:24,724 - INFO - Risk: 8.99000\n", "2025-12-26 18:56:24,725 - INFO - TP1 (1.5R): 4527.80500\n", "2025-12-26 18:56:24,726 - INFO - TP2 (2.5R): 4536.79500\n", "2025-12-26 18:56:24,741 - INFO - Job \" (trigger: interval[0:01:00], next run at: 2025-12-26 18:57:24 CET)\" executed successfully\n", "2025-12-26 18:57:00,096 - INFO - Running job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 18:58:00 CET)\" (scheduled at 2025-12-26 18:57:00+01:00)\n", "2025-12-26 18:57:00,103 - INFO - Job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 18:58:00 CET)\" executed successfully\n", "2025-12-26 18:57:24,704 - INFO - Running job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 18:58:24 CET)\" (scheduled at 2025-12-26 18:57:24.704366+01:00)\n", "2025-12-26 18:57:24,706 - INFO - Job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 18:58:24 CET)\" executed successfully\n", "2025-12-26 18:57:24,717 - INFO - Running job \" (trigger: interval[0:01:00], next run at: 2025-12-26 18:58:24 CET)\" (scheduled at 2025-12-26 18:57:24.709373+01:00)\n", "2025-12-26 18:57:24,718 - INFO - \n", "πŸ” Checking 1 position(s) for XAUUSD...\n", "2025-12-26 18:57:24,721 - INFO - πŸ“Š Partial TP Levels:\n", "2025-12-26 18:57:24,722 - INFO - Entry: 4514.32000\n", "2025-12-26 18:57:24,723 - INFO - SL: 4505.33000\n", "2025-12-26 18:57:24,723 - INFO - Risk: 8.99000\n", "2025-12-26 18:57:24,724 - INFO - TP1 (1.5R): 4527.80500\n", "2025-12-26 18:57:24,725 - INFO - TP2 (2.5R): 4536.79500\n", "2025-12-26 18:57:24,746 - INFO - Job \" (trigger: interval[0:01:00], next run at: 2025-12-26 18:58:24 CET)\" executed successfully\n", "2025-12-26 18:58:00,480 - INFO - Running job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 18:59:00 CET)\" (scheduled at 2025-12-26 18:58:00+01:00)\n", "2025-12-26 18:58:00,491 - INFO - Job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 18:59:00 CET)\" executed successfully\n", "2025-12-26 18:58:24,837 - INFO - Running job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 18:59:24 CET)\" (scheduled at 2025-12-26 18:58:24.704366+01:00)\n", "2025-12-26 18:58:24,842 - INFO - Job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 18:59:24 CET)\" executed successfully\n", "2025-12-26 18:58:24,842 - INFO - Running job \" (trigger: interval[0:01:00], next run at: 2025-12-26 18:59:24 CET)\" (scheduled at 2025-12-26 18:58:24.709373+01:00)\n", "2025-12-26 18:58:24,951 - INFO - \n", "πŸ” Checking 1 position(s) for XAUUSD...\n", "2025-12-26 18:58:24,953 - INFO - πŸ“Š Partial TP Levels:\n", "2025-12-26 18:58:24,960 - INFO - Entry: 4514.32000\n", "2025-12-26 18:58:24,961 - INFO - SL: 4505.33000\n", "2025-12-26 18:58:24,962 - INFO - Risk: 8.99000\n", "2025-12-26 18:58:24,963 - INFO - TP1 (1.5R): 4527.80500\n", "2025-12-26 18:58:24,968 - INFO - TP2 (2.5R): 4536.79500\n", "2025-12-26 18:58:24,969 - INFO - Job \" (trigger: interval[0:01:00], next run at: 2025-12-26 18:59:24 CET)\" executed successfully\n", "2025-12-26 18:59:00,266 - INFO - Running job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 19:00:00 CET)\" (scheduled at 2025-12-26 18:59:00+01:00)\n", "2025-12-26 18:59:00,273 - INFO - Job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 19:00:00 CET)\" executed successfully\n", "2025-12-26 18:59:24,705 - INFO - Running job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 19:00:24 CET)\" (scheduled at 2025-12-26 18:59:24.704366+01:00)\n", "2025-12-26 18:59:24,707 - INFO - Job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 19:00:24 CET)\" executed successfully\n", "2025-12-26 18:59:24,800 - INFO - Running job \" (trigger: interval[0:01:00], next run at: 2025-12-26 19:00:24 CET)\" (scheduled at 2025-12-26 18:59:24.709373+01:00)\n", "2025-12-26 18:59:24,801 - INFO - \n", "πŸ” Checking 1 position(s) for XAUUSD...\n", "2025-12-26 18:59:24,802 - INFO - πŸ“Š Partial TP Levels:\n", "2025-12-26 18:59:24,803 - INFO - Entry: 4514.32000\n", "2025-12-26 18:59:24,804 - INFO - SL: 4505.33000\n", "2025-12-26 18:59:24,804 - INFO - Risk: 8.99000\n", "2025-12-26 18:59:24,805 - INFO - TP1 (1.5R): 4527.80500\n", "2025-12-26 18:59:24,810 - INFO - TP2 (2.5R): 4536.79500\n", "2025-12-26 18:59:24,813 - INFO - Job \" (trigger: interval[0:01:00], next run at: 2025-12-26 19:00:24 CET)\" executed successfully\n", "2025-12-26 19:00:00,015 - INFO - Running job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 19:01:00 CET)\" (scheduled at 2025-12-26 19:00:00+01:00)\n", "2025-12-26 19:00:00,016 - INFO - Running job \"print_status_report (trigger: cron[minute='0,30'], next run at: 2025-12-26 19:30:00 CET)\" (scheduled at 2025-12-26 19:00:00+01:00)\n", "2025-12-26 19:00:00,039 - INFO - Job \"print_status_report (trigger: cron[minute='0,30'], next run at: 2025-12-26 19:30:00 CET)\" executed successfully\n", "2025-12-26 19:00:00,030 - INFO - \n", "⏰ 2025-12-26 19:00:00 - ADAPTIVE Check\n", "2025-12-26 19:00:00,051 - INFO - βœ… Session: NY - NY allowed: 43.3% WR, $48/trade (needs >=97% conf)\n", "2025-12-26 19:00:00,052 - INFO - πŸ“Š Confidence Threshold: 95%\n", "2025-12-26 19:00:00,053 - INFO - ⏱️ Intervall: 5 min\n", "2025-12-26 19:00:00,090 - INFO - Job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 19:01:00 CET)\" executed successfully\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "╔════════════════════════════════════════════════════════╗\n", "β•‘ ADAPTIVE RHYTHM STATUS - 19:00:00 UTC β•‘\n", "╠════════════════════════════════════════════════════════╣\n", "β•‘ Aktuelles Intervall: 5 Minuten β•‘\n", "β•‘ Trading Session: NY β•‘\n", "β•‘ VolatilitΓ€tslevel: HIGH β•‘\n", "β•‘ ATR (H1): 17.55 β•‘\n", "╠════════════════════════════════════════════════════════╣\n", "β•‘ INTERVALL-SCHEMA: β•‘\n", "β•‘ β€’ Overlap (13-16 UTC): 5-15 Min (aktivste Phase) β•‘\n", "β•‘ β€’ London/NY: 5-30 Min (volatilitΓ€tsabh.) β•‘\n", "β•‘ β€’ Asian Session: 15-30 Min (ruhigere Phase) β•‘\n", "β•šβ•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•\n", "\n", "\n", "πŸ“Š MULTI-TIMEFRAME REGIME CHECK\n", "============================================================\n", " H1: ADX 26.4 (weight 1.0x) βœ… TREND\n", " H4: ADX 39.4 (weight 2.0x) βœ… TREND\n", " D1: ADX 36.6 (weight 3.0x) βœ… TREND\n", "\n", " Weighted ADX: 35.8\n", " Threshold: 25\n", "\n", " βœ… ALLOWED: TRENDING\n", " Reason: D1 stark trending (ADX 36.6 > 30) β†’ Trend dominiert\n", "============================================================\n", "\n", "βœ… REGIME CHECK PASSED: TRENDING\n", " Reason: D1 stark trending (ADX 36.6 > 30) β†’ Trend dominiert\n", "\n", "πŸ” POSITION CHECK fΓΌr XAUUSD (V1.6 Adaptive Complete)\n", "πŸ›‘ TRADE BLOCKIERT: 1/1 Positionen aktiv\n", " BUY @ 4514.32 | 🟒 4.81\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2025-12-26 19:00:24,705 - INFO - Running job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 19:01:24 CET)\" (scheduled at 2025-12-26 19:00:24.704366+01:00)\n", "2025-12-26 19:00:24,707 - INFO - Job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 19:01:24 CET)\" executed successfully\n", "2025-12-26 19:00:24,716 - INFO - Running job \" (trigger: interval[0:01:00], next run at: 2025-12-26 19:01:24 CET)\" (scheduled at 2025-12-26 19:00:24.709373+01:00)\n", "2025-12-26 19:00:24,721 - INFO - \n", "πŸ” Checking 1 position(s) for XAUUSD...\n", "2025-12-26 19:00:24,722 - INFO - πŸ“Š Partial TP Levels:\n", "2025-12-26 19:00:24,730 - INFO - Entry: 4514.32000\n", "2025-12-26 19:00:24,731 - INFO - SL: 4505.33000\n", "2025-12-26 19:00:24,733 - INFO - Risk: 8.99000\n", "2025-12-26 19:00:24,734 - INFO - TP1 (1.5R): 4527.80500\n", "2025-12-26 19:00:24,735 - INFO - TP2 (2.5R): 4536.79500\n", "2025-12-26 19:00:24,736 - INFO - Job \" (trigger: interval[0:01:00], next run at: 2025-12-26 19:01:24 CET)\" executed successfully\n", "2025-12-26 19:01:00,041 - INFO - Running job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 19:02:00 CET)\" (scheduled at 2025-12-26 19:01:00+01:00)\n", "2025-12-26 19:01:00,053 - INFO - Job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 19:02:00 CET)\" executed successfully\n", "2025-12-26 19:01:24,705 - INFO - Running job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 19:02:24 CET)\" (scheduled at 2025-12-26 19:01:24.704366+01:00)\n", "2025-12-26 19:01:24,707 - INFO - Job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 19:02:24 CET)\" executed successfully\n", "2025-12-26 19:01:24,718 - INFO - Running job \" (trigger: interval[0:01:00], next run at: 2025-12-26 19:02:24 CET)\" (scheduled at 2025-12-26 19:01:24.709373+01:00)\n", "2025-12-26 19:01:24,723 - INFO - \n", "πŸ” Checking 1 position(s) for XAUUSD...\n", "2025-12-26 19:01:24,732 - INFO - πŸ“Š Partial TP Levels:\n", "2025-12-26 19:01:24,733 - INFO - Entry: 4514.32000\n", "2025-12-26 19:01:24,734 - INFO - SL: 4505.33000\n", "2025-12-26 19:01:24,735 - INFO - Risk: 8.99000\n", "2025-12-26 19:01:24,737 - INFO - TP1 (1.5R): 4527.80500\n", "2025-12-26 19:01:24,738 - INFO - TP2 (2.5R): 4536.79500\n", "2025-12-26 19:01:24,739 - INFO - Job \" (trigger: interval[0:01:00], next run at: 2025-12-26 19:02:24 CET)\" executed successfully\n", "2025-12-26 19:02:00,060 - INFO - Running job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 19:03:00 CET)\" (scheduled at 2025-12-26 19:02:00+01:00)\n", "2025-12-26 19:02:00,071 - INFO - Job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 19:03:00 CET)\" executed successfully\n", "2025-12-26 19:02:24,704 - INFO - Running job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 19:03:24 CET)\" (scheduled at 2025-12-26 19:02:24.704366+01:00)\n", "2025-12-26 19:02:24,706 - INFO - Job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 19:03:24 CET)\" executed successfully\n", "2025-12-26 19:02:24,760 - INFO - Running job \" (trigger: interval[0:01:00], next run at: 2025-12-26 19:03:24 CET)\" (scheduled at 2025-12-26 19:02:24.709373+01:00)\n", "2025-12-26 19:02:24,762 - INFO - \n", "πŸ” Checking 1 position(s) for XAUUSD...\n", "2025-12-26 19:02:24,764 - INFO - πŸ“Š Partial TP Levels:\n", "2025-12-26 19:02:24,765 - INFO - Entry: 4514.32000\n", "2025-12-26 19:02:24,766 - INFO - SL: 4505.33000\n", "2025-12-26 19:02:24,766 - INFO - Risk: 8.99000\n", "2025-12-26 19:02:24,768 - INFO - TP1 (1.5R): 4527.80500\n", "2025-12-26 19:02:24,769 - INFO - TP2 (2.5R): 4536.79500\n", "2025-12-26 19:02:24,770 - INFO - Job \" (trigger: interval[0:01:00], next run at: 2025-12-26 19:03:24 CET)\" executed successfully\n", "2025-12-26 19:03:00,012 - INFO - Running job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 19:04:00 CET)\" (scheduled at 2025-12-26 19:03:00+01:00)\n", "2025-12-26 19:03:00,024 - INFO - Job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 19:04:00 CET)\" executed successfully\n", "2025-12-26 19:03:24,707 - INFO - Running job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 19:04:24 CET)\" (scheduled at 2025-12-26 19:03:24.704366+01:00)\n", "2025-12-26 19:03:24,709 - INFO - Job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 19:04:24 CET)\" executed successfully\n", "2025-12-26 19:03:24,725 - INFO - Running job \" (trigger: interval[0:01:00], next run at: 2025-12-26 19:04:24 CET)\" (scheduled at 2025-12-26 19:03:24.709373+01:00)\n", "2025-12-26 19:03:24,727 - INFO - \n", "πŸ” Checking 1 position(s) for XAUUSD...\n", "2025-12-26 19:03:24,728 - INFO - πŸ“Š Partial TP Levels:\n", "2025-12-26 19:03:24,728 - INFO - Entry: 4514.32000\n", "2025-12-26 19:03:24,729 - INFO - SL: 4505.33000\n", "2025-12-26 19:03:24,730 - INFO - Risk: 8.99000\n", "2025-12-26 19:03:24,731 - INFO - TP1 (1.5R): 4527.80500\n", "2025-12-26 19:03:24,732 - INFO - TP2 (2.5R): 4536.79500\n", "2025-12-26 19:03:24,733 - INFO - Job \" (trigger: interval[0:01:00], next run at: 2025-12-26 19:04:24 CET)\" executed successfully\n", "2025-12-26 19:04:00,021 - INFO - Running job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 19:05:00 CET)\" (scheduled at 2025-12-26 19:04:00+01:00)\n", "2025-12-26 19:04:00,037 - INFO - Job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 19:05:00 CET)\" executed successfully\n", "2025-12-26 19:04:24,706 - INFO - Running job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 19:05:24 CET)\" (scheduled at 2025-12-26 19:04:24.704366+01:00)\n", "2025-12-26 19:04:24,709 - INFO - Job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 19:05:24 CET)\" executed successfully\n", "2025-12-26 19:04:24,718 - INFO - Running job \" (trigger: interval[0:01:00], next run at: 2025-12-26 19:05:24 CET)\" (scheduled at 2025-12-26 19:04:24.709373+01:00)\n", "2025-12-26 19:04:24,719 - INFO - \n", "πŸ” Checking 1 position(s) for XAUUSD...\n", "2025-12-26 19:04:24,723 - INFO - πŸ“Š Partial TP Levels:\n", "2025-12-26 19:04:24,724 - INFO - Entry: 4514.32000\n", "2025-12-26 19:04:24,736 - INFO - SL: 4505.33000\n", "2025-12-26 19:04:24,737 - INFO - Risk: 8.99000\n", "2025-12-26 19:04:24,738 - INFO - TP1 (1.5R): 4527.80500\n", "2025-12-26 19:04:24,744 - INFO - TP2 (2.5R): 4536.79500\n", "2025-12-26 19:04:24,747 - INFO - Job \" (trigger: interval[0:01:00], next run at: 2025-12-26 19:05:24 CET)\" executed successfully\n", "2025-12-26 19:05:00,034 - INFO - Running job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 19:06:00 CET)\" (scheduled at 2025-12-26 19:05:00+01:00)\n", "2025-12-26 19:05:00,045 - INFO - \n", "⏰ 2025-12-26 19:05:00 - ADAPTIVE Check\n", "2025-12-26 19:05:00,047 - INFO - βœ… Session: NY - NY allowed: 43.3% WR, $48/trade (needs >=97% conf)\n", "2025-12-26 19:05:00,047 - INFO - πŸ“Š Confidence Threshold: 95%\n", "2025-12-26 19:05:00,048 - INFO - ⏱️ Intervall: 5 min\n", "2025-12-26 19:05:00,084 - INFO - Job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 19:06:00 CET)\" executed successfully\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "πŸ“Š MULTI-TIMEFRAME REGIME CHECK\n", "============================================================\n", " H1: ADX 25.7 (weight 1.0x) βœ… TREND\n", " H4: ADX 39.9 (weight 2.0x) βœ… TREND\n", " D1: ADX 36.6 (weight 3.0x) βœ… TREND\n", "\n", " Weighted ADX: 35.9\n", " Threshold: 25\n", "\n", " βœ… ALLOWED: TRENDING\n", " Reason: D1 stark trending (ADX 36.6 > 30) β†’ Trend dominiert\n", "============================================================\n", "\n", "βœ… REGIME CHECK PASSED: TRENDING\n", " Reason: D1 stark trending (ADX 36.6 > 30) β†’ Trend dominiert\n", "\n", "πŸ” POSITION CHECK fΓΌr XAUUSD (V1.6 Adaptive Complete)\n", "πŸ›‘ TRADE BLOCKIERT: 1/1 Positionen aktiv\n", " BUY @ 4514.32 | 🟒 5.27\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2025-12-26 19:05:24,705 - INFO - Running job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 19:06:24 CET)\" (scheduled at 2025-12-26 19:05:24.704366+01:00)\n", "2025-12-26 19:05:24,707 - INFO - Job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 19:06:24 CET)\" executed successfully\n", "2025-12-26 19:05:24,718 - INFO - Running job \" (trigger: interval[0:01:00], next run at: 2025-12-26 19:06:24 CET)\" (scheduled at 2025-12-26 19:05:24.709373+01:00)\n", "2025-12-26 19:05:24,723 - INFO - \n", "πŸ” Checking 1 position(s) for XAUUSD...\n", "2025-12-26 19:05:24,724 - INFO - πŸ“Š Partial TP Levels:\n", "2025-12-26 19:05:24,725 - INFO - Entry: 4514.32000\n", "2025-12-26 19:05:24,735 - INFO - SL: 4505.33000\n", "2025-12-26 19:05:24,736 - INFO - Risk: 8.99000\n", "2025-12-26 19:05:24,738 - INFO - TP1 (1.5R): 4527.80500\n", "2025-12-26 19:05:24,739 - INFO - TP2 (2.5R): 4536.79500\n", "2025-12-26 19:05:24,740 - INFO - Job \" (trigger: interval[0:01:00], next run at: 2025-12-26 19:06:24 CET)\" executed successfully\n", "2025-12-26 19:06:00,070 - INFO - Running job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 19:07:00 CET)\" (scheduled at 2025-12-26 19:06:00+01:00)\n", "2025-12-26 19:06:00,078 - INFO - Job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 19:07:00 CET)\" executed successfully\n", "2025-12-26 19:06:24,705 - INFO - Running job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 19:07:24 CET)\" (scheduled at 2025-12-26 19:06:24.704366+01:00)\n", "2025-12-26 19:06:24,707 - INFO - Job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 19:07:24 CET)\" executed successfully\n", "2025-12-26 19:06:24,718 - INFO - Running job \" (trigger: interval[0:01:00], next run at: 2025-12-26 19:07:24 CET)\" (scheduled at 2025-12-26 19:06:24.709373+01:00)\n", "2025-12-26 19:06:24,719 - INFO - \n", "πŸ” Checking 1 position(s) for XAUUSD...\n", "2025-12-26 19:06:24,733 - INFO - πŸ“Š Partial TP Levels:\n", "2025-12-26 19:06:24,736 - INFO - Entry: 4514.32000\n", "2025-12-26 19:06:24,737 - INFO - SL: 4505.33000\n", "2025-12-26 19:06:24,738 - INFO - Risk: 8.99000\n", "2025-12-26 19:06:24,739 - INFO - TP1 (1.5R): 4527.80500\n", "2025-12-26 19:06:24,747 - INFO - TP2 (2.5R): 4536.79500\n", "2025-12-26 19:06:24,748 - INFO - Job \" (trigger: interval[0:01:00], next run at: 2025-12-26 19:07:24 CET)\" executed successfully\n", "2025-12-26 19:07:00,036 - INFO - Running job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 19:08:00 CET)\" (scheduled at 2025-12-26 19:07:00+01:00)\n", "2025-12-26 19:07:00,044 - INFO - Job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 19:08:00 CET)\" executed successfully\n", "2025-12-26 19:07:24,704 - INFO - Running job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 19:08:24 CET)\" (scheduled at 2025-12-26 19:07:24.704366+01:00)\n", "2025-12-26 19:07:24,706 - INFO - Job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 19:08:24 CET)\" executed successfully\n", "2025-12-26 19:07:24,715 - INFO - Running job \" (trigger: interval[0:01:00], next run at: 2025-12-26 19:08:24 CET)\" (scheduled at 2025-12-26 19:07:24.709373+01:00)\n", "2025-12-26 19:07:24,717 - INFO - \n", "πŸ” Checking 1 position(s) for XAUUSD...\n", "2025-12-26 19:07:24,718 - INFO - πŸ“Š Partial TP Levels:\n", "2025-12-26 19:07:24,722 - INFO - Entry: 4514.32000\n", "2025-12-26 19:07:24,723 - INFO - SL: 4505.33000\n", "2025-12-26 19:07:24,724 - INFO - Risk: 8.99000\n", "2025-12-26 19:07:24,724 - INFO - TP1 (1.5R): 4527.80500\n", "2025-12-26 19:07:24,733 - INFO - TP2 (2.5R): 4536.79500\n", "2025-12-26 19:07:24,735 - INFO - Job \" (trigger: interval[0:01:00], next run at: 2025-12-26 19:08:24 CET)\" executed successfully\n", "2025-12-26 19:08:00,030 - INFO - Running job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 19:09:00 CET)\" (scheduled at 2025-12-26 19:08:00+01:00)\n", "2025-12-26 19:08:00,039 - INFO - Job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 19:09:00 CET)\" executed successfully\n", "2025-12-26 19:08:24,705 - INFO - Running job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 19:09:24 CET)\" (scheduled at 2025-12-26 19:08:24.704366+01:00)\n", "2025-12-26 19:08:24,707 - INFO - Job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 19:09:24 CET)\" executed successfully\n", "2025-12-26 19:08:24,718 - INFO - Running job \" (trigger: interval[0:01:00], next run at: 2025-12-26 19:09:24 CET)\" (scheduled at 2025-12-26 19:08:24.709373+01:00)\n", "2025-12-26 19:08:24,720 - INFO - \n", "πŸ” Checking 1 position(s) for XAUUSD...\n", "2025-12-26 19:08:24,721 - INFO - πŸ“Š Partial TP Levels:\n", "2025-12-26 19:08:24,726 - INFO - Entry: 4514.32000\n", "2025-12-26 19:08:24,728 - INFO - SL: 4505.33000\n", "2025-12-26 19:08:24,728 - INFO - Risk: 8.99000\n", "2025-12-26 19:08:24,729 - INFO - TP1 (1.5R): 4527.80500\n", "2025-12-26 19:08:24,742 - INFO - TP2 (2.5R): 4536.79500\n", "2025-12-26 19:08:24,743 - INFO - Job \" (trigger: interval[0:01:00], next run at: 2025-12-26 19:09:24 CET)\" executed successfully\n", "2025-12-26 19:09:00,053 - INFO - Running job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 19:10:00 CET)\" (scheduled at 2025-12-26 19:09:00+01:00)\n", "2025-12-26 19:09:00,065 - INFO - Job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 19:10:00 CET)\" executed successfully\n", "2025-12-26 19:09:24,705 - INFO - Running job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 19:10:24 CET)\" (scheduled at 2025-12-26 19:09:24.704366+01:00)\n", "2025-12-26 19:09:24,707 - INFO - Job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 19:10:24 CET)\" executed successfully\n", "2025-12-26 19:09:24,716 - INFO - Running job \" (trigger: interval[0:01:00], next run at: 2025-12-26 19:10:24 CET)\" (scheduled at 2025-12-26 19:09:24.709373+01:00)\n", "2025-12-26 19:09:24,718 - INFO - \n", "πŸ” Checking 1 position(s) for XAUUSD...\n", "2025-12-26 19:09:24,722 - INFO - πŸ“Š Partial TP Levels:\n", "2025-12-26 19:09:24,734 - INFO - Entry: 4514.32000\n", "2025-12-26 19:09:24,737 - INFO - SL: 4505.33000\n", "2025-12-26 19:09:24,737 - INFO - Risk: 8.99000\n", "2025-12-26 19:09:24,742 - INFO - TP1 (1.5R): 4527.80500\n", "2025-12-26 19:09:24,771 - INFO - TP2 (2.5R): 4536.79500\n", "2025-12-26 19:09:24,772 - INFO - Job \" (trigger: interval[0:01:00], next run at: 2025-12-26 19:10:24 CET)\" executed successfully\n", "2025-12-26 19:10:00,131 - INFO - Running job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 19:11:00 CET)\" (scheduled at 2025-12-26 19:10:00+01:00)\n", "2025-12-26 19:10:00,143 - INFO - \n", "⏰ 2025-12-26 19:10:00 - ADAPTIVE Check\n", "2025-12-26 19:10:00,144 - INFO - βœ… Session: NY - NY allowed: 43.3% WR, $48/trade (needs >=97% conf)\n", "2025-12-26 19:10:00,145 - INFO - πŸ“Š Confidence Threshold: 95%\n", "2025-12-26 19:10:00,145 - INFO - ⏱️ Intervall: 5 min\n", "2025-12-26 19:10:00,166 - INFO - Job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 19:11:00 CET)\" executed successfully\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "πŸ“Š MULTI-TIMEFRAME REGIME CHECK\n", "============================================================\n", " H1: ADX 25.7 (weight 1.0x) βœ… TREND\n", " H4: ADX 39.9 (weight 2.0x) βœ… TREND\n", " D1: ADX 36.6 (weight 3.0x) βœ… TREND\n", "\n", " Weighted ADX: 35.9\n", " Threshold: 25\n", "\n", " βœ… ALLOWED: TRENDING\n", " Reason: D1 stark trending (ADX 36.6 > 30) β†’ Trend dominiert\n", "============================================================\n", "\n", "βœ… REGIME CHECK PASSED: TRENDING\n", " Reason: D1 stark trending (ADX 36.6 > 30) β†’ Trend dominiert\n", "\n", "πŸ” POSITION CHECK fΓΌr XAUUSD (V1.6 Adaptive Complete)\n", "πŸ›‘ TRADE BLOCKIERT: 1/1 Positionen aktiv\n", " BUY @ 4514.32 | 🟒 1.84\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2025-12-26 19:10:24,705 - INFO - Running job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 19:11:24 CET)\" (scheduled at 2025-12-26 19:10:24.704366+01:00)\n", "2025-12-26 19:10:24,707 - INFO - Job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 19:11:24 CET)\" executed successfully\n", "2025-12-26 19:10:24,718 - INFO - Running job \" (trigger: interval[0:01:00], next run at: 2025-12-26 19:11:24 CET)\" (scheduled at 2025-12-26 19:10:24.709373+01:00)\n", "2025-12-26 19:10:24,739 - INFO - \n", "πŸ” Checking 1 position(s) for XAUUSD...\n", "2025-12-26 19:10:24,741 - INFO - πŸ“Š Partial TP Levels:\n", "2025-12-26 19:10:24,742 - INFO - Entry: 4514.32000\n", "2025-12-26 19:10:24,751 - INFO - SL: 4505.33000\n", "2025-12-26 19:10:24,759 - INFO - Risk: 8.99000\n", "2025-12-26 19:10:24,762 - INFO - TP1 (1.5R): 4527.80500\n", "2025-12-26 19:10:24,765 - INFO - TP2 (2.5R): 4536.79500\n", "2025-12-26 19:10:24,766 - INFO - Job \" (trigger: interval[0:01:00], next run at: 2025-12-26 19:11:24 CET)\" executed successfully\n", "2025-12-26 19:11:00,049 - INFO - Running job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 19:12:00 CET)\" (scheduled at 2025-12-26 19:11:00+01:00)\n", "2025-12-26 19:11:00,058 - INFO - Job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 19:12:00 CET)\" executed successfully\n", "2025-12-26 19:11:24,704 - INFO - Running job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 19:12:24 CET)\" (scheduled at 2025-12-26 19:11:24.704366+01:00)\n", "2025-12-26 19:11:24,706 - INFO - Job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 19:12:24 CET)\" executed successfully\n", "2025-12-26 19:11:24,736 - INFO - Running job \" (trigger: interval[0:01:00], next run at: 2025-12-26 19:12:24 CET)\" (scheduled at 2025-12-26 19:11:24.709373+01:00)\n", "2025-12-26 19:11:24,737 - INFO - \n", "πŸ” Checking 1 position(s) for XAUUSD...\n", "2025-12-26 19:11:24,739 - INFO - πŸ“Š Partial TP Levels:\n", "2025-12-26 19:11:24,746 - INFO - Entry: 4514.32000\n", "2025-12-26 19:11:24,750 - INFO - SL: 4505.33000\n", "2025-12-26 19:11:24,751 - INFO - Risk: 8.99000\n", "2025-12-26 19:11:24,752 - INFO - TP1 (1.5R): 4527.80500\n", "2025-12-26 19:11:24,753 - INFO - TP2 (2.5R): 4536.79500\n", "2025-12-26 19:11:24,754 - INFO - Job \" (trigger: interval[0:01:00], next run at: 2025-12-26 19:12:24 CET)\" executed successfully\n", "2025-12-26 19:12:00,019 - INFO - Running job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 19:13:00 CET)\" (scheduled at 2025-12-26 19:12:00+01:00)\n", "2025-12-26 19:12:00,034 - INFO - Job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 19:13:00 CET)\" executed successfully\n", "2025-12-26 19:12:24,704 - INFO - Running job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 19:13:24 CET)\" (scheduled at 2025-12-26 19:12:24.704366+01:00)\n", "2025-12-26 19:12:24,706 - INFO - Job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 19:13:24 CET)\" executed successfully\n", "2025-12-26 19:12:24,718 - INFO - Running job \" (trigger: interval[0:01:00], next run at: 2025-12-26 19:13:24 CET)\" (scheduled at 2025-12-26 19:12:24.709373+01:00)\n", "2025-12-26 19:12:24,721 - INFO - \n", "πŸ” Checking 1 position(s) for XAUUSD...\n", "2025-12-26 19:12:24,722 - INFO - πŸ“Š Partial TP Levels:\n", "2025-12-26 19:12:24,733 - INFO - Entry: 4514.32000\n", "2025-12-26 19:12:24,735 - INFO - SL: 4505.33000\n", "2025-12-26 19:12:24,736 - INFO - Risk: 8.99000\n", "2025-12-26 19:12:24,737 - INFO - TP1 (1.5R): 4527.80500\n", "2025-12-26 19:12:24,738 - INFO - TP2 (2.5R): 4536.79500\n", "2025-12-26 19:12:24,746 - INFO - Job \" (trigger: interval[0:01:00], next run at: 2025-12-26 19:13:24 CET)\" executed successfully\n", "2025-12-26 19:13:00,047 - INFO - Running job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 19:14:00 CET)\" (scheduled at 2025-12-26 19:13:00+01:00)\n", "2025-12-26 19:13:00,054 - INFO - Job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 19:14:00 CET)\" executed successfully\n", "2025-12-26 19:13:24,705 - INFO - Running job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 19:14:24 CET)\" (scheduled at 2025-12-26 19:13:24.704366+01:00)\n", "2025-12-26 19:13:24,706 - INFO - Job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 19:14:24 CET)\" executed successfully\n", "2025-12-26 19:13:24,718 - INFO - Running job \" (trigger: interval[0:01:00], next run at: 2025-12-26 19:14:24 CET)\" (scheduled at 2025-12-26 19:13:24.709373+01:00)\n", "2025-12-26 19:13:24,721 - INFO - \n", "πŸ” Checking 1 position(s) for XAUUSD...\n", "2025-12-26 19:13:24,722 - INFO - πŸ“Š Partial TP Levels:\n", "2025-12-26 19:13:24,723 - INFO - Entry: 4514.32000\n", "2025-12-26 19:13:24,724 - INFO - SL: 4505.33000\n", "2025-12-26 19:13:24,725 - INFO - Risk: 8.99000\n", "2025-12-26 19:13:24,726 - INFO - TP1 (1.5R): 4527.80500\n", "2025-12-26 19:13:24,726 - INFO - TP2 (2.5R): 4536.79500\n", "2025-12-26 19:13:24,728 - INFO - Job \" (trigger: interval[0:01:00], next run at: 2025-12-26 19:14:24 CET)\" executed successfully\n", "2025-12-26 19:14:00,034 - INFO - Running job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 19:15:00 CET)\" (scheduled at 2025-12-26 19:14:00+01:00)\n", "2025-12-26 19:14:00,046 - INFO - Job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 19:15:00 CET)\" executed successfully\n", "2025-12-26 19:14:24,704 - INFO - Running job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 19:15:24 CET)\" (scheduled at 2025-12-26 19:14:24.704366+01:00)\n", "2025-12-26 19:14:24,706 - INFO - Job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 19:15:24 CET)\" executed successfully\n", "2025-12-26 19:14:24,733 - INFO - Running job \" (trigger: interval[0:01:00], next run at: 2025-12-26 19:15:24 CET)\" (scheduled at 2025-12-26 19:14:24.709373+01:00)\n", "2025-12-26 19:14:24,734 - INFO - \n", "πŸ” Checking 1 position(s) for XAUUSD...\n", "2025-12-26 19:14:24,736 - INFO - πŸ“Š Partial TP Levels:\n", "2025-12-26 19:14:24,737 - INFO - Entry: 4514.32000\n", "2025-12-26 19:14:24,738 - INFO - SL: 4505.33000\n", "2025-12-26 19:14:24,743 - INFO - Risk: 8.99000\n", "2025-12-26 19:14:24,750 - INFO - TP1 (1.5R): 4527.80500\n", "2025-12-26 19:14:24,751 - INFO - TP2 (2.5R): 4536.79500\n", "2025-12-26 19:14:24,752 - INFO - Job \" (trigger: interval[0:01:00], next run at: 2025-12-26 19:15:24 CET)\" executed successfully\n", "2025-12-26 19:15:00,020 - INFO - Running job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 19:16:00 CET)\" (scheduled at 2025-12-26 19:15:00+01:00)\n", "2025-12-26 19:15:00,035 - INFO - \n", "⏰ 2025-12-26 19:15:00 - ADAPTIVE Check\n", "2025-12-26 19:15:00,037 - INFO - βœ… Session: NY - NY allowed: 43.3% WR, $48/trade (needs >=97% conf)\n", "2025-12-26 19:15:00,038 - INFO - πŸ“Š Confidence Threshold: 95%\n", "2025-12-26 19:15:00,038 - INFO - ⏱️ Intervall: 5 min\n", "2025-12-26 19:15:00,137 - INFO - Job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 19:16:00 CET)\" executed successfully\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "πŸ“Š MULTI-TIMEFRAME REGIME CHECK\n", "============================================================\n", " H1: ADX 25.7 (weight 1.0x) βœ… TREND\n", " H4: ADX 39.9 (weight 2.0x) βœ… TREND\n", " D1: ADX 36.6 (weight 3.0x) βœ… TREND\n", "\n", " Weighted ADX: 35.9\n", " Threshold: 25\n", "\n", " βœ… ALLOWED: TRENDING\n", " Reason: D1 stark trending (ADX 36.6 > 30) β†’ Trend dominiert\n", "============================================================\n", "\n", "βœ… REGIME CHECK PASSED: TRENDING\n", " Reason: D1 stark trending (ADX 36.6 > 30) β†’ Trend dominiert\n", "\n", "πŸ” POSITION CHECK fΓΌr XAUUSD (V1.6 Adaptive Complete)\n", "πŸ›‘ TRADE BLOCKIERT: 1/1 Positionen aktiv\n", " BUY @ 4514.32 | 🟒 3.49\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2025-12-26 19:15:24,705 - INFO - Running job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 19:16:24 CET)\" (scheduled at 2025-12-26 19:15:24.704366+01:00)\n", "2025-12-26 19:15:24,707 - INFO - Job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 19:16:24 CET)\" executed successfully\n", "2025-12-26 19:15:24,717 - INFO - Running job \" (trigger: interval[0:01:00], next run at: 2025-12-26 19:16:24 CET)\" (scheduled at 2025-12-26 19:15:24.709373+01:00)\n", "2025-12-26 19:15:24,719 - INFO - \n", "πŸ” Checking 1 position(s) for XAUUSD...\n", "2025-12-26 19:15:24,723 - INFO - πŸ“Š Partial TP Levels:\n", "2025-12-26 19:15:24,724 - INFO - Entry: 4514.32000\n", "2025-12-26 19:15:24,735 - INFO - SL: 4505.33000\n", "2025-12-26 19:15:24,735 - INFO - Risk: 8.99000\n", "2025-12-26 19:15:24,736 - INFO - TP1 (1.5R): 4527.80500\n", "2025-12-26 19:15:24,737 - INFO - TP2 (2.5R): 4536.79500\n", "2025-12-26 19:15:24,738 - INFO - Job \" (trigger: interval[0:01:00], next run at: 2025-12-26 19:16:24 CET)\" executed successfully\n", "2025-12-26 19:16:00,055 - INFO - Running job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 19:17:00 CET)\" (scheduled at 2025-12-26 19:16:00+01:00)\n", "2025-12-26 19:16:00,066 - INFO - Job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 19:17:00 CET)\" executed successfully\n", "2025-12-26 19:16:24,705 - INFO - Running job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 19:17:24 CET)\" (scheduled at 2025-12-26 19:16:24.704366+01:00)\n", "2025-12-26 19:16:24,707 - INFO - Job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 19:17:24 CET)\" executed successfully\n", "2025-12-26 19:16:24,718 - INFO - Running job \" (trigger: interval[0:01:00], next run at: 2025-12-26 19:17:24 CET)\" (scheduled at 2025-12-26 19:16:24.709373+01:00)\n", "2025-12-26 19:16:24,719 - INFO - \n", "πŸ” Checking 1 position(s) for XAUUSD...\n", "2025-12-26 19:16:24,723 - INFO - πŸ“Š Partial TP Levels:\n", "2025-12-26 19:16:24,733 - INFO - Entry: 4514.32000\n", "2025-12-26 19:16:24,734 - INFO - SL: 4505.33000\n", "2025-12-26 19:16:24,735 - INFO - Risk: 8.99000\n", "2025-12-26 19:16:24,737 - INFO - TP1 (1.5R): 4527.80500\n", "2025-12-26 19:16:24,739 - INFO - TP2 (2.5R): 4536.79500\n", "2025-12-26 19:16:24,740 - INFO - Job \" (trigger: interval[0:01:00], next run at: 2025-12-26 19:17:24 CET)\" executed successfully\n", "2025-12-26 19:17:00,187 - INFO - Running job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 19:18:00 CET)\" (scheduled at 2025-12-26 19:17:00+01:00)\n", "2025-12-26 19:17:00,192 - INFO - Job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 19:18:00 CET)\" executed successfully\n", "2025-12-26 19:17:24,705 - INFO - Running job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 19:18:24 CET)\" (scheduled at 2025-12-26 19:17:24.704366+01:00)\n", "2025-12-26 19:17:24,707 - INFO - Job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 19:18:24 CET)\" executed successfully\n", "2025-12-26 19:17:24,752 - INFO - Running job \" (trigger: interval[0:01:00], next run at: 2025-12-26 19:18:24 CET)\" (scheduled at 2025-12-26 19:17:24.709373+01:00)\n", "2025-12-26 19:17:24,755 - INFO - \n", "πŸ” Checking 1 position(s) for XAUUSD...\n", "2025-12-26 19:17:24,757 - INFO - πŸ“Š Partial TP Levels:\n", "2025-12-26 19:17:24,759 - INFO - Entry: 4514.32000\n", "2025-12-26 19:17:24,760 - INFO - SL: 4505.33000\n", "2025-12-26 19:17:24,761 - INFO - Risk: 8.99000\n", "2025-12-26 19:17:24,761 - INFO - TP1 (1.5R): 4527.80500\n", "2025-12-26 19:17:24,762 - INFO - TP2 (2.5R): 4536.79500\n", "2025-12-26 19:17:24,763 - INFO - Job \" (trigger: interval[0:01:00], next run at: 2025-12-26 19:18:24 CET)\" executed successfully\n", "2025-12-26 19:18:00,011 - INFO - Running job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 19:19:00 CET)\" (scheduled at 2025-12-26 19:18:00+01:00)\n", "2025-12-26 19:18:00,024 - INFO - Job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 19:19:00 CET)\" executed successfully\n", "2025-12-26 19:18:24,705 - INFO - Running job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 19:19:24 CET)\" (scheduled at 2025-12-26 19:18:24.704366+01:00)\n", "2025-12-26 19:18:24,708 - INFO - Job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 19:19:24 CET)\" executed successfully\n", "2025-12-26 19:18:24,723 - INFO - Running job \" (trigger: interval[0:01:00], next run at: 2025-12-26 19:19:24 CET)\" (scheduled at 2025-12-26 19:18:24.709373+01:00)\n", "2025-12-26 19:18:24,728 - INFO - \n", "πŸ” Checking 1 position(s) for XAUUSD...\n", "2025-12-26 19:18:24,729 - INFO - πŸ“Š Partial TP Levels:\n", "2025-12-26 19:18:24,749 - INFO - Entry: 4514.32000\n", "2025-12-26 19:18:24,751 - INFO - SL: 4505.33000\n", "2025-12-26 19:18:24,760 - INFO - Risk: 8.99000\n", "2025-12-26 19:18:24,762 - INFO - TP1 (1.5R): 4527.80500\n", "2025-12-26 19:18:24,763 - INFO - TP2 (2.5R): 4536.79500\n", "2025-12-26 19:18:24,764 - INFO - Job \" (trigger: interval[0:01:00], next run at: 2025-12-26 19:19:24 CET)\" executed successfully\n", "2025-12-26 19:19:00,044 - INFO - Running job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 19:20:00 CET)\" (scheduled at 2025-12-26 19:19:00+01:00)\n", "2025-12-26 19:19:00,050 - INFO - Job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 19:20:00 CET)\" executed successfully\n", "2025-12-26 19:19:24,705 - INFO - Running job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 19:20:24 CET)\" (scheduled at 2025-12-26 19:19:24.704366+01:00)\n", "2025-12-26 19:19:24,707 - INFO - Job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 19:20:24 CET)\" executed successfully\n", "2025-12-26 19:19:24,717 - INFO - Running job \" (trigger: interval[0:01:00], next run at: 2025-12-26 19:20:24 CET)\" (scheduled at 2025-12-26 19:19:24.709373+01:00)\n", "2025-12-26 19:19:24,718 - INFO - \n", "πŸ” Checking 1 position(s) for XAUUSD...\n", "2025-12-26 19:19:24,722 - INFO - πŸ“Š Partial TP Levels:\n", "2025-12-26 19:19:24,723 - INFO - Entry: 4514.32000\n", "2025-12-26 19:19:24,735 - INFO - SL: 4505.33000\n", "2025-12-26 19:19:24,735 - INFO - Risk: 8.99000\n", "2025-12-26 19:19:24,736 - INFO - TP1 (1.5R): 4527.80500\n", "2025-12-26 19:19:24,737 - INFO - TP2 (2.5R): 4536.79500\n", "2025-12-26 19:19:24,741 - INFO - Job \" (trigger: interval[0:01:00], next run at: 2025-12-26 19:20:24 CET)\" executed successfully\n", "2025-12-26 19:20:00,090 - INFO - Running job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 19:21:00 CET)\" (scheduled at 2025-12-26 19:20:00+01:00)\n", "2025-12-26 19:20:00,100 - INFO - \n", "⏰ 2025-12-26 19:20:00 - ADAPTIVE Check\n", "2025-12-26 19:20:00,101 - INFO - βœ… Session: NY - NY allowed: 43.3% WR, $48/trade (needs >=97% conf)\n", "2025-12-26 19:20:00,102 - INFO - πŸ“Š Confidence Threshold: 95%\n", "2025-12-26 19:20:00,102 - INFO - ⏱️ Intervall: 5 min\n", "2025-12-26 19:20:00,133 - INFO - Job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 19:21:00 CET)\" executed successfully\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "πŸ“Š MULTI-TIMEFRAME REGIME CHECK\n", "============================================================\n", " H1: ADX 25.7 (weight 1.0x) βœ… TREND\n", " H4: ADX 39.9 (weight 2.0x) βœ… TREND\n", " D1: ADX 36.6 (weight 3.0x) βœ… TREND\n", "\n", " Weighted ADX: 35.9\n", " Threshold: 25\n", "\n", " βœ… ALLOWED: TRENDING\n", " Reason: D1 stark trending (ADX 36.6 > 30) β†’ Trend dominiert\n", "============================================================\n", "\n", "βœ… REGIME CHECK PASSED: TRENDING\n", " Reason: D1 stark trending (ADX 36.6 > 30) β†’ Trend dominiert\n", "\n", "πŸ” POSITION CHECK fΓΌr XAUUSD (V1.6 Adaptive Complete)\n", "πŸ›‘ TRADE BLOCKIERT: 1/1 Positionen aktiv\n", " BUY @ 4514.32 | 🟒 3.57\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2025-12-26 19:20:24,705 - INFO - Running job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 19:21:24 CET)\" (scheduled at 2025-12-26 19:20:24.704366+01:00)\n", "2025-12-26 19:20:24,707 - INFO - Job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 19:21:24 CET)\" executed successfully\n", "2025-12-26 19:20:24,748 - INFO - Running job \" (trigger: interval[0:01:00], next run at: 2025-12-26 19:21:24 CET)\" (scheduled at 2025-12-26 19:20:24.709373+01:00)\n", "2025-12-26 19:20:24,750 - INFO - \n", "πŸ” Checking 1 position(s) for XAUUSD...\n", "2025-12-26 19:20:24,753 - INFO - πŸ“Š Partial TP Levels:\n", "2025-12-26 19:20:24,754 - INFO - Entry: 4514.32000\n", "2025-12-26 19:20:24,754 - INFO - SL: 4505.33000\n", "2025-12-26 19:20:24,755 - INFO - Risk: 8.99000\n", "2025-12-26 19:20:24,756 - INFO - TP1 (1.5R): 4527.80500\n", "2025-12-26 19:20:24,758 - INFO - TP2 (2.5R): 4536.79500\n", "2025-12-26 19:20:24,759 - INFO - Job \" (trigger: interval[0:01:00], next run at: 2025-12-26 19:21:24 CET)\" executed successfully\n", "2025-12-26 19:21:00,013 - INFO - Running job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 19:22:00 CET)\" (scheduled at 2025-12-26 19:21:00+01:00)\n", "2025-12-26 19:21:00,030 - INFO - Job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 19:22:00 CET)\" executed successfully\n", "2025-12-26 19:21:24,747 - INFO - Running job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 19:22:24 CET)\" (scheduled at 2025-12-26 19:21:24.704366+01:00)\n", "2025-12-26 19:21:24,749 - INFO - Job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 19:22:24 CET)\" executed successfully\n", "2025-12-26 19:21:24,747 - INFO - Running job \" (trigger: interval[0:01:00], next run at: 2025-12-26 19:22:24 CET)\" (scheduled at 2025-12-26 19:21:24.709373+01:00)\n", "2025-12-26 19:21:24,756 - INFO - \n", "πŸ” Checking 1 position(s) for XAUUSD...\n", "2025-12-26 19:21:24,757 - INFO - πŸ“Š Partial TP Levels:\n", "2025-12-26 19:21:24,758 - INFO - Entry: 4514.32000\n", "2025-12-26 19:21:24,759 - INFO - SL: 4505.33000\n", "2025-12-26 19:21:24,760 - INFO - Risk: 8.99000\n", "2025-12-26 19:21:24,761 - INFO - TP1 (1.5R): 4527.80500\n", "2025-12-26 19:21:24,762 - INFO - TP2 (2.5R): 4536.79500\n", "2025-12-26 19:21:24,774 - INFO - Job \" (trigger: interval[0:01:00], next run at: 2025-12-26 19:22:24 CET)\" executed successfully\n", "2025-12-26 19:22:00,014 - INFO - Running job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 19:23:00 CET)\" (scheduled at 2025-12-26 19:22:00+01:00)\n", "2025-12-26 19:22:00,029 - INFO - Job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 19:23:00 CET)\" executed successfully\n", "2025-12-26 19:22:24,705 - INFO - Running job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 19:23:24 CET)\" (scheduled at 2025-12-26 19:22:24.704366+01:00)\n", "2025-12-26 19:22:24,707 - INFO - Job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 19:23:24 CET)\" executed successfully\n", "2025-12-26 19:22:24,718 - INFO - Running job \" (trigger: interval[0:01:00], next run at: 2025-12-26 19:23:24 CET)\" (scheduled at 2025-12-26 19:22:24.709373+01:00)\n", "2025-12-26 19:22:24,722 - INFO - \n", "πŸ” Checking 1 position(s) for XAUUSD...\n", "2025-12-26 19:22:24,723 - INFO - πŸ“Š Partial TP Levels:\n", "2025-12-26 19:22:24,734 - INFO - Entry: 4514.32000\n", "2025-12-26 19:22:24,735 - INFO - SL: 4505.33000\n", "2025-12-26 19:22:24,736 - INFO - Risk: 8.99000\n", "2025-12-26 19:22:24,737 - INFO - TP1 (1.5R): 4527.80500\n", "2025-12-26 19:22:24,741 - INFO - TP2 (2.5R): 4536.79500\n", "2025-12-26 19:22:24,742 - INFO - Job \" (trigger: interval[0:01:00], next run at: 2025-12-26 19:23:24 CET)\" executed successfully\n", "2025-12-26 19:23:00,035 - INFO - Running job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 19:24:00 CET)\" (scheduled at 2025-12-26 19:23:00+01:00)\n", "2025-12-26 19:23:00,041 - INFO - Job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 19:24:00 CET)\" executed successfully\n", "2025-12-26 19:23:24,718 - INFO - Running job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 19:24:24 CET)\" (scheduled at 2025-12-26 19:23:24.704366+01:00)\n", "2025-12-26 19:23:24,718 - INFO - Running job \" (trigger: interval[0:01:00], next run at: 2025-12-26 19:24:24 CET)\" (scheduled at 2025-12-26 19:23:24.709373+01:00)\n", "2025-12-26 19:23:24,727 - INFO - \n", "πŸ” Checking 1 position(s) for XAUUSD...\n", "2025-12-26 19:23:24,728 - INFO - πŸ“Š Partial TP Levels:\n", "2025-12-26 19:23:24,729 - INFO - Entry: 4514.32000\n", "2025-12-26 19:23:24,729 - INFO - SL: 4505.33000\n", "2025-12-26 19:23:24,730 - INFO - Risk: 8.99000\n", "2025-12-26 19:23:24,731 - INFO - TP1 (1.5R): 4527.80500\n", "2025-12-26 19:23:24,732 - INFO - TP2 (2.5R): 4536.79500\n", "2025-12-26 19:23:24,732 - INFO - Job \" (trigger: interval[0:01:00], next run at: 2025-12-26 19:24:24 CET)\" executed successfully\n", "2025-12-26 19:23:24,720 - INFO - Job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 19:24:24 CET)\" executed successfully\n", "2025-12-26 19:24:00,011 - INFO - Running job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 19:25:00 CET)\" (scheduled at 2025-12-26 19:24:00+01:00)\n", "2025-12-26 19:24:00,029 - INFO - Job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 19:25:00 CET)\" executed successfully\n", "2025-12-26 19:24:24,779 - INFO - Running job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 19:25:24 CET)\" (scheduled at 2025-12-26 19:24:24.704366+01:00)\n", "2025-12-26 19:24:24,781 - INFO - Job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 19:25:24 CET)\" executed successfully\n", "2025-12-26 19:24:24,779 - INFO - Running job \" (trigger: interval[0:01:00], next run at: 2025-12-26 19:25:24 CET)\" (scheduled at 2025-12-26 19:24:24.709373+01:00)\n", "2025-12-26 19:24:24,792 - INFO - \n", "πŸ” Checking 1 position(s) for XAUUSD...\n", "2025-12-26 19:24:24,793 - INFO - πŸ“Š Partial TP Levels:\n", "2025-12-26 19:24:24,794 - INFO - Entry: 4514.32000\n", "2025-12-26 19:24:24,795 - INFO - SL: 4505.33000\n", "2025-12-26 19:24:24,796 - INFO - Risk: 8.99000\n", "2025-12-26 19:24:24,797 - INFO - TP1 (1.5R): 4527.80500\n", "2025-12-26 19:24:24,810 - INFO - TP2 (2.5R): 4536.79500\n", "2025-12-26 19:24:24,811 - INFO - Job \" (trigger: interval[0:01:00], next run at: 2025-12-26 19:25:24 CET)\" executed successfully\n", "2025-12-26 19:25:00,001 - INFO - Running job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 19:26:00 CET)\" (scheduled at 2025-12-26 19:25:00+01:00)\n", "2025-12-26 19:25:00,010 - INFO - \n", "⏰ 2025-12-26 19:25:00 - ADAPTIVE Check\n", "2025-12-26 19:25:00,012 - INFO - βœ… Session: NY - NY allowed: 43.3% WR, $48/trade (needs >=97% conf)\n", "2025-12-26 19:25:00,013 - INFO - πŸ“Š Confidence Threshold: 95%\n", "2025-12-26 19:25:00,014 - INFO - ⏱️ Intervall: 5 min\n", "2025-12-26 19:25:00,036 - INFO - Job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 19:26:00 CET)\" executed successfully\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "πŸ“Š MULTI-TIMEFRAME REGIME CHECK\n", "============================================================\n", " H1: ADX 25.7 (weight 1.0x) βœ… TREND\n", " H4: ADX 39.9 (weight 2.0x) βœ… TREND\n", " D1: ADX 36.6 (weight 3.0x) βœ… TREND\n", "\n", " Weighted ADX: 35.9\n", " Threshold: 25\n", "\n", " βœ… ALLOWED: TRENDING\n", " Reason: D1 stark trending (ADX 36.6 > 30) β†’ Trend dominiert\n", "============================================================\n", "\n", "βœ… REGIME CHECK PASSED: TRENDING\n", " Reason: D1 stark trending (ADX 36.6 > 30) β†’ Trend dominiert\n", "\n", "πŸ” POSITION CHECK fΓΌr XAUUSD (V1.6 Adaptive Complete)\n", "πŸ›‘ TRADE BLOCKIERT: 1/1 Positionen aktiv\n", " BUY @ 4514.32 | 🟒 7.99\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2025-12-26 19:25:24,706 - INFO - Running job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 19:26:24 CET)\" (scheduled at 2025-12-26 19:25:24.704366+01:00)\n", "2025-12-26 19:25:24,709 - INFO - Job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 19:26:24 CET)\" executed successfully\n", "2025-12-26 19:25:24,751 - INFO - Running job \" (trigger: interval[0:01:00], next run at: 2025-12-26 19:26:24 CET)\" (scheduled at 2025-12-26 19:25:24.709373+01:00)\n", "2025-12-26 19:25:24,752 - INFO - \n", "πŸ” Checking 1 position(s) for XAUUSD...\n", "2025-12-26 19:25:24,753 - INFO - πŸ“Š Partial TP Levels:\n", "2025-12-26 19:25:24,756 - INFO - Entry: 4514.32000\n", "2025-12-26 19:25:24,757 - INFO - SL: 4505.33000\n", "2025-12-26 19:25:24,757 - INFO - Risk: 8.99000\n", "2025-12-26 19:25:24,758 - INFO - TP1 (1.5R): 4527.80500\n", "2025-12-26 19:25:24,759 - INFO - TP2 (2.5R): 4536.79500\n", "2025-12-26 19:25:24,759 - INFO - Job \" (trigger: interval[0:01:00], next run at: 2025-12-26 19:26:24 CET)\" executed successfully\n", "2025-12-26 19:26:00,011 - INFO - Running job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 19:27:00 CET)\" (scheduled at 2025-12-26 19:26:00+01:00)\n", "2025-12-26 19:26:00,020 - INFO - Job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 19:27:00 CET)\" executed successfully\n", "2025-12-26 19:26:24,731 - INFO - Running job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 19:27:24 CET)\" (scheduled at 2025-12-26 19:26:24.704366+01:00)\n", "2025-12-26 19:26:24,731 - INFO - Running job \" (trigger: interval[0:01:00], next run at: 2025-12-26 19:27:24 CET)\" (scheduled at 2025-12-26 19:26:24.709373+01:00)\n", "2025-12-26 19:26:24,739 - INFO - \n", "πŸ” Checking 1 position(s) for XAUUSD...\n", "2025-12-26 19:26:24,740 - INFO - πŸ“Š Partial TP Levels:\n", "2025-12-26 19:26:24,741 - INFO - Entry: 4514.32000\n", "2025-12-26 19:26:24,742 - INFO - SL: 4505.33000\n", "2025-12-26 19:26:24,743 - INFO - Risk: 8.99000\n", "2025-12-26 19:26:24,743 - INFO - TP1 (1.5R): 4527.80500\n", "2025-12-26 19:26:24,746 - INFO - TP2 (2.5R): 4536.79500\n", "2025-12-26 19:26:24,749 - INFO - Job \" (trigger: interval[0:01:00], next run at: 2025-12-26 19:27:24 CET)\" executed successfully\n", "2025-12-26 19:26:24,734 - INFO - Job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 19:27:24 CET)\" executed successfully\n", "2025-12-26 19:27:00,011 - INFO - Running job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 19:28:00 CET)\" (scheduled at 2025-12-26 19:27:00+01:00)\n", "2025-12-26 19:27:00,022 - INFO - Job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 19:28:00 CET)\" executed successfully\n", "2025-12-26 19:27:24,706 - INFO - Running job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 19:28:24 CET)\" (scheduled at 2025-12-26 19:27:24.704366+01:00)\n", "2025-12-26 19:27:24,707 - INFO - Job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 19:28:24 CET)\" executed successfully\n", "2025-12-26 19:27:24,757 - INFO - Running job \" (trigger: interval[0:01:00], next run at: 2025-12-26 19:28:24 CET)\" (scheduled at 2025-12-26 19:27:24.709373+01:00)\n", "2025-12-26 19:27:24,759 - INFO - \n", "πŸ” Checking 1 position(s) for XAUUSD...\n", "2025-12-26 19:27:24,761 - INFO - πŸ“Š Partial TP Levels:\n", "2025-12-26 19:27:24,762 - INFO - Entry: 4514.32000\n", "2025-12-26 19:27:24,764 - INFO - SL: 4505.33000\n", "2025-12-26 19:27:24,765 - INFO - Risk: 8.99000\n", "2025-12-26 19:27:24,766 - INFO - TP1 (1.5R): 4527.80500\n", "2025-12-26 19:27:24,767 - INFO - TP2 (2.5R): 4536.79500\n", "2025-12-26 19:27:24,768 - INFO - Job \" (trigger: interval[0:01:00], next run at: 2025-12-26 19:28:24 CET)\" executed successfully\n", "2025-12-26 19:28:00,012 - INFO - Running job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 19:29:00 CET)\" (scheduled at 2025-12-26 19:28:00+01:00)\n", "2025-12-26 19:28:00,023 - INFO - Job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 19:29:00 CET)\" executed successfully\n", "2025-12-26 19:28:24,706 - INFO - Running job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 19:29:24 CET)\" (scheduled at 2025-12-26 19:28:24.704366+01:00)\n", "2025-12-26 19:28:24,708 - INFO - Job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 19:29:24 CET)\" executed successfully\n", "2025-12-26 19:28:24,720 - INFO - Running job \" (trigger: interval[0:01:00], next run at: 2025-12-26 19:29:24 CET)\" (scheduled at 2025-12-26 19:28:24.709373+01:00)\n", "2025-12-26 19:28:24,722 - INFO - \n", "πŸ” Checking 1 position(s) for XAUUSD...\n", "2025-12-26 19:28:24,723 - INFO - πŸ“Š Partial TP Levels:\n", "2025-12-26 19:28:24,729 - INFO - Entry: 4514.32000\n", "2025-12-26 19:28:24,768 - INFO - SL: 4505.33000\n", "2025-12-26 19:28:24,770 - INFO - Risk: 8.99000\n", "2025-12-26 19:28:24,771 - INFO - TP1 (1.5R): 4527.80500\n", "2025-12-26 19:28:24,772 - INFO - TP2 (2.5R): 4536.79500\n", "2025-12-26 19:28:24,773 - INFO - Job \" (trigger: interval[0:01:00], next run at: 2025-12-26 19:29:24 CET)\" executed successfully\n", "2025-12-26 19:29:00,256 - INFO - Running job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 19:30:00 CET)\" (scheduled at 2025-12-26 19:29:00+01:00)\n", "2025-12-26 19:29:00,263 - INFO - Job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 19:30:00 CET)\" executed successfully\n", "2025-12-26 19:29:24,705 - INFO - Running job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 19:30:24 CET)\" (scheduled at 2025-12-26 19:29:24.704366+01:00)\n", "2025-12-26 19:29:24,708 - INFO - Job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 19:30:24 CET)\" executed successfully\n", "2025-12-26 19:29:24,720 - INFO - Running job \" (trigger: interval[0:01:00], next run at: 2025-12-26 19:30:24 CET)\" (scheduled at 2025-12-26 19:29:24.709373+01:00)\n", "2025-12-26 19:29:24,725 - INFO - \n", "πŸ” Checking 1 position(s) for XAUUSD...\n", "2025-12-26 19:29:24,735 - INFO - πŸ“Š Partial TP Levels:\n", "2025-12-26 19:29:24,737 - INFO - Entry: 4514.32000\n", "2025-12-26 19:29:24,738 - INFO - SL: 4505.33000\n", "2025-12-26 19:29:24,742 - INFO - Risk: 8.99000\n", "2025-12-26 19:29:24,747 - INFO - TP1 (1.5R): 4527.80500\n", "2025-12-26 19:29:24,748 - INFO - TP2 (2.5R): 4536.79500\n", "2025-12-26 19:29:24,749 - INFO - Job \" (trigger: interval[0:01:00], next run at: 2025-12-26 19:30:24 CET)\" executed successfully\n", "2025-12-26 19:30:00,046 - INFO - Running job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 19:31:00 CET)\" (scheduled at 2025-12-26 19:30:00+01:00)\n", "2025-12-26 19:30:00,046 - INFO - Running job \"print_status_report (trigger: cron[minute='0,30'], next run at: 2025-12-26 20:00:00 CET)\" (scheduled at 2025-12-26 19:30:00+01:00)\n", "2025-12-26 19:30:00,066 - INFO - Job \"print_status_report (trigger: cron[minute='0,30'], next run at: 2025-12-26 20:00:00 CET)\" executed successfully\n", "2025-12-26 19:30:00,060 - INFO - \n", "⏰ 2025-12-26 19:30:00 - ADAPTIVE Check\n", "2025-12-26 19:30:00,090 - INFO - βœ… Session: NY - NY allowed: 43.3% WR, $48/trade (needs >=97% conf)\n", "2025-12-26 19:30:00,091 - INFO - πŸ“Š Confidence Threshold: 95%\n", "2025-12-26 19:30:00,092 - INFO - ⏱️ Intervall: 5 min\n", "2025-12-26 19:30:00,114 - INFO - Job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 19:31:00 CET)\" executed successfully\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "╔════════════════════════════════════════════════════════╗\n", "β•‘ ADAPTIVE RHYTHM STATUS - 19:30:00 UTC β•‘\n", "╠════════════════════════════════════════════════════════╣\n", "β•‘ Aktuelles Intervall: 5 Minuten β•‘\n", "β•‘ Trading Session: NY β•‘\n", "β•‘ VolatilitΓ€tslevel: HIGH β•‘\n", "β•‘ ATR (H1): 17.04 β•‘\n", "╠════════════════════════════════════════════════════════╣\n", "β•‘ INTERVALL-SCHEMA: β•‘\n", "β•‘ β€’ Overlap (13-16 UTC): 5-15 Min (aktivste Phase) β•‘\n", "β•‘ β€’ London/NY: 5-30 Min (volatilitΓ€tsabh.) β•‘\n", "β•‘ β€’ Asian Session: 15-30 Min (ruhigere Phase) β•‘\n", "β•šβ•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•\n", "\n", "\n", "πŸ“Š MULTI-TIMEFRAME REGIME CHECK\n", "============================================================\n", " H1: ADX 25.7 (weight 1.0x) βœ… TREND\n", " H4: ADX 39.9 (weight 2.0x) βœ… TREND\n", " D1: ADX 36.6 (weight 3.0x) βœ… TREND\n", "\n", " Weighted ADX: 35.9\n", " Threshold: 25\n", "\n", " βœ… ALLOWED: TRENDING\n", " Reason: D1 stark trending (ADX 36.6 > 30) β†’ Trend dominiert\n", "============================================================\n", "\n", "βœ… REGIME CHECK PASSED: TRENDING\n", " Reason: D1 stark trending (ADX 36.6 > 30) β†’ Trend dominiert\n", "\n", "πŸ” POSITION CHECK fΓΌr XAUUSD (V1.6 Adaptive Complete)\n", "πŸ›‘ TRADE BLOCKIERT: 1/1 Positionen aktiv\n", " BUY @ 4514.32 | 🟒 4.80\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2025-12-26 19:30:24,705 - INFO - Running job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 19:31:24 CET)\" (scheduled at 2025-12-26 19:30:24.704366+01:00)\n", "2025-12-26 19:30:24,707 - INFO - Job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 19:31:24 CET)\" executed successfully\n", "2025-12-26 19:30:24,760 - INFO - Running job \" (trigger: interval[0:01:00], next run at: 2025-12-26 19:31:24 CET)\" (scheduled at 2025-12-26 19:30:24.709373+01:00)\n", "2025-12-26 19:30:24,761 - INFO - \n", "πŸ” Checking 1 position(s) for XAUUSD...\n", "2025-12-26 19:30:24,762 - INFO - πŸ“Š Partial TP Levels:\n", "2025-12-26 19:30:24,763 - INFO - Entry: 4514.32000\n", "2025-12-26 19:30:24,764 - INFO - SL: 4505.33000\n", "2025-12-26 19:30:24,765 - INFO - Risk: 8.99000\n", "2025-12-26 19:30:24,766 - INFO - TP1 (1.5R): 4527.80500\n", "2025-12-26 19:30:24,767 - INFO - TP2 (2.5R): 4536.79500\n", "2025-12-26 19:30:24,768 - INFO - Job \" (trigger: interval[0:01:00], next run at: 2025-12-26 19:31:24 CET)\" executed successfully\n", "2025-12-26 19:31:00,001 - INFO - Running job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 19:32:00 CET)\" (scheduled at 2025-12-26 19:31:00+01:00)\n", "2025-12-26 19:31:00,008 - INFO - Job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 19:32:00 CET)\" executed successfully\n", "2025-12-26 19:31:24,705 - INFO - Running job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 19:32:24 CET)\" (scheduled at 2025-12-26 19:31:24.704366+01:00)\n", "2025-12-26 19:31:24,707 - INFO - Job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 19:32:24 CET)\" executed successfully\n", "2025-12-26 19:31:24,717 - INFO - Running job \" (trigger: interval[0:01:00], next run at: 2025-12-26 19:32:24 CET)\" (scheduled at 2025-12-26 19:31:24.709373+01:00)\n", "2025-12-26 19:31:24,718 - INFO - \n", "πŸ” Checking 1 position(s) for XAUUSD...\n", "2025-12-26 19:31:24,736 - INFO - πŸ“Š Partial TP Levels:\n", "2025-12-26 19:31:24,737 - INFO - Entry: 4514.32000\n", "2025-12-26 19:31:24,743 - INFO - SL: 4505.33000\n", "2025-12-26 19:31:24,749 - INFO - Risk: 8.99000\n", "2025-12-26 19:31:24,757 - INFO - TP1 (1.5R): 4527.80500\n", "2025-12-26 19:31:24,831 - INFO - TP2 (2.5R): 4536.79500\n", "2025-12-26 19:31:24,833 - INFO - Job \" (trigger: interval[0:01:00], next run at: 2025-12-26 19:32:24 CET)\" executed successfully\n", "2025-12-26 19:32:00,122 - INFO - Running job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 19:33:00 CET)\" (scheduled at 2025-12-26 19:32:00+01:00)\n", "2025-12-26 19:32:00,132 - INFO - Job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 19:33:00 CET)\" executed successfully\n", "2025-12-26 19:32:24,705 - INFO - Running job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 19:33:24 CET)\" (scheduled at 2025-12-26 19:32:24.704366+01:00)\n", "2025-12-26 19:32:24,707 - INFO - Job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 19:33:24 CET)\" executed successfully\n", "2025-12-26 19:32:24,720 - INFO - Running job \" (trigger: interval[0:01:00], next run at: 2025-12-26 19:33:24 CET)\" (scheduled at 2025-12-26 19:32:24.709373+01:00)\n", "2025-12-26 19:32:24,721 - INFO - \n", "πŸ” Checking 1 position(s) for XAUUSD...\n", "2025-12-26 19:32:24,725 - INFO - πŸ“Š Partial TP Levels:\n", "2025-12-26 19:32:24,726 - INFO - Entry: 4514.32000\n", "2025-12-26 19:32:24,726 - INFO - SL: 4505.33000\n", "2025-12-26 19:32:24,727 - INFO - Risk: 8.99000\n", "2025-12-26 19:32:24,728 - INFO - TP1 (1.5R): 4527.80500\n", "2025-12-26 19:32:24,741 - INFO - TP2 (2.5R): 4536.79500\n", "2025-12-26 19:32:24,742 - INFO - Job \" (trigger: interval[0:01:00], next run at: 2025-12-26 19:33:24 CET)\" executed successfully\n", "2025-12-26 19:33:00,184 - INFO - Running job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 19:34:00 CET)\" (scheduled at 2025-12-26 19:33:00+01:00)\n", "2025-12-26 19:33:00,191 - INFO - Job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 19:34:00 CET)\" executed successfully\n", "2025-12-26 19:33:24,704 - INFO - Running job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 19:34:24 CET)\" (scheduled at 2025-12-26 19:33:24.704366+01:00)\n", "2025-12-26 19:33:24,706 - INFO - Job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 19:34:24 CET)\" executed successfully\n", "2025-12-26 19:33:24,715 - INFO - Running job \" (trigger: interval[0:01:00], next run at: 2025-12-26 19:34:24 CET)\" (scheduled at 2025-12-26 19:33:24.709373+01:00)\n", "2025-12-26 19:33:24,717 - INFO - \n", "πŸ” Checking 1 position(s) for XAUUSD...\n", "2025-12-26 19:33:24,718 - INFO - πŸ“Š Partial TP Levels:\n", "2025-12-26 19:33:24,721 - INFO - Entry: 4514.32000\n", "2025-12-26 19:33:24,722 - INFO - SL: 4505.33000\n", "2025-12-26 19:33:24,723 - INFO - Risk: 8.99000\n", "2025-12-26 19:33:24,732 - INFO - TP1 (1.5R): 4527.80500\n", "2025-12-26 19:33:24,734 - INFO - TP2 (2.5R): 4536.79500\n", "2025-12-26 19:33:24,735 - INFO - Job \" (trigger: interval[0:01:00], next run at: 2025-12-26 19:34:24 CET)\" executed successfully\n", "2025-12-26 19:34:00,258 - INFO - Running job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 19:35:00 CET)\" (scheduled at 2025-12-26 19:34:00+01:00)\n", "2025-12-26 19:34:00,265 - INFO - Job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 19:35:00 CET)\" executed successfully\n", "2025-12-26 19:34:24,705 - INFO - Running job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 19:35:24 CET)\" (scheduled at 2025-12-26 19:34:24.704366+01:00)\n", "2025-12-26 19:34:24,706 - INFO - Job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 19:35:24 CET)\" executed successfully\n", "2025-12-26 19:34:24,717 - INFO - Running job \" (trigger: interval[0:01:00], next run at: 2025-12-26 19:35:24 CET)\" (scheduled at 2025-12-26 19:34:24.709373+01:00)\n", "2025-12-26 19:34:24,718 - INFO - \n", "πŸ” Checking 1 position(s) for XAUUSD...\n", "2025-12-26 19:34:24,719 - INFO - πŸ“Š Partial TP Levels:\n", "2025-12-26 19:34:24,719 - INFO - Entry: 4514.32000\n", "2025-12-26 19:34:24,723 - INFO - SL: 4505.33000\n", "2025-12-26 19:34:24,735 - INFO - Risk: 8.99000\n", "2025-12-26 19:34:24,736 - INFO - TP1 (1.5R): 4527.80500\n", "2025-12-26 19:34:24,742 - INFO - TP2 (2.5R): 4536.79500\n", "2025-12-26 19:34:24,743 - INFO - Job \" (trigger: interval[0:01:00], next run at: 2025-12-26 19:35:24 CET)\" executed successfully\n", "2025-12-26 19:35:00,034 - INFO - Running job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 19:36:00 CET)\" (scheduled at 2025-12-26 19:35:00+01:00)\n", "2025-12-26 19:35:00,040 - INFO - \n", "⏰ 2025-12-26 19:35:00 - ADAPTIVE Check\n", "2025-12-26 19:35:00,041 - INFO - βœ… Session: NY - NY allowed: 43.3% WR, $48/trade (needs >=97% conf)\n", "2025-12-26 19:35:00,042 - INFO - πŸ“Š Confidence Threshold: 95%\n", "2025-12-26 19:35:00,042 - INFO - ⏱️ Intervall: 5 min\n", "2025-12-26 19:35:00,084 - INFO - Job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 19:36:00 CET)\" executed successfully\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "πŸ“Š MULTI-TIMEFRAME REGIME CHECK\n", "============================================================\n", " H1: ADX 25.7 (weight 1.0x) βœ… TREND\n", " H4: ADX 39.9 (weight 2.0x) βœ… TREND\n", " D1: ADX 36.6 (weight 3.0x) βœ… TREND\n", "\n", " Weighted ADX: 35.9\n", " Threshold: 25\n", "\n", " βœ… ALLOWED: TRENDING\n", " Reason: D1 stark trending (ADX 36.6 > 30) β†’ Trend dominiert\n", "============================================================\n", "\n", "βœ… REGIME CHECK PASSED: TRENDING\n", " Reason: D1 stark trending (ADX 36.6 > 30) β†’ Trend dominiert\n", "\n", "πŸ” POSITION CHECK fΓΌr XAUUSD (V1.6 Adaptive Complete)\n", "πŸ›‘ TRADE BLOCKIERT: 1/1 Positionen aktiv\n", " BUY @ 4514.32 | 🟒 6.70\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2025-12-26 19:35:24,706 - INFO - Running job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 19:36:24 CET)\" (scheduled at 2025-12-26 19:35:24.704366+01:00)\n", "2025-12-26 19:35:24,708 - INFO - Job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 19:36:24 CET)\" executed successfully\n", "2025-12-26 19:35:24,735 - INFO - Running job \" (trigger: interval[0:01:00], next run at: 2025-12-26 19:36:24 CET)\" (scheduled at 2025-12-26 19:35:24.709373+01:00)\n", "2025-12-26 19:35:24,737 - INFO - \n", "πŸ” Checking 1 position(s) for XAUUSD...\n", "2025-12-26 19:35:24,738 - INFO - πŸ“Š Partial TP Levels:\n", "2025-12-26 19:35:24,740 - INFO - Entry: 4514.32000\n", "2025-12-26 19:35:24,747 - INFO - SL: 4505.33000\n", "2025-12-26 19:35:24,750 - INFO - Risk: 8.99000\n", "2025-12-26 19:35:24,751 - INFO - TP1 (1.5R): 4527.80500\n", "2025-12-26 19:35:24,752 - INFO - TP2 (2.5R): 4536.79500\n", "2025-12-26 19:35:24,753 - INFO - Job \" (trigger: interval[0:01:00], next run at: 2025-12-26 19:36:24 CET)\" executed successfully\n", "2025-12-26 19:36:00,019 - INFO - Running job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 19:37:00 CET)\" (scheduled at 2025-12-26 19:36:00+01:00)\n", "2025-12-26 19:36:00,030 - INFO - Job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 19:37:00 CET)\" executed successfully\n", "2025-12-26 19:36:24,762 - INFO - Running job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 19:37:24 CET)\" (scheduled at 2025-12-26 19:36:24.704366+01:00)\n", "2025-12-26 19:36:24,762 - INFO - Running job \" (trigger: interval[0:01:00], next run at: 2025-12-26 19:37:24 CET)\" (scheduled at 2025-12-26 19:36:24.709373+01:00)\n", "2025-12-26 19:36:24,765 - INFO - \n", "πŸ” Checking 1 position(s) for XAUUSD...\n", "2025-12-26 19:36:24,766 - INFO - πŸ“Š Partial TP Levels:\n", "2025-12-26 19:36:24,771 - INFO - Entry: 4514.32000\n", "2025-12-26 19:36:24,772 - INFO - SL: 4505.33000\n", "2025-12-26 19:36:24,773 - INFO - Risk: 8.99000\n", "2025-12-26 19:36:24,773 - INFO - TP1 (1.5R): 4527.80500\n", "2025-12-26 19:36:24,774 - INFO - TP2 (2.5R): 4536.79500\n", "2025-12-26 19:36:24,780 - INFO - Job \" (trigger: interval[0:01:00], next run at: 2025-12-26 19:37:24 CET)\" executed successfully\n", "2025-12-26 19:36:24,764 - INFO - Job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 19:37:24 CET)\" executed successfully\n", "2025-12-26 19:37:00,012 - INFO - Running job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 19:38:00 CET)\" (scheduled at 2025-12-26 19:37:00+01:00)\n", "2025-12-26 19:37:00,030 - INFO - Job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 19:38:00 CET)\" executed successfully\n", "2025-12-26 19:37:24,707 - INFO - Running job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 19:38:24 CET)\" (scheduled at 2025-12-26 19:37:24.704366+01:00)\n", "2025-12-26 19:37:24,709 - INFO - Job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 19:38:24 CET)\" executed successfully\n", "2025-12-26 19:37:24,764 - INFO - Running job \" (trigger: interval[0:01:00], next run at: 2025-12-26 19:38:24 CET)\" (scheduled at 2025-12-26 19:37:24.709373+01:00)\n", "2025-12-26 19:37:24,767 - INFO - \n", "πŸ” Checking 1 position(s) for XAUUSD...\n", "2025-12-26 19:37:24,768 - INFO - πŸ“Š Partial TP Levels:\n", "2025-12-26 19:37:24,770 - INFO - Entry: 4514.32000\n", "2025-12-26 19:37:24,771 - INFO - SL: 4505.33000\n", "2025-12-26 19:37:24,772 - INFO - Risk: 8.99000\n", "2025-12-26 19:37:24,773 - INFO - TP1 (1.5R): 4527.80500\n", "2025-12-26 19:37:24,775 - INFO - TP2 (2.5R): 4536.79500\n", "2025-12-26 19:37:24,777 - INFO - Job \" (trigger: interval[0:01:00], next run at: 2025-12-26 19:38:24 CET)\" executed successfully\n", "2025-12-26 19:38:00,001 - INFO - Running job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 19:39:00 CET)\" (scheduled at 2025-12-26 19:38:00+01:00)\n", "2025-12-26 19:38:00,007 - INFO - Job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 19:39:00 CET)\" executed successfully\n", "2025-12-26 19:38:24,705 - INFO - Running job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 19:39:24 CET)\" (scheduled at 2025-12-26 19:38:24.704366+01:00)\n", "2025-12-26 19:38:24,707 - INFO - Job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 19:39:24 CET)\" executed successfully\n", "2025-12-26 19:38:24,757 - INFO - Running job \" (trigger: interval[0:01:00], next run at: 2025-12-26 19:39:24 CET)\" (scheduled at 2025-12-26 19:38:24.709373+01:00)\n", "2025-12-26 19:38:24,759 - INFO - \n", "πŸ” Checking 1 position(s) for XAUUSD...\n", "2025-12-26 19:38:24,760 - INFO - πŸ“Š Partial TP Levels:\n", "2025-12-26 19:38:24,764 - INFO - Entry: 4514.32000\n", "2025-12-26 19:38:24,765 - INFO - SL: 4505.33000\n", "2025-12-26 19:38:24,768 - INFO - Risk: 8.99000\n", "2025-12-26 19:38:24,769 - INFO - TP1 (1.5R): 4527.80500\n", "2025-12-26 19:38:24,791 - INFO - TP2 (2.5R): 4536.79500\n", "2025-12-26 19:38:24,793 - INFO - Job \" (trigger: interval[0:01:00], next run at: 2025-12-26 19:39:24 CET)\" executed successfully\n", "2025-12-26 19:39:00,049 - INFO - Running job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 19:40:00 CET)\" (scheduled at 2025-12-26 19:39:00+01:00)\n", "2025-12-26 19:39:00,063 - INFO - Job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 19:40:00 CET)\" executed successfully\n", "2025-12-26 19:39:24,704 - INFO - Running job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 19:40:24 CET)\" (scheduled at 2025-12-26 19:39:24.704366+01:00)\n", "2025-12-26 19:39:24,706 - INFO - Job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 19:40:24 CET)\" executed successfully\n", "2025-12-26 19:39:24,717 - INFO - Running job \" (trigger: interval[0:01:00], next run at: 2025-12-26 19:40:24 CET)\" (scheduled at 2025-12-26 19:39:24.709373+01:00)\n", "2025-12-26 19:39:24,719 - INFO - \n", "πŸ” Checking 1 position(s) for XAUUSD...\n", "2025-12-26 19:39:24,723 - INFO - πŸ“Š Partial TP Levels:\n", "2025-12-26 19:39:24,725 - INFO - Entry: 4514.32000\n", "2025-12-26 19:39:24,725 - INFO - SL: 4505.33000\n", "2025-12-26 19:39:24,737 - INFO - Risk: 8.99000\n", "2025-12-26 19:39:24,738 - INFO - TP1 (1.5R): 4527.80500\n", "2025-12-26 19:39:24,739 - INFO - TP2 (2.5R): 4536.79500\n", "2025-12-26 19:39:24,747 - INFO - Job \" (trigger: interval[0:01:00], next run at: 2025-12-26 19:40:24 CET)\" executed successfully\n", "2025-12-26 19:40:00,269 - INFO - Running job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 19:41:00 CET)\" (scheduled at 2025-12-26 19:40:00+01:00)\n", "2025-12-26 19:40:00,283 - INFO - \n", "⏰ 2025-12-26 19:40:00 - ADAPTIVE Check\n", "2025-12-26 19:40:00,284 - INFO - βœ… Session: NY - NY allowed: 43.3% WR, $48/trade (needs >=97% conf)\n", "2025-12-26 19:40:00,285 - INFO - πŸ“Š Confidence Threshold: 95%\n", "2025-12-26 19:40:00,288 - INFO - ⏱️ Intervall: 5 min\n", "2025-12-26 19:40:00,322 - INFO - Job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 19:41:00 CET)\" executed successfully\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "πŸ“Š MULTI-TIMEFRAME REGIME CHECK\n", "============================================================\n", " H1: ADX 25.7 (weight 1.0x) βœ… TREND\n", " H4: ADX 39.9 (weight 2.0x) βœ… TREND\n", " D1: ADX 36.6 (weight 3.0x) βœ… TREND\n", "\n", " Weighted ADX: 35.9\n", " Threshold: 25\n", "\n", " βœ… ALLOWED: TRENDING\n", " Reason: D1 stark trending (ADX 36.6 > 30) β†’ Trend dominiert\n", "============================================================\n", "\n", "βœ… REGIME CHECK PASSED: TRENDING\n", " Reason: D1 stark trending (ADX 36.6 > 30) β†’ Trend dominiert\n", "\n", "πŸ” POSITION CHECK fΓΌr XAUUSD (V1.6 Adaptive Complete)\n", "πŸ›‘ TRADE BLOCKIERT: 1/1 Positionen aktiv\n", " BUY @ 4514.32 | 🟒 8.35\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2025-12-26 19:40:24,704 - INFO - Running job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 19:41:24 CET)\" (scheduled at 2025-12-26 19:40:24.704366+01:00)\n", "2025-12-26 19:40:24,706 - INFO - Job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 19:41:24 CET)\" executed successfully\n", "2025-12-26 19:40:24,720 - INFO - Running job \" (trigger: interval[0:01:00], next run at: 2025-12-26 19:41:24 CET)\" (scheduled at 2025-12-26 19:40:24.709373+01:00)\n", "2025-12-26 19:40:24,723 - INFO - \n", "πŸ” Checking 1 position(s) for XAUUSD...\n", "2025-12-26 19:40:24,724 - INFO - πŸ“Š Partial TP Levels:\n", "2025-12-26 19:40:24,725 - INFO - Entry: 4514.32000\n", "2025-12-26 19:40:24,726 - INFO - SL: 4505.33000\n", "2025-12-26 19:40:24,728 - INFO - Risk: 8.99000\n", "2025-12-26 19:40:24,729 - INFO - TP1 (1.5R): 4527.80500\n", "2025-12-26 19:40:24,739 - INFO - TP2 (2.5R): 4536.79500\n", "2025-12-26 19:40:24,740 - INFO - Job \" (trigger: interval[0:01:00], next run at: 2025-12-26 19:41:24 CET)\" executed successfully\n", "2025-12-26 19:41:00,069 - INFO - Running job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 19:42:00 CET)\" (scheduled at 2025-12-26 19:41:00+01:00)\n", "2025-12-26 19:41:00,083 - INFO - Job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 19:42:00 CET)\" executed successfully\n", "2025-12-26 19:41:24,705 - INFO - Running job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 19:42:24 CET)\" (scheduled at 2025-12-26 19:41:24.704366+01:00)\n", "2025-12-26 19:41:24,707 - INFO - Job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 19:42:24 CET)\" executed successfully\n", "2025-12-26 19:41:24,717 - INFO - Running job \" (trigger: interval[0:01:00], next run at: 2025-12-26 19:42:24 CET)\" (scheduled at 2025-12-26 19:41:24.709373+01:00)\n", "2025-12-26 19:41:24,719 - INFO - \n", "πŸ” Checking 1 position(s) for XAUUSD...\n", "2025-12-26 19:41:24,723 - INFO - πŸ“ˆ Trailing Stop Trigger for #623421721: Break-Even at 51.1% progress\n", "2025-12-26 19:41:24,834 - INFO - βœ… Trailing Stop updated for #623421721\n", "2025-12-26 19:41:24,836 - INFO - Old SL: 4505.33000\n", "2025-12-26 19:41:24,837 - INFO - New SL: 4514.32000\n", "2025-12-26 19:41:24,840 - INFO - πŸ“Š Partial TP Levels:\n", "2025-12-26 19:41:24,841 - INFO - Entry: 4514.32000\n", "2025-12-26 19:41:24,842 - INFO - SL: 4505.33000\n", "2025-12-26 19:41:24,843 - INFO - Risk: 8.99000\n", "2025-12-26 19:41:24,844 - INFO - TP1 (1.5R): 4527.80500\n", "2025-12-26 19:41:24,845 - INFO - TP2 (2.5R): 4536.79500\n", "2025-12-26 19:41:24,847 - INFO - Job \" (trigger: interval[0:01:00], next run at: 2025-12-26 19:42:24 CET)\" executed successfully\n", "2025-12-26 19:42:00,054 - INFO - Running job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 19:43:00 CET)\" (scheduled at 2025-12-26 19:42:00+01:00)\n", "2025-12-26 19:42:00,067 - INFO - Job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 19:43:00 CET)\" executed successfully\n", "2025-12-26 19:42:24,705 - INFO - Running job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 19:43:24 CET)\" (scheduled at 2025-12-26 19:42:24.704366+01:00)\n", "2025-12-26 19:42:24,707 - INFO - Job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 19:43:24 CET)\" executed successfully\n", "2025-12-26 19:42:24,717 - INFO - Running job \" (trigger: interval[0:01:00], next run at: 2025-12-26 19:43:24 CET)\" (scheduled at 2025-12-26 19:42:24.709373+01:00)\n", "2025-12-26 19:42:24,718 - INFO - \n", "πŸ” Checking 1 position(s) for XAUUSD...\n", "2025-12-26 19:42:24,722 - INFO - πŸ“Š Partial TP Levels:\n", "2025-12-26 19:42:24,733 - INFO - Entry: 4514.32000\n", "2025-12-26 19:42:24,734 - INFO - SL: 4514.32000\n", "2025-12-26 19:42:24,735 - INFO - Risk: 0.00000\n", "2025-12-26 19:42:24,736 - INFO - TP1 (1.5R): 4514.32000\n", "2025-12-26 19:42:24,736 - INFO - TP2 (2.5R): 4514.32000\n", "2025-12-26 19:42:24,738 - INFO - 🎯 Partial TP Trigger for #623421721: TP1 hit: Price 4529.88000 >= TP1 4514.32000\n", "2025-12-26 19:42:24,865 - INFO - βœ… Partial close executed for #623421721\n", "2025-12-26 19:42:24,866 - INFO - Closed: 0.01 lots (50%)\n", "2025-12-26 19:42:24,867 - INFO - Remaining: 0.00 lots\n", "2025-12-26 19:42:24,867 - ERROR - Error closing partial position: 'OrderSendResult' object has no attribute 'profit'\n", "2025-12-26 19:42:24,870 - INFO - Job \" (trigger: interval[0:01:00], next run at: 2025-12-26 19:43:24 CET)\" executed successfully\n", "2025-12-26 19:43:00,063 - INFO - Running job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 19:44:00 CET)\" (scheduled at 2025-12-26 19:43:00+01:00)\n", "2025-12-26 19:43:00,072 - INFO - Job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 19:44:00 CET)\" executed successfully\n", "2025-12-26 19:43:24,706 - INFO - Running job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 19:44:24 CET)\" (scheduled at 2025-12-26 19:43:24.704366+01:00)\n", "2025-12-26 19:43:24,719 - INFO - Running job \" (trigger: interval[0:01:00], next run at: 2025-12-26 19:44:24 CET)\" (scheduled at 2025-12-26 19:43:24.709373+01:00)\n", "2025-12-26 19:43:24,721 - INFO - Job \" (trigger: interval[0:01:00], next run at: 2025-12-26 19:44:24 CET)\" executed successfully\n", "2025-12-26 19:43:24,778 - INFO - βœ… Updated closed position 623421721: manual_close, Profit: -70.90\n", "2025-12-26 19:43:25,205 - INFO - Job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 19:44:24 CET)\" executed successfully\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "⚠️ Telegram send failed: 400\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2025-12-26 19:44:00,050 - INFO - Running job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 19:45:00 CET)\" (scheduled at 2025-12-26 19:44:00+01:00)\n", "2025-12-26 19:44:00,065 - INFO - Job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 19:45:00 CET)\" executed successfully\n", "2025-12-26 19:44:24,705 - INFO - Running job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 19:45:24 CET)\" (scheduled at 2025-12-26 19:44:24.704366+01:00)\n", "2025-12-26 19:44:24,707 - INFO - Job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 19:45:24 CET)\" executed successfully\n", "2025-12-26 19:44:24,715 - INFO - Running job \" (trigger: interval[0:01:00], next run at: 2025-12-26 19:45:24 CET)\" (scheduled at 2025-12-26 19:44:24.709373+01:00)\n", "2025-12-26 19:44:24,716 - INFO - Job \" (trigger: interval[0:01:00], next run at: 2025-12-26 19:45:24 CET)\" executed successfully\n", "2025-12-26 19:45:00,038 - INFO - Running job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 19:46:00 CET)\" (scheduled at 2025-12-26 19:45:00+01:00)\n", "2025-12-26 19:45:00,045 - INFO - \n", "⏰ 2025-12-26 19:45:00 - ADAPTIVE Check\n", "2025-12-26 19:45:00,046 - INFO - βœ… Session: NY - NY allowed: 43.3% WR, $48/trade (needs >=97% conf)\n", "2025-12-26 19:45:00,047 - INFO - πŸ“Š Confidence Threshold: 95%\n", "2025-12-26 19:45:00,048 - INFO - ⏱️ Intervall: 5 min\n", "2025-12-26 19:45:00,160 - INFO - πŸ“Š Adaptive Position Sizing:\n", "2025-12-26 19:45:00,162 - INFO - Confidence: 100.0% (HIGH)\n", "2025-12-26 19:45:00,163 - INFO - Base Risk: 2.0%\n", "2025-12-26 19:45:00,163 - INFO - Multiplier: 1.5x\n", "2025-12-26 19:45:00,164 - INFO - Adjusted Risk: 3.0%\n", "2025-12-26 19:45:00,166 - INFO - πŸ’° Position Size: 0.01 lots\n", "2025-12-26 19:45:00,166 - INFO - Risk Amount: $207.65\n", "2025-12-26 19:45:00,167 - INFO - SL Distance: 76946.11 pips\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "πŸ“Š MULTI-TIMEFRAME REGIME CHECK\n", "============================================================\n", " H1: ADX 25.7 (weight 1.0x) βœ… TREND\n", " H4: ADX 39.9 (weight 2.0x) βœ… TREND\n", " D1: ADX 36.6 (weight 3.0x) βœ… TREND\n", "\n", " Weighted ADX: 35.9\n", " Threshold: 25\n", "\n", " βœ… ALLOWED: TRENDING\n", " Reason: D1 stark trending (ADX 36.6 > 30) β†’ Trend dominiert\n", "============================================================\n", "\n", "βœ… REGIME CHECK PASSED: TRENDING\n", " Reason: D1 stark trending (ADX 36.6 > 30) β†’ Trend dominiert\n", "\n", "πŸ” POSITION CHECK fΓΌr XAUUSD (V1.6 Adaptive Complete)\n", "βœ… Position-Check OK: 0/1\n", "πŸ” Analyzing XAUUSD with V1.6 ADAPTIVE COMPLETE parameters...\n", "\n", "πŸ“Š V1.6 ADAPTIVE COMPLETE Trend-Analyse fΓΌr XAUUSD\n", "⚑ Adaptive Interval: 5 min | Session: NY\n", "🎯 Market Regime: RANGING (Strength: 10%)\n", "🎚️ Adaptive Threshold: 70% (RELAXED)\n", "\n", "+------+---------+------------+---------+----------+---------+\n", "| TF | Trend | Strength | ATR | Slope | Price |\n", "|------+---------+------------+---------+----------+---------|\n", "| D1 | uptrend | 769.12 | 71.3863 | 8.2357 | 4529.75 |\n", "| H4 | uptrend | 600.64 | 28.2406 | 2.54437 | 4529.75 |\n", "| H1 | uptrend | 644.69 | 17.2079 | 1.66406 | 4529.75 |\n", "| M30 | uptrend | 315.06 | 12.4538 | 0.58855 | 4529.77 |\n", "| M15 | uptrend | 201.84 | 9.095 | 0.275358 | 4529.77 |\n", "| M5 | uptrend | 158.97 | 5.6997 | 0.135913 | 4529.77 |\n", "+------+---------+------------+---------+----------+---------+\n", "\n", "➑️ Standard-Trend: uptrend (Strength: 701.73)\n", "➑️ Fast-Trend: uptrend (Required: 2/4)\n", "➑️ Top-Down-Trend: uptrend\n", "➑️ Confidence: 100.0% (Threshold: 70%)\n", "➑️ Risk-Adjusted Strength: 178315.8 (Min: 80)\n", "➑️ Signal Quality: EXCELLENT\n", "\n", "πŸš€ V1.6 Adaptive Complete: Full Features + Adaptive Rhythm\n", "\n", "πŸš€ V1.6 ADAPTIVE COMPLETE TRADE EXECUTION\n", "Direction: LONG\n", "Price: 4529.77000 | Volume: 0.01\n", "SL: 4522.07539 | TP: 4549.00653\n", "Confidence: 100.0% | Quality: EXCELLENT\n", "Regime: RANGING\n", "Adaptive Interval: 5 min\n", "Session: NY\n", "βœ… Trade erfolgreich! Ticket: 623560612\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2025-12-26 19:45:01,062 - INFO - πŸ“± Trade logged to DB + Telegram notification sent\n", "2025-12-26 19:45:01,116 - INFO - Job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 19:46:00 CET)\" executed successfully\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "πŸ“Š Positionen: 1\n", "πŸ“Š Performance logged to trade_performance_v16_XAUUSD_202512.json\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "2025-12-26 19:45:24,706 - INFO - Running job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 19:46:24 CET)\" (scheduled at 2025-12-26 19:45:24.704366+01:00)\n", "2025-12-26 19:45:24,708 - INFO - Job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 19:46:24 CET)\" executed successfully\n", "2025-12-26 19:45:24,753 - INFO - Running job \" (trigger: interval[0:01:00], next run at: 2025-12-26 19:46:24 CET)\" (scheduled at 2025-12-26 19:45:24.709373+01:00)\n", "2025-12-26 19:45:24,758 - INFO - \n", "πŸ” Checking 1 position(s) for XAUUSD...\n", "2025-12-26 19:45:24,760 - INFO - πŸ“Š Partial TP Levels:\n", "2025-12-26 19:45:24,762 - INFO - Entry: 4529.92000\n", "2025-12-26 19:45:24,763 - INFO - SL: 4522.08000\n", "2025-12-26 19:45:24,767 - INFO - Risk: 7.84000\n", "2025-12-26 19:45:24,768 - INFO - TP1 (1.5R): 4541.68000\n", "2025-12-26 19:45:24,769 - INFO - TP2 (2.5R): 4549.52000\n", "2025-12-26 19:45:24,770 - INFO - Job \" (trigger: interval[0:01:00], next run at: 2025-12-26 19:46:24 CET)\" executed successfully\n", "2025-12-26 19:46:00,029 - INFO - Running job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 19:47:00 CET)\" (scheduled at 2025-12-26 19:46:00+01:00)\n", "2025-12-26 19:46:00,037 - INFO - Job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 19:47:00 CET)\" executed successfully\n", "2025-12-26 19:46:24,705 - INFO - Running job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 19:47:24 CET)\" (scheduled at 2025-12-26 19:46:24.704366+01:00)\n", "2025-12-26 19:46:24,707 - INFO - Job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 19:47:24 CET)\" executed successfully\n", "2025-12-26 19:46:24,716 - INFO - Running job \" (trigger: interval[0:01:00], next run at: 2025-12-26 19:47:24 CET)\" (scheduled at 2025-12-26 19:46:24.709373+01:00)\n", "2025-12-26 19:46:24,717 - INFO - \n", "πŸ” Checking 1 position(s) for XAUUSD...\n", "2025-12-26 19:46:24,718 - INFO - πŸ“Š Partial TP Levels:\n", "2025-12-26 19:46:24,722 - INFO - Entry: 4529.92000\n", "2025-12-26 19:46:24,724 - INFO - SL: 4522.08000\n", "2025-12-26 19:46:24,724 - INFO - Risk: 7.84000\n", "2025-12-26 19:46:24,725 - INFO - TP1 (1.5R): 4541.68000\n", "2025-12-26 19:46:24,726 - INFO - TP2 (2.5R): 4549.52000\n", "2025-12-26 19:46:24,726 - INFO - Job \" (trigger: interval[0:01:00], next run at: 2025-12-26 19:47:24 CET)\" executed successfully\n", "2025-12-26 19:47:00,036 - INFO - Running job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 19:48:00 CET)\" (scheduled at 2025-12-26 19:47:00+01:00)\n", "2025-12-26 19:47:00,046 - INFO - Job \"create_protected_trading_check..protected_check (trigger: cron[minute='*'], next run at: 2025-12-26 19:48:00 CET)\" executed successfully\n", "2025-12-26 19:47:24,727 - INFO - Running job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 19:48:24 CET)\" (scheduled at 2025-12-26 19:47:24.704366+01:00)\n", "2025-12-26 19:47:24,727 - INFO - Running job \" (trigger: interval[0:01:00], next run at: 2025-12-26 19:48:24 CET)\" (scheduled at 2025-12-26 19:47:24.709373+01:00)\n", "2025-12-26 19:47:24,733 - INFO - \n", "πŸ” Checking 1 position(s) for XAUUSD...\n", "2025-12-26 19:47:24,735 - INFO - πŸ“Š Partial TP Levels:\n", "2025-12-26 19:47:24,736 - INFO - Entry: 4529.92000\n", "2025-12-26 19:47:24,737 - INFO - SL: 4522.08000\n", "2025-12-26 19:47:24,737 - INFO - Risk: 7.84000\n", "2025-12-26 19:47:24,740 - INFO - TP1 (1.5R): 4541.68000\n", "2025-12-26 19:47:24,741 - INFO - TP2 (2.5R): 4549.52000\n", "2025-12-26 19:47:24,742 - INFO - Job \" (trigger: interval[0:01:00], next run at: 2025-12-26 19:48:24 CET)\" executed successfully\n", "2025-12-26 19:47:24,733 - INFO - Job \"PositionMonitor.check_open_positions (trigger: interval[0:01:00], next run at: 2025-12-26 19:48:24 CET)\" executed successfully\n" ] } ], "source": [ "# Verschiedene Timeframes checken\n", "print(\"πŸ“Š ADX auf verschiedenen Timeframes:\\n\")\n", "\n", "for tf_name, tf in [('M15', mt.TIMEFRAME_M15), ('H1', mt.TIMEFRAME_H1), ('H4', mt.TIMEFRAME_H4), ('D1', mt.TIMEFRAME_D1)]:\n", " rates = mt.copy_rates_from_pos(\"XAUUSD\", tf, 0, 100)\n", " df = pd.DataFrame(rates)\n", " adx_data = ta.adx(df['high'], df['low'], df['close'], length=14)\n", " current_adx = adx_data['ADX_14'].iloc[-1]\n", " \n", " # Preis letzte 10 Bars\n", " price_change = ((df['close'].iloc[-1] - df['close'].iloc[-10]) / df['close'].iloc[-10]) * 100\n", " \n", " print(f\"{tf_name:4s}: ADX = {current_adx:5.2f} | Preis-Change (10 bars): {price_change:+.2f}%\")\n", "\n", "# Aktueller Preis\n", "print(f\"\\nπŸ’° Aktueller Preis: {mt.symbol_info_tick('XAUUSD').bid:.2f}\")" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "base", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.11.5" } }, "nbformat": 4, "nbformat_minor": 4 }