more training
This commit is contained in:
@ -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:
|
||||
|
Reference in New Issue
Block a user