more training

This commit is contained in:
Dobromir Popov
2025-05-27 01:46:15 +03:00
parent 97d348d517
commit 2ba0406b9f
7 changed files with 1708 additions and 444 deletions

View File

@ -205,6 +205,16 @@ class RealTimeScalpingDashboard:
logger.info(" 4. ETH/USDT 1d")
logger.info(" 5. BTC/USDT ticks (reference)")
# Preload 300s of data for better initial performance
logger.info("PRELOADING 300s OF DATA FOR INITIAL PERFORMANCE:")
preload_results = self.data_provider.preload_all_symbols_data(['1s', '1m', '5m', '15m', '1h', '1d'])
# Log preload results
for symbol, timeframe_results in preload_results.items():
for timeframe, success in timeframe_results.items():
status = "" if success else ""
logger.info(f" {status} {symbol} {timeframe}")
# Test universal data adapter
try:
universal_stream = self.orchestrator.universal_adapter.get_universal_data_stream()
@ -503,6 +513,7 @@ class RealTimeScalpingDashboard:
logger.info("WebSocket price streaming enabled")
logger.info(f"Timezone: {self.timezone}")
logger.info(f"Session Balance: ${self.trading_session.starting_balance:.2f}")
logger.info("300s data preloading completed for faster initial performance")
def _setup_layout(self):
"""Setup the ultra-fast real-time dashboard layout"""
@ -1794,7 +1805,7 @@ class RealTimeScalpingDashboard:
return fig
def _create_model_training_status(self):
"""Create enhanced model training progress display with perfect opportunity detection"""
"""Create enhanced model training progress display with perfect opportunity detection and sensitivity learning"""
try:
# Get model training metrics from orchestrator
if hasattr(self.orchestrator, 'get_performance_metrics'):
@ -1811,6 +1822,9 @@ class RealTimeScalpingDashboard:
is_rl_training = rl_queue_size > 0
is_cnn_training = perfect_moves_count > 0
# Get sensitivity learning information
sensitivity_info = self._get_sensitivity_learning_info()
return html.Div([
html.Div([
html.H6("RL Training", className="text-success" if is_rl_training else "text-warning"),
@ -1819,7 +1833,7 @@ class RealTimeScalpingDashboard:
html.P(f"Queue Size: {rl_queue_size}", className="text-white"),
html.P(f"Win Rate: {metrics.get('win_rate', 0)*100:.1f}%", className="text-white"),
html.P(f"Actions: {metrics.get('total_actions', 0)}", className="text-white")
], className="col-md-6"),
], className="col-md-4"),
html.Div([
html.H6("CNN Training", className="text-success" if is_cnn_training else "text-warning"),
@ -1829,7 +1843,17 @@ class RealTimeScalpingDashboard:
html.P(f"Confidence: {metrics.get('confidence_threshold', 0.6):.2f}", className="text-white"),
html.P(f"Retrospective: {'ON' if recent_perfect_moves else 'OFF'}",
className="text-success" if recent_perfect_moves else "text-muted")
], className="col-md-6")
], className="col-md-4"),
html.Div([
html.H6("DQN Sensitivity", className="text-info"),
html.P(f"Level: {sensitivity_info['level_name']}",
className="text-info"),
html.P(f"Completed Trades: {sensitivity_info['completed_trades']}", className="text-white"),
html.P(f"Learning Queue: {sensitivity_info['learning_queue_size']}", className="text-white"),
html.P(f"Open: {sensitivity_info['open_threshold']:.3f} | Close: {sensitivity_info['close_threshold']:.3f}",
className="text-white")
], className="col-md-4")
], className="row")
else:
return html.Div([
@ -1842,6 +1866,45 @@ class RealTimeScalpingDashboard:
html.P("Error loading model status", className="text-danger")
])
def _get_sensitivity_learning_info(self) -> Dict[str, Any]:
"""Get sensitivity learning information from orchestrator"""
try:
if hasattr(self.orchestrator, 'sensitivity_learning_enabled') and self.orchestrator.sensitivity_learning_enabled:
current_level = getattr(self.orchestrator, 'current_sensitivity_level', 2)
sensitivity_levels = getattr(self.orchestrator, 'sensitivity_levels', {})
level_name = sensitivity_levels.get(current_level, {}).get('name', 'medium')
completed_trades = len(getattr(self.orchestrator, 'completed_trades', []))
learning_queue_size = len(getattr(self.orchestrator, 'sensitivity_learning_queue', []))
open_threshold = getattr(self.orchestrator, 'confidence_threshold_open', 0.6)
close_threshold = getattr(self.orchestrator, 'confidence_threshold_close', 0.25)
return {
'level_name': level_name.upper(),
'completed_trades': completed_trades,
'learning_queue_size': learning_queue_size,
'open_threshold': open_threshold,
'close_threshold': close_threshold
}
else:
return {
'level_name': 'DISABLED',
'completed_trades': 0,
'learning_queue_size': 0,
'open_threshold': 0.6,
'close_threshold': 0.25
}
except Exception as e:
logger.error(f"Error getting sensitivity learning info: {e}")
return {
'level_name': 'ERROR',
'completed_trades': 0,
'learning_queue_size': 0,
'open_threshold': 0.6,
'close_threshold': 0.25
}
def _create_orchestrator_status(self):
"""Create orchestrator data flow status"""
try: