from dataclasses import dataclass, field from typing import Tuple, Dict @dataclass class TechnicalIndicators: """Container for technical indicators""" rsi: float = 50.0 macd: Tuple[float, float] = (0.0, 0.0) # (MACD, Signal) bollinger: Tuple[float, float, float] = (0.0, 0.0, 0.0) # (Upper, Middle, Lower) moving_averages: Dict[str, float] = field(default_factory=lambda: { 'MA_20': 0.0, 'MA_50': 0.0, 'MA_200': 0.0 }) volume_profile: Dict[str, float] = field(default_factory=lambda: { 'vwap': 0.0, 'volume_ma': 0.0 }) momentum_indicators: Dict[str, float] = field(default_factory=lambda: { 'ROC': 0.0, 'ADX': 50.0 }) @classmethod def get_default(cls) -> 'TechnicalIndicators': """Get default technical indicators""" return cls() # Optional: methods for calculation if needed in the future def calculate_rsi(self, price): # Placeholder for RSI calculation return 50.0 def calculate_macd(self, price): # Placeholder for MACD calculation return (0.0, 0.0) def calculate_bollinger_bands(self, price): # Placeholder for Bollinger Bands calculation return (0.0, 0.0, 0.0) def calculate_moving_averages(self, price): # Placeholder for moving averages calculation return { 'MA_20': 0.0, 'MA_50': 0.0, 'MA_200': 0.0 } def calculate_momentum_indicators(self, price): # Placeholder for momentum indicators calculation return { 'ROC': 0.0, 'ADX': 50.0 }