summaryrefslogtreecommitdiff
path: root/services/strategy-engine/strategies/rsi_strategy.py
diff options
context:
space:
mode:
Diffstat (limited to 'services/strategy-engine/strategies/rsi_strategy.py')
-rw-r--r--services/strategy-engine/strategies/rsi_strategy.py10
1 files changed, 10 insertions, 0 deletions
diff --git a/services/strategy-engine/strategies/rsi_strategy.py b/services/strategy-engine/strategies/rsi_strategy.py
index c37957d..59946f4 100644
--- a/services/strategy-engine/strategies/rsi_strategy.py
+++ b/services/strategy-engine/strategies/rsi_strategy.py
@@ -44,6 +44,16 @@ class RsiStrategy(BaseStrategy):
self._overbought = float(params.get("overbought", 70))
self._quantity = Decimal(str(params.get("quantity", "0.01")))
+ if self._period < 2:
+ raise ValueError(f"RSI period must be >= 2, got {self._period}")
+ if not (0 < self._oversold < self._overbought < 100):
+ raise ValueError(
+ f"RSI thresholds must be 0 < oversold < overbought < 100, "
+ f"got oversold={self._oversold}, overbought={self._overbought}"
+ )
+ if self._quantity <= 0:
+ raise ValueError(f"Quantity must be positive, got {self._quantity}")
+
def reset(self) -> None:
self._closes.clear()