diff --git a/ai_trade/config.py b/ai_trade/config.py index 53c793a..d120605 100644 --- a/ai_trade/config.py +++ b/ai_trade/config.py @@ -53,6 +53,9 @@ class Settings: min_momentum_for_buy: str = field( default_factory=lambda: os.getenv("MIN_MOMENTUM_FOR_BUY", "strong_up") ) + signal_ttl_seconds: int = field( + default_factory=lambda: int(os.getenv("SIGNAL_TTL_SECONDS", "300")) + ) @property def kis_is_virtual(self) -> bool: diff --git a/ai_trade/tests/test_state_signals_lifecycle.py b/ai_trade/tests/test_state_signals_lifecycle.py index ba785b9..310a9dd 100644 --- a/ai_trade/tests/test_state_signals_lifecycle.py +++ b/ai_trade/tests/test_state_signals_lifecycle.py @@ -48,3 +48,19 @@ def test_purge_expired_signals_removes_expired(): assert "A" in state.signals assert "B" not in state.signals assert removed == 1 + + +# ----- SIGNAL_TTL_SECONDS env ----- + +def test_signal_ttl_seconds_default(monkeypatch): + monkeypatch.delenv("SIGNAL_TTL_SECONDS", raising=False) + from ai_trade.config import Settings + s = Settings() + assert s.signal_ttl_seconds == 300 + + +def test_signal_ttl_seconds_env_override(monkeypatch): + monkeypatch.setenv("SIGNAL_TTL_SECONDS", "60") + from ai_trade.config import Settings + s = Settings() + assert s.signal_ttl_seconds == 60