ProfilingAI / src /models /signals.py
Sandrine Guétin
Version propre de DeepVest
2106f78
raw
history blame
705 Bytes
from dataclasses import dataclass
from datetime import datetime
from enum import Enum
from typing import Optional, Any
class SignalType(Enum):
BUY = "BUY"
SELL = "SELL"
HOLD = "HOLD"
@dataclass
class StrategySignal:
timestamp: datetime
symbol: str
signal_type: SignalType
price: float
quantity: Optional[float] = None
confidence: Optional[float] = None
metadata: Optional[dict] = None
def __post_init__(self):
if isinstance(self.timestamp, str):
self.timestamp = datetime.fromisoformat(self.timestamp.replace('Z', '+00:00'))
if isinstance(self.signal_type, str):
self.signal_type = SignalType[self.signal_type.upper()]