Add 200 SMA filter implementation and optimize config for 15Min bars

This commit is contained in:
justin committed 2026-02-09 14:39:38 -07:00
1 parent bf3d13d47f
commit e21bf3c8dd
2 files changed
+17 -11

No files matched your search

+2 -2
View File
@@ -6,7 +6,7 @@
"SHORT_WINDOW": 20, "SHORT_WINDOW": 20,
"LONG_WINDOW": 50, "LONG_WINDOW": 50,
"MIN_NOTIONAL": 1.0, "MIN_NOTIONAL": 1.0,
"POLL_INTERVAL": 60, "POLL_INTERVAL": 300,
"MAX_DRAWDOWN": 0.08, "MAX_DRAWDOWN": 0.08,
"PDT_RULE": false, "PDT_RULE": false,
"USE_TRAILING_STOP": true, "USE_TRAILING_STOP": true,
@@ -24,7 +24,7 @@
"ADX_THRESHOLD": 25, "ADX_THRESHOLD": 25,
"VOLUME_MULTIPLIER": 0.7, "VOLUME_MULTIPLIER": 0.7,
"ATR_STOP_MULTIPLIER": 2.0, "ATR_STOP_MULTIPLIER": 2.0,
"MAX_HOLD_TIME": 7200, "MAX_HOLD_TIME": 10800,
"REGIME_DETECTION": true, "REGIME_DETECTION": true,
"MULTIFRAME_FILTER": true, "MULTIFRAME_FILTER": true,
"BB_WINDOW": 20, "BB_WINDOW": 20,
+15 -9
View File
@@ -60,17 +60,17 @@ ENV_PATH = SCRIPT_DIR / ".env"
DEFAULT_CONFIG = { DEFAULT_CONFIG = {
"DEBUG_MODE": True, "DEBUG_MODE": True,
"SYMBOL": "SPY", "SYMBOL": "SPY",
"BAR_TIMEFRAME": "5Min", "BAR_TIMEFRAME": "15Min",
"RISK_PER_TRADE": 0.01, "RISK_PER_TRADE": 0.01,
"SHORT_WINDOW": 10, "SHORT_WINDOW": 20,
"LONG_WINDOW": 30, "LONG_WINDOW": 50,
"MIN_NOTIONAL": 1.0, "MIN_NOTIONAL": 1.0,
"POLL_INTERVAL": 30, "POLL_INTERVAL": 300,
"MAX_DRAWDOWN": 0.08, "MAX_DRAWDOWN": 0.08,
"PDT_RULE": False, "PDT_RULE": False,
"USE_TRAILING_STOP": True, "USE_TRAILING_STOP": True,
"PROFIT_TARGET_1": 2.0, "PROFIT_TARGET_1": 2.0,
"PROFIT_TARGET_2": 4.0, "PROFIT_TARGET_2": 3.0,
"VOLATILITY_ADJUSTMENT": True, "VOLATILITY_ADJUSTMENT": True,
"MARKET_HOURS_FILTER": False, "MARKET_HOURS_FILTER": False,
"ENABLE_SLIPPAGE": True, "ENABLE_SLIPPAGE": True,
@@ -80,12 +80,12 @@ DEFAULT_CONFIG = {
"BACKTEST_DAYS": 90, "BACKTEST_DAYS": 90,
"USE_LIMIT_ORDERS": False, "USE_LIMIT_ORDERS": False,
"LIMIT_ORDER_TIMEOUT": 60, "LIMIT_ORDER_TIMEOUT": 60,
"ADX_THRESHOLD": 30, "ADX_THRESHOLD": 25,
"VOLUME_MULTIPLIER": 0.7, "VOLUME_MULTIPLIER": 0.7,
"ATR_STOP_MULTIPLIER": 2.0, "ATR_STOP_MULTIPLIER": 2.0,
"MAX_HOLD_TIME": 3600, "MAX_HOLD_TIME": 10800,
"REGIME_DETECTION": True, "REGIME_DETECTION": True,
"MULTIFRAME_FILTER": False, "MULTIFRAME_FILTER": True,
"BB_WINDOW": 20, "BB_WINDOW": 20,
"BB_STD": 2.0, "BB_STD": 2.0,
"USE_EMA": True, "USE_EMA": True,
@@ -96,7 +96,7 @@ DEFAULT_CONFIG = {
"USE_FIBONACCI": False, "USE_FIBONACCI": False,
"MAX_TRADES_PER_DAY": 3, "MAX_TRADES_PER_DAY": 3,
"SKIP_MONDAYS_FRIDAYS": False, "SKIP_MONDAYS_FRIDAYS": False,
"USE_200_SMA_FILTER": False, "USE_200_SMA_FILTER": True,
"REQUIRE_MACD_CONFIRMATION": False, "REQUIRE_MACD_CONFIRMATION": False,
"MIN_RISK_REWARD": 2.0, "MIN_RISK_REWARD": 2.0,
"PULLBACK_PERCENTAGE": 0.382, "PULLBACK_PERCENTAGE": 0.382,
@@ -1075,6 +1075,12 @@ def advanced_signal_generator(symbol):
debug_print("Volume filter failed: insufficient data") debug_print("Volume filter failed: insufficient data")
return None, 0, 0, None return None, 0, 0, None
if USE_200_SMA_FILTER:
sma_200_pass = check_200_sma_filter(symbol, api)
if not sma_200_pass:
debug_print("200 SMA filter failed: price below 200 SMA")
return None, 0, 0, None
bullish_pattern, bearish_pattern = check_candle_pattern(bars) bullish_pattern, bearish_pattern = check_candle_pattern(bars)
macd_signal = check_macd_confirmation(bars) macd_signal = check_macd_confirmation(bars)
multiframe_trend = check_multiframe_confluence(SYMBOL, USE_EMA, api) if MULTIFRAME_FILTER else "neutral" multiframe_trend = check_multiframe_confluence(SYMBOL, USE_EMA, api) if MULTIFRAME_FILTER else "neutral"