fix TA warning

This commit is contained in:
Dobromir Popov
2025-07-27 20:11:37 +03:00
parent 64dbfa3780
commit ff66cb8b79
3 changed files with 53 additions and 11 deletions

View File

@ -81,9 +81,15 @@ class ModelStatistics:
"""Statistics for tracking model performance and inference metrics"""
model_name: str
last_inference_time: Optional[datetime] = None
last_training_time: Optional[datetime] = None
total_inferences: int = 0
total_trainings: int = 0
inference_rate_per_minute: float = 0.0
inference_rate_per_second: float = 0.0
training_rate_per_minute: float = 0.0
training_rate_per_second: float = 0.0
average_inference_time_ms: float = 0.0
average_training_time_ms: float = 0.0
current_loss: Optional[float] = None
average_loss: Optional[float] = None
best_loss: Optional[float] = None
@ -92,10 +98,14 @@ class ModelStatistics:
last_prediction: Optional[str] = None
last_confidence: Optional[float] = None
inference_times: deque = field(default_factory=lambda: deque(maxlen=100)) # Last 100 inference times
training_times: deque = field(default_factory=lambda: deque(maxlen=100)) # Last 100 training times
inference_durations_ms: deque = field(default_factory=lambda: deque(maxlen=100)) # Last 100 inference durations
training_durations_ms: deque = field(default_factory=lambda: deque(maxlen=100)) # Last 100 training durations
losses: deque = field(default_factory=lambda: deque(maxlen=100)) # Last 100 losses
predictions_history: deque = field(default_factory=lambda: deque(maxlen=50)) # Last 50 predictions
def update_inference_stats(self, prediction: Optional[Prediction] = None, loss: Optional[float] = None):
def update_inference_stats(self, prediction: Optional[Prediction] = None, loss: Optional[float] = None,
inference_duration_ms: Optional[float] = None):
"""Update inference statistics"""
current_time = datetime.now()
@ -104,6 +114,12 @@ class ModelStatistics:
self.total_inferences += 1
self.inference_times.append(current_time)
# Update inference duration
if inference_duration_ms is not None:
self.inference_durations_ms.append(inference_duration_ms)
if self.inference_durations_ms:
self.average_inference_time_ms = sum(self.inference_durations_ms) / len(self.inference_durations_ms)
# Calculate inference rates
if len(self.inference_times) > 1:
time_window = (self.inference_times[-1] - self.inference_times[0]).total_seconds()
@ -4483,8 +4499,9 @@ class TradingOrchestrator:
# Calculate basic technical indicators
indicators = {}
try:
import ta
indicators['rsi'] = ta.momentum.RSIIndicator(df['close']).rsi().iloc[-1]
# Use our own RSI implementation to avoid ta library deprecation warnings
if len(df) >= 14:
indicators['rsi'] = self._calculate_rsi(df['close'], period=14)
indicators['sma_20'] = df['close'].rolling(20).mean().iloc[-1]
indicators['ema_12'] = df['close'].ewm(span=12).mean().iloc[-1]
indicators['ema_26'] = df['close'].ewm(span=26).mean().iloc[-1]
@ -4594,9 +4611,9 @@ class TradingOrchestrator:
# Calculate indicators
indicators = {}
try:
import ta
# Use our own RSI implementation to avoid ta library deprecation warnings
if len(df) >= 14:
indicators['rsi'] = ta.momentum.RSIIndicator(df['close']).rsi().iloc[-1]
indicators['rsi'] = self._calculate_rsi(df['close'], period=14)
if len(df) >= 20:
indicators['sma_20'] = df['close'].rolling(20).mean().iloc[-1]
if len(df) >= 12: