Run status reporter thread every 60 minutes, sends current price,
PnL, drop from peak, and holding time for each position.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- restore_positions(): read Upbit balances on startup to prevent
double-buying after restart
- notify.py: read TOKEN/CHAT_ID inside _send() to avoid empty values
when module is imported before load_dotenv()
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- notify.py: buy/sell/error alerts via upbit_trading_jm_bot
- STOP_LOSS_PCT: trailing stop configurable via .env (default -5%)
- notify_buy/notify_sell called on every trade execution
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>