diff --git a/alpaca_trader/config.json b/alpaca_trader/config.json index 3198f52..3ea802a 100644 --- a/alpaca_trader/config.json +++ b/alpaca_trader/config.json @@ -2,44 +2,46 @@ "DEBUG_MODE": true, "SYMBOL": "SPY", "BAR_TIMEFRAME": "5Min", - "RISK_PER_TRADE": 0.005, - "SHORT_WINDOW": 20, - "LONG_WINDOW": 50, + "RISK_PER_TRADE": 0.01, + "SHORT_WINDOW": 10, + "LONG_WINDOW": 30, "MIN_NOTIONAL": 1.0, "POLL_INTERVAL": 60, - "MAX_DRAWDOWN": 0.12, + "MAX_DRAWDOWN": 0.08, "PDT_RULE": true, "USE_TRAILING_STOP": true, - "PROFIT_TARGET_1": 1.5, - "PROFIT_TARGET_2": 3.0, + "PROFIT_TARGET_1": 2.0, + "PROFIT_TARGET_2": 4.0, "VOLATILITY_ADJUSTMENT": true, "MARKET_HOURS_FILTER": false, "ENABLE_SLIPPAGE": true, "SLIPPAGE_PCT": 0.0005, "COMMISSION_PCT": 0.0005, - "MIN_SIGNAL_STRENGTH": 0.5, + "MIN_SIGNAL_STRENGTH": 0.0, "BACKTEST_DAYS": 90, - "USE_LIMIT_ORDERS": true, + "USE_LIMIT_ORDERS": false, "LIMIT_ORDER_TIMEOUT": 60, - "ADX_THRESHOLD": 20, + "ADX_THRESHOLD": 25, "VOLUME_MULTIPLIER": 0.5, - "ATR_STOP_MULTIPLIER": 1.5, - "MAX_HOLD_TIME": 7200, + "ATR_STOP_MULTIPLIER": 2.0, + "MAX_HOLD_TIME": 3600, "REGIME_DETECTION": true, - "MULTIFRAME_FILTER": true, + "MULTIFRAME_FILTER": false, "BB_WINDOW": 20, "BB_STD": 2.0, "USE_EMA": true, "REQUIRE_CANDLE_PATTERN": false, "USE_PIVOT_POINTS": false, - "VIX_THRESHOLD": 20, - "USE_VIX_FILTER": true, + "VIX_THRESHOLD": 30, + "USE_VIX_FILTER": false, "USE_FIBONACCI": false, "MAX_TRADES_PER_DAY": 5, "SKIP_MONDAYS_FRIDAYS": false, - "USE_200_SMA_FILTER": true, + "USE_200_SMA_FILTER": false, "REQUIRE_MACD_CONFIRMATION": false, - "MIN_RISK_REWARD": 1.5, + "MIN_RISK_REWARD": 2.0, "PULLBACK_PERCENTAGE": 0.382, - "ENABLE_SHORT_SELLING": true + "ENABLE_SHORT_SELLING": true, + "RSI_BUY_MAX": 55, + "RSI_SELL_MIN": 30 } diff --git a/alpaca_trader/engine.py b/alpaca_trader/engine.py index db3153d..9637f90 100644 --- a/alpaca_trader/engine.py +++ b/alpaca_trader/engine.py @@ -84,7 +84,9 @@ DEFAULT_CONFIG = { "REQUIRE_MACD_CONFIRMATION": False, "MIN_RISK_REWARD": 1.5, "PULLBACK_PERCENTAGE": 0.382, - "ENABLE_SHORT_SELLING": False + "ENABLE_SHORT_SELLING": False, + "RSI_BUY_MAX": 55, + "RSI_SELL_MIN": 45 } if not ENV_PATH.exists(): @@ -184,6 +186,8 @@ REQUIRE_MACD_CONFIRMATION = bool(config["REQUIRE_MACD_CONFIRMATION"]) MIN_RISK_REWARD = float(config["MIN_RISK_REWARD"]) PULLBACK_PERCENTAGE = float(config["PULLBACK_PERCENTAGE"]) ENABLE_SHORT_SELLING = bool(config.get("ENABLE_SHORT_SELLING", False)) +RSI_BUY_MAX = float(config.get("RSI_BUY_MAX", 55)) +RSI_SELL_MIN = float(config.get("RSI_SELL_MIN", 45)) api = AlpacaClient( os.getenv('APCA_API_KEY_ID'), @@ -433,7 +437,7 @@ def advanced_signal_generator(symbol): position_type = None if regime == "trend": - if short_ma > long_ma and rsi_val < 55: + if short_ma > long_ma and rsi_val < RSI_BUY_MAX: if REQUIRE_CANDLE_PATTERN and not bullish_pattern: debug_print("Bullish signal rejected: candle pattern required") elif REQUIRE_MACD_CONFIRMATION and macd_signal != "bullish": @@ -445,7 +449,7 @@ def advanced_signal_generator(symbol): position_type = "long" debug_print(f"BUY signal: strength={strength:.2f}, stop=${stop:.2f}") - if short_ma < long_ma and rsi_val > 45: + if short_ma < long_ma and rsi_val > RSI_SELL_MIN: if REQUIRE_CANDLE_PATTERN and not bearish_pattern: debug_print("Bearish signal rejected: candle pattern required") elif REQUIRE_MACD_CONFIRMATION and macd_signal != "bearish":