summaryrefslogtreecommitdiff
path: root/services/strategy-engine/strategies/base.py
blob: cf5e6e47222bb385bfb1cc19fa3013f69b55801d (plain)
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
26
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 []