feat(notify): checkpoint alerts for first match, trade, resolution and exposure cap
CI/CD / build-and-push (push) Successful in 8s
CI/CD / build-and-push (push) Successful in 8s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
+13
@@ -16,6 +16,7 @@ from bot.risk.manager import RiskManager
|
||||
from bot.executor.paper import PaperExecutor
|
||||
from bot.metrics.tracker import MetricsTracker
|
||||
from bot.data.db import Database
|
||||
from bot.notify.checkpoints import CheckpointMonitor
|
||||
|
||||
logging.basicConfig(
|
||||
level=logging.INFO,
|
||||
@@ -38,6 +39,7 @@ async def run_trading_loop(
|
||||
) -> None:
|
||||
"""Main trading loop — runs every 60 seconds."""
|
||||
log.info("Trading loop started. PAPER_MODE=%s", PAPER_MODE)
|
||||
checkpoint_monitor = CheckpointMonitor()
|
||||
|
||||
while True:
|
||||
try:
|
||||
@@ -201,6 +203,17 @@ async def run_trading_loop(
|
||||
# 9. Update daily metrics
|
||||
await metrics.update_daily_summary()
|
||||
|
||||
# 10. Checkpoint alerts — one-shot / rate-limited Telegram notifications
|
||||
current_portfolio = executor.get_portfolio()
|
||||
try:
|
||||
await checkpoint_monitor.check_all(
|
||||
db,
|
||||
exposure_pct=current_portfolio.exposure_pct,
|
||||
exposure_cap_pct=risk.max_exposure_pct,
|
||||
)
|
||||
except Exception as exc:
|
||||
log.warning("checkpoint_monitor.check_all failed: %s", exc)
|
||||
|
||||
except Exception as e:
|
||||
log.error("Error in trading loop: %s", e, exc_info=True)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user