File size: 705 Bytes
2106f78
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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()]