Skip to main content
All notifications go through log_notify() in trading/bot.py. To silence a specific message, replace log_notify() with log_only(). To disable Telegram entirely, leave TELEGRAM_TOKEN blank in .env.
Telegram notifications are live-mode only. In python trading.py --dry, message sending is disabled and the Telegram command bot thread is not started.

Always fires

WhenMessage
Bot startsNOVOSKY started · Balance $X · API OK local 45ms broker 32ms (excellent) · Started at HH:MM local time · PID N
Every hour (heartbeat)NOVOSKY · Live · Balance: $X · Today: $P/L · N trades · WR XX%
Daily at 11pm localFull daily report: P/L, trades, WR, best/worst trade
Sunday at 11pm localWeekly report: week P/L, WR, trade breakdown

Per trade

WhenMessage
Order opened[BTCUSD BUY] #12345 opened · Entry: 84500 · 0.01 lots · 2% risk · Balance: $512
TP hitBTCUSD BUY TP HIT · P/L: +$12.30 · Entry: 84500 → Exit: 84800 · Balance: $512
SL hitBTCUSD BUY SL HIT · P/L: -$8.10 · Entry: 84500 → Exit: 84432 · Balance: $491
Order error[BTCUSD ERROR] BUY order failed, retcode = XXXX

Position management (Phase 8)

WhenMessage
ML EXIT[ML MGMT] BUY #12345 closed early — EXIT (72%) · R:0.8
Deal not found[BTCUSD WARN] Position #12345 (BUY) closed but no exit deal found after 6 retries
Trailing SL[BTCUSD TRAILING SL] BUY #12345: SL updated to 84300
Partial close[BTCUSD PARTIAL] Closed 50% of BUY · R:1.0 · P/L: +$6.15
Breakeven[BTCUSD BREAKEVEN] SL moved to entry 84500
When a deal is not found, the bot estimates P/L from the current tick price and still counts win/loss in the WR stats.

Risk and safety events

WhenMessage
Circuit breaker triggeredCIRCUIT BREAKER TRIGGERED · N consecutive losses. Stopped for today.
Circuit breaker resetCircuit breaker reset — new local day. Trading resumed.
Max daily lossMax daily loss $X reached. Trading paused 1h.
Crash modeCRASH MODE ON · price moved X% in Ymin. Halting Zmin.
Bot crashedNOVOSKY CRASHED: <exception> (PID: XXXXX)

Test a notification

python scripts/notify.py "Test message from NOVOSKY"
This sends a plain text message to your configured Telegram chat. Use this to verify your TELEGRAM_TOKEN and TELEGRAM_CHAT_ID are correct before going live.