From d4b40e4a1c801bbe8df1e318219ddaea4cee65e2 Mon Sep 17 00:00:00 2001 From: Justin Oros Date: Wed, 25 Feb 2026 12:35:09 -0700 Subject: [PATCH] fix: pass start date to get_recent_bars for correct daily bar retrieval --- alpaca_trader/config.json | 18 +++++++++--------- alpaca_trader/engine.py | 4 +++- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/alpaca_trader/config.json b/alpaca_trader/config.json index c10a346..2462339 100644 --- a/alpaca_trader/config.json +++ b/alpaca_trader/config.json @@ -1,12 +1,12 @@ { "DEBUG_MODE": true, "SYMBOL": "SPY", - "BAR_TIMEFRAME": "15Min", + "BAR_TIMEFRAME": "1Day", "RISK_PER_TRADE": 0.01, "SHORT_WINDOW": 20, "LONG_WINDOW": 50, "MIN_NOTIONAL": 1.0, - "POLL_INTERVAL": 300, + "POLL_INTERVAL": 3600, "MAX_DRAWDOWN": 0.08, "PDT_RULE": true, "USE_TRAILING_STOP": true, @@ -17,14 +17,14 @@ "ENABLE_SLIPPAGE": true, "SLIPPAGE_PCT": 0.0005, "COMMISSION_PCT": 0.0005, - "MIN_SIGNAL_STRENGTH": 0.4, + "MIN_SIGNAL_STRENGTH": 0.6, "BACKTEST_DAYS": 90, "USE_LIMIT_ORDERS": false, "LIMIT_ORDER_TIMEOUT": 60, - "ADX_THRESHOLD": 25, + "ADX_THRESHOLD": 30, "VOLUME_MULTIPLIER": 0.7, - "ATR_STOP_MULTIPLIER": 2.0, - "MAX_HOLD_TIME": 10800, + "ATR_STOP_MULTIPLIER": 2.5, + "MAX_HOLD_TIME": 86400, "REGIME_DETECTION": true, "MULTIFRAME_FILTER": true, "BB_WINDOW": 20, @@ -35,14 +35,14 @@ "VIX_THRESHOLD": 30, "USE_VIX_FILTER": false, "USE_FIBONACCI": false, - "MAX_TRADES_PER_DAY": 3, + "MAX_TRADES_PER_DAY": 1, "SKIP_MONDAYS_FRIDAYS": false, "USE_200_SMA_FILTER": true, - "REQUIRE_MACD_CONFIRMATION": false, + "REQUIRE_MACD_CONFIRMATION": true, "MIN_RISK_REWARD": 2.0, "PULLBACK_PERCENTAGE": 0.382, "ENABLE_SHORT_SELLING": false, - "RSI_BUY_MAX": 65, + "RSI_BUY_MAX": 60, "RSI_SELL_MIN": 35, "RSI_SELL_MAX": 70, "RSI_RANGE_OVERSOLD": 30, diff --git a/alpaca_trader/engine.py b/alpaca_trader/engine.py index bd3940f..f071086 100644 --- a/alpaca_trader/engine.py +++ b/alpaca_trader/engine.py @@ -664,7 +664,9 @@ def fetch_buying_power(settlement_tracker=None): def get_recent_bars(symbol, limit=100): debug_print(f"Fetching {limit} bars for {symbol} ({BAR_TIMEFRAME})") try: - bars = api.get_bars(symbol, BAR_TIMEFRAME, limit=limit) + buffer = int(limit * 1.5) + start = (datetime.now(EASTERN) - timedelta(days=buffer)).strftime("%Y-%m-%d") + bars = api.get_bars(symbol, BAR_TIMEFRAME, limit=limit, start=start) if bars is None or len(bars) == 0: debug_print(f"No bars returned for {symbol}") return None