diff --git a/apps/orb_trader/engine.py b/apps/orb_trader/engine.py index cf99b00..2d871db 100644 --- a/apps/orb_trader/engine.py +++ b/apps/orb_trader/engine.py @@ -129,6 +129,22 @@ class ORBTradingEngine: self._session.session_id, date_str, phase="pre_screen" ) + # Cheap Oracle health probe — warns early so the operator can restart Oracle + # before the bar-fetch loop (5 chunks × 15s timeout) burns 75s silently. + try: + import httpx as _httpx + from libs.oracle_client.alpaca import _base_url as _oracle_base_url + _oracle_health_url = _oracle_base_url() + "/api/v1/health" + _r = _httpx.get(_oracle_health_url, timeout=3.0) + _ok = _r.status_code < 400 + except Exception: + _ok = False + if not _ok: + self._log( + "CRITICAL: Oracle is unreachable — bar fetches will likely fail. " + "Start Oracle before 09:20 ET on live trading days." + ) + universe_source = getattr(self._params, "_universe_source", "midlarge") universe_symbols_file = getattr(self._params, "_universe_symbols_file", None) tickers = load_universe(universe_source, universe_symbols_file)