From a7adf71dfae5c39b240cd10a6100123dd4364c03 Mon Sep 17 00:00:00 2001 From: Sambit Mishra Date: Sat, 6 Jun 2026 21:00:50 +0530 Subject: [PATCH] feat: Add sma_momentum_crossover strategy --- strategies/sma_momentum_crossover.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 strategies/sma_momentum_crossover.py diff --git a/strategies/sma_momentum_crossover.py b/strategies/sma_momentum_crossover.py new file mode 100644 index 0000000..35ed1a3 --- /dev/null +++ b/strategies/sma_momentum_crossover.py @@ -0,0 +1,18 @@ +import numpy as np +import pandas as pd +import talib as ta + +def _generate_signals(condition_buy, condition_sell, default=0): + conditions = [condition_buy, condition_sell] + choices = [1, -1] + return np.select(conditions, choices, default=default) + +def SMA_MOMENTUM_CROSSOVER_indicator(data, short_period=10, long_period=50): + \"\"\"Vectorized SMA Momentum Crossover strategy.\"\"\" + short_sma = ta.SMA(data["Close"], timeperiod=short_period) + long_sma = ta.SMA(data["Close"], timeperiod=long_period) + data["SMA_MOMENTUM_CROSSOVER_indicator"] = _generate_signals( + condition_buy=(short_sma > long_sma) & (short_sma.shift(1) <= long_sma.shift(1)), + condition_sell=(short_sma < long_sma) & (short_sma.shift(1) >= long_sma.shift(1)) + ) + return data["SMA_MOMENTUM_CROSSOVER_indicator"]