Handle invalid symbols (e.g. BF-B) gracefully in ORB detection

Daily bars chunk loop: on failure, retry symbol-by-symbol to isolate
and skip the bad ticker rather than crashing the entire detection.
Intraday bars chunk loop: catch and log failures, continue with rest.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
main
I Luk Kim 4 months ago
parent 84e80fca75
commit aaa960c556

@ -105,7 +105,16 @@ class ORBTradingEngine:
chunk_size = 200 chunk_size = 200
for i in range(0, len(tickers), chunk_size): for i in range(0, len(tickers), chunk_size):
chunk = tickers[i : i + chunk_size] chunk = tickers[i : i + chunk_size]
raw_bars.update(self._broker.get_bars(chunk, start, today)) try:
raw_bars.update(self._broker.get_bars(chunk, start, today))
except Exception as e:
self._log(f" WARNING: daily bars chunk {i//chunk_size+1} failed ({e}) — skipping")
# Retry chunk symbol-by-symbol to isolate the bad ticker(s)
for sym in chunk:
try:
raw_bars.update(self._broker.get_bars([sym], start, today))
except Exception:
self._log(f" Skipping invalid symbol: {sym}")
daily_bars_dict = bars_to_enrichment_format(raw_bars) daily_bars_dict = bars_to_enrichment_format(raw_bars)
@ -137,13 +146,16 @@ class ORBTradingEngine:
chunk_size = 100 chunk_size = 100
for i in range(0, len(tickers), chunk_size): for i in range(0, len(tickers), chunk_size):
chunk = tickers[i : i + chunk_size] chunk = tickers[i : i + chunk_size]
chunk_bars = self._broker.get_intraday_bars( try:
chunk, chunk_bars = self._broker.get_intraday_bars(
start=market_open, chunk,
end=fetch_end, start=market_open,
timeframe_minutes=5, end=fetch_end,
) timeframe_minutes=5,
intraday_raw.update(chunk_bars) )
intraday_raw.update(chunk_bars)
except Exception as e:
self._log(f" WARNING: intraday bars chunk {i//chunk_size+1} failed ({e}) — skipping")
bars_by_ticker = intraday_bars_to_format(intraday_raw) bars_by_ticker = intraday_bars_to_format(intraday_raw)
self._log( self._log(

Loading…
Cancel
Save