from abc import ABC, abstractmethod from shared.models import Candle, Signal class BaseStrategy(ABC): name: str = "base" @property @abstractmethod def warmup_period(self) -> int: pass @abstractmethod def on_candle(self, candle: Candle) -> Signal | None: pass @abstractmethod def configure(self, params: dict) -> None: pass def reset(self) -> None: pass def validate_params(self, params: dict) -> list[str]: """Validate parameters and return list of error messages. Empty = valid.""" return []