try to fix training

This commit is contained in:
Dobromir Popov
2025-06-27 00:52:38 +03:00
parent 18a6fb2fa8
commit 63f26a6749
6 changed files with 215 additions and 25 deletions

48
.vscode/launch.json vendored
View File

@ -1,15 +1,32 @@
{
"version": "0.2.0",
"configurations": [
{
"name": "📊 Enhanced Web Dashboard",
"name": "📊 Enhanced Web Dashboard (Safe)",
"type": "python",
"request": "launch",
"program": "main.py",
"program": "main_clean.py",
"args": [
"--port",
"8050"
"8051",
"--no-training"
],
"console": "integratedTerminal",
"justMyCode": false,
"env": {
"PYTHONUNBUFFERED": "1",
"ENABLE_REALTIME_CHARTS": "1"
},
"preLaunchTask": "Kill Stale Processes"
},
{
"name": "📊 Enhanced Web Dashboard (Full)",
"type": "python",
"request": "launch",
"program": "main_clean.py",
"args": [
"--port",
"8051"
],
"console": "integratedTerminal",
"justMyCode": false,
@ -20,6 +37,29 @@
},
"preLaunchTask": "Kill Stale Processes"
},
{
"name": "📊 Clean Dashboard (Legacy)",
"type": "python",
"request": "launch",
"program": "run_clean_dashboard.py",
"console": "integratedTerminal",
"justMyCode": false,
"env": {
"PYTHONUNBUFFERED": "1",
"ENABLE_REALTIME_CHARTS": "1"
}
},
{
"name": "🚀 Main System",
"type": "python",
"request": "launch",
"program": "main.py",
"console": "integratedTerminal",
"justMyCode": false,
"env": {
"PYTHONUNBUFFERED": "1"
}
},
{
"name": "🔬 System Test & Validation",
"type": "python",

19
.vscode/tasks.json vendored
View File

@ -4,20 +4,21 @@
{
"label": "Kill Stale Processes",
"type": "shell",
"command": "python",
"command": "powershell",
"args": [
"scripts/kill_stale_processes.py"
"-Command",
"Get-Process python | Where-Object {$_.ProcessName -eq 'python' -and $_.MainWindowTitle -like '*dashboard*'} | Stop-Process -Force; Start-Sleep -Seconds 1"
],
"group": "build",
"presentation": {
"reveal": "always",
"echo": true,
"reveal": "silent",
"focus": false,
"panel": "shared",
"clear": true
"showReuseMessage": false,
"clear": false
},
"problemMatcher": [],
"group": {
"kind": "build",
"isDefault": false
}
"problemMatcher": []
},
{
"label": "Start TensorBoard",

View File

@ -33,7 +33,17 @@ import json
from .config import get_config
from .data_provider import DataProvider, MarketTick
from .universal_data_adapter import UniversalDataAdapter, UniversalDataStream
from .enhanced_orchestrator import MarketState, TradingAction
from .trading_action import TradingAction
# Simple MarketState placeholder
@dataclass
class MarketState:
"""Market state for unified data stream"""
timestamp: datetime
symbol: str
price: float
volume: float
data: Dict[str, Any] = field(default_factory=dict)
logger = logging.getLogger(__name__)

133
main_clean.py Normal file
View File

@ -0,0 +1,133 @@
#!/usr/bin/env python3
"""
Clean Main Entry Point for Enhanced Trading Dashboard
This is the main entry point that safely launches the clean dashboard
with proper error handling and optimized settings.
"""
import os
import sys
import logging
import argparse
from typing import Optional
# Add project root to path
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
# Import core components
try:
from core.config import setup_logging
from core.data_provider import DataProvider
from core.orchestrator import TradingOrchestrator
from core.trading_executor import TradingExecutor
from web.clean_dashboard import create_clean_dashboard
except ImportError as e:
print(f"Error importing core modules: {e}")
sys.exit(1)
logger = logging.getLogger(__name__)
def create_safe_orchestrator() -> Optional[TradingOrchestrator]:
"""Create orchestrator with safe CNN model handling"""
try:
# Create orchestrator with basic configuration (uses correct constructor parameters)
orchestrator = TradingOrchestrator(
enhanced_rl_training=False # Disable problematic training initially
)
logger.info("Trading orchestrator created successfully")
return orchestrator
except Exception as e:
logger.error(f"Error creating orchestrator: {e}")
logger.info("Continuing without orchestrator - dashboard will run in view-only mode")
return None
def create_safe_trading_executor() -> Optional[TradingExecutor]:
"""Create trading executor with safe configuration"""
try:
# TradingExecutor only accepts config_path parameter
trading_executor = TradingExecutor(config_path="config.yaml")
logger.info("Trading executor created successfully")
return trading_executor
except Exception as e:
logger.error(f"Error creating trading executor: {e}")
logger.info("Continuing without trading executor - dashboard will be view-only")
return None
def main():
"""Main entry point for clean dashboard"""
parser = argparse.ArgumentParser(description='Enhanced Trading Dashboard')
parser.add_argument('--port', type=int, default=8050, help='Dashboard port (default: 8050)')
parser.add_argument('--host', type=str, default='127.0.0.1', help='Dashboard host (default: 127.0.0.1)')
parser.add_argument('--debug', action='store_true', help='Enable debug mode')
parser.add_argument('--no-training', action='store_true', help='Disable ML training for stability')
args = parser.parse_args()
# Setup logging
try:
setup_logging()
logger.info("================================================================================")
logger.info("CLEAN ENHANCED TRADING DASHBOARD")
logger.info("================================================================================")
logger.info(f"Starting on http://{args.host}:{args.port}")
logger.info("Features: Real-time Charts, Trading Interface, Model Monitoring")
logger.info("================================================================================")
except Exception as e:
print(f"Error setting up logging: {e}")
# Continue without logging setup
# Set environment variables for optimization
os.environ['ENABLE_REALTIME_CHARTS'] = '1'
if not args.no_training:
os.environ['ENABLE_NN_MODELS'] = '1'
try:
# Create data provider
logger.info("Initializing data provider...")
data_provider = DataProvider(symbols=['ETH/USDT', 'BTC/USDT'])
# Create orchestrator (with safe CNN handling)
logger.info("Initializing trading orchestrator...")
orchestrator = create_safe_orchestrator()
# Create trading executor
logger.info("Initializing trading executor...")
trading_executor = create_safe_trading_executor()
# Create and run dashboard
logger.info("Creating clean dashboard...")
dashboard = create_clean_dashboard(
data_provider=data_provider,
orchestrator=orchestrator,
trading_executor=trading_executor
)
# Start the dashboard server
logger.info(f"Starting dashboard server on http://{args.host}:{args.port}")
dashboard.run_server(
host=args.host,
port=args.port,
debug=args.debug
)
except KeyboardInterrupt:
logger.info("Dashboard stopped by user")
except Exception as e:
logger.error(f"Error running dashboard: {e}")
# Try to provide helpful error message
if "model.fit" in str(e) or "CNN" in str(e):
logger.error("CNN model training error detected. Try running with --no-training flag")
logger.error("Command: python main_clean.py --no-training")
sys.exit(1)
finally:
logger.info("Clean dashboard shutdown complete")
if __name__ == '__main__':
main()

View File

@ -965,8 +965,12 @@ class WilliamsMarketStructure:
logger.info(f"CNN Training with X_shape: {X_train_batch.shape}, y_shape: {y_train_batch.shape}")
# Perform a single step of training (online learning)
# Use the wrapper's fit method, not the model's directly
self.cnn_model.fit(X_train_batch, y_train_batch, batch_size=1, epochs=1, verbose=0, callbacks=[])
logger.info(f"CNN online training step completed for pivot at index {self.previous_pivot_details_for_cnn['pivot'].index}.")
try:
self.cnn_model.fit(X_train_batch, y_train_batch, batch_size=1, epochs=1, verbose=0, callbacks=[])
logger.info(f"CNN online training step completed for pivot at index {self.previous_pivot_details_for_cnn['pivot'].index}.")
except Exception as fit_error:
logger.error(f"CNN model fit error: {fit_error}")
logger.warning("CNN training step failed - continuing without training")
else:
logger.warning("CNN Training: Skipping due to invalid X_train or y_train.")

View File

@ -69,14 +69,16 @@ except ImportError:
COB_INTEGRATION_AVAILABLE = False
logger.warning("COB integration not available")
# Add Universal Data Stream imports
try:
from core.unified_data_stream import UnifiedDataStream
from core.universal_data_adapter import UniversalDataAdapter, UniversalDataStream as UDS
UNIFIED_STREAM_AVAILABLE = True
except ImportError:
UNIFIED_STREAM_AVAILABLE = False
logger.warning("Unified Data Stream not available")
# Universal Data Stream - temporarily disabled due to import issues
UNIFIED_STREAM_AVAILABLE = False
# Placeholder class for disabled Universal Data Stream
class UnifiedDataStream:
"""Placeholder for disabled Universal Data Stream"""
def __init__(self, *args, **kwargs):
pass
def register_consumer(self, *args, **kwargs):
return "disabled"
# Import RL COB trader for 1B parameter model integration
from core.realtime_rl_cob_trader import RealtimeRLCOBTrader, PredictionResult
@ -2133,7 +2135,7 @@ class CleanTradingDashboard:
opening_trade_record = {
'symbol': symbol,
'side': action,
'quantity': size,
'quantity': decision['size'], # Use size from decision
'entry_price': current_price,
'leverage': self.current_leverage, # Store leverage at entry
'pnl': 0.0, # Will be updated when position closes