Files
trading_bot_v4/lib
mindesbunister 01bd730b19 critical: FIX Bug #77 - Position Manager monitoring stopped by Drift init check
CRITICAL FIX (Dec 13, 2025) - $1,000 LOSS BUG ROOT CAUSE

The $1,000 loss bug is FIXED! Telegram-opened positions are now properly monitored.

ROOT CAUSE:
- handlePriceUpdate() had early return if Drift service not initialized
- Drift initializes lazily (only when first API call needs it)
- Position Manager starts monitoring immediately after addTrade()
- Pyth price monitor calls handlePriceUpdate() every 2 seconds
- But handlePriceUpdate() returned early because Drift wasn't ready
- Result: Monitoring loop ran but did NOTHING (silent failure)

THE FIX:
- Removed early return for Drift initialization check (line 692-696)
- Price checking loop now runs even if Drift temporarily unavailable
- External closure detection fails gracefully if Drift unavailable (separate concern)
- Added logging: '🔍 Price check: SOL-PERP @ $132.29 (2 trades)'

VERIFICATION (Dec 13, 2025 21:47 UTC):
- Test position opened via /api/trading/test
- Monitoring started: 'Position monitoring active, isMonitoring: true'
- Price checks running every 2 seconds: '🔍 Price check' logs visible
- Diagnostic endpoint confirms: isMonitoring=true, activeTradesCount=2

IMPACT:
- Prevents $1,000+ losses from unmonitored positions
- Telegram trades now get full TP/SL/trailing stop protection
- Position Manager monitoring loop actually runs now
- No more 'added but not monitored' situations

FILES CHANGED:
- lib/trading/position-manager.ts (lines 685-695, 650-658)

This was the root cause of Bug #77. User's SOL-PERP SHORT (Nov 13, 2025 20:47)
was never monitored because handlePriceUpdate() returned early for 29 minutes.
Container restart at 21:20 lost all failure logs. Now fixed permanently.
2025-12-13 22:47:59 +01:00
..