|
|
|
|
@ -5,7 +5,7 @@ The scheduler calls phase methods in order:
|
|
|
|
|
1. run_pre_screen() — 09:20 ET (daily bars + enrichment + quality filter)
|
|
|
|
|
2. run_orb_detection() — 09:40 ET (intraday bars → candidates)
|
|
|
|
|
└─ run_pre_screen 미실행 시 full fallback (daily bars도 자체 fetch)
|
|
|
|
|
3. run_breakout_check() — 09:45...10:15 ET (called 7 times, every 5 min)
|
|
|
|
|
3. run_breakout_check() — every sim_bar_minutes from orb_end until order_timeout
|
|
|
|
|
4. run_stop_check() — every sim_bar_minutes from orb_end until 15:55 ET
|
|
|
|
|
5. run_eod_exit() — 15:55 ET
|
|
|
|
|
6. run_post_close() — 16:00 ET
|
|
|
|
|
@ -463,7 +463,7 @@ class ORBTradingEngine:
|
|
|
|
|
def run_breakout_check(self, date_str: str) -> dict[str, Any]:
|
|
|
|
|
"""Check for breakouts and place orders for unfilled candidates.
|
|
|
|
|
|
|
|
|
|
Called every 5 minutes from 9:45 to 10:15 ET (7 checks total).
|
|
|
|
|
Called every sim_bar_minutes from orb_end until order_timeout elapses.
|
|
|
|
|
"""
|
|
|
|
|
self._date_str = date_str
|
|
|
|
|
|
|
|
|
|
|