Remove Oanda auto-execution daemon/executor (not auto-trading)

Deletes oanda_daemon.py, oanda_executor.py, their 28 tests and the daemon-only
config keys (oanda.lot_size/quality_gate/max_hold_bars). The Oanda data
provider and credentials stay — it is the live candle feed. 402 tests.

Claude-Session: https://claude.ai/code/session_01FC4s6VCURFte4dub4xKxYL
This commit is contained in:
Harwinder Sekhon
2026-09-03 21:00:21 -04:00
parent 9a8a2c1aa1
commit 354778683e
8 changed files with 24 additions and 1980 deletions
+5 -5
View File
@@ -11,9 +11,9 @@ can only ever mean a stale page.
Independence rules (owner requirement — the telegram bot must be
immune to anything on the web side):
* Runs as its own process; never imported by, and never imports,
`telegram_bot` / `oanda_daemon` (telegram_bot resolves credentials
at import). The confirmation map and boundary math are therefore
duplicated here as local constants.
`telegram_bot` (telegram_bot resolves credentials at import). The
confirmation map and boundary math are therefore duplicated here
as local constants.
* The only shared-code dependency beyond the standard signal path is
the additive `NewsEngine.get_week_events` accessor, which no
production signal path calls.
@@ -236,8 +236,8 @@ def due_timeframes(wake_dt: datetime) -> List[Timeframe]:
def seconds_until_boundary(interval_minutes: int, buffer: int = 10) -> float:
# Same math as telegram_bot.py / oanda_daemon.py — kept local so the
# dashboard never imports bot modules (independence rules above).
# Same math as telegram_bot.py — kept local so the dashboard never
# imports bot modules (independence rules above).
now = datetime.now(timezone.utc)
total_minutes = now.hour * 60 + now.minute
elapsed_minutes = total_minutes % interval_minutes