v7.6.2: Logging Improvements & Bug Fixes
This release focuses on improving log verbosity, fixing critical candle data issues, and enhancing the overall user experience with better diagnostics.
🔧 Critical Bug Fixes
-
Zero-candle warmup fix: Large warmup spans (>2 days) now properly trigger gap-filling via CCXT even when end_ts touches present. Previously, bots would synthesize thousands of zero-candles for historical gaps instead of fetching real data. First warmup may take longer (one-time backfill), subsequent restarts are fast (~6s vs ~156s).
-
One-way mode entry fix: Disabled sides no longer block entries when using one-way mode. The bot now correctly respects side configuration when choosing initial entry direction.
-
Bybit leverage errors: "Leverage not modified" (110043) and "margin mode not modified" (110026) errors are now handled gracefully instead of logging full tracebacks.
📊 Logging Improvements
-
Structured log prefixes: All log messages now use bracketed category tags for easy filtering:
[config]- Configuration changes[fills]- Fill events and PnL[candle]- Candle synthesis/replacement[bybit],[binance], etc. - Exchange-specific logs
-
Health summary enhancements: Now includes realized PnL sum when fills > 0 (e.g.,
fills=3 (pnl=+12.50)) -
Reduced log spam:
- Zero-candle logs rate-limited to once per minute per symbol
- BybitFetcher residual PnL warnings moved to debug level
- FillEventsManager refresh logs consolidated to single summary line
-
Better timestamps: Zero-candle warnings now include human-readable UTC timestamps showing the exact range synthesized
⚙️ New Configuration Options
-
live.enable_archive_candle_fetch(default: false): Opt-in to use exchange archive data for candle fetching. Disabled by default to avoid timeout issues. Backtester always uses archives regardless of this setting. -
live.warmup_jitter_seconds(default: 30): Random delay before warmup to prevent API rate limit storms when multiple bots start simultaneously. -
live.max_concurrent_api_requests(default: null): Optional global concurrency limit for CCXT API calls. -
backtest.maker_fee_override(default: null): Override maker fees in backtest/optimizer (useful for testing different fee tiers).
🖥️ UI Improvements
-
TWEL clarification: Startup banner now shows "TWEL" (Total Wallet Exposure Limit) instead of "Exposure" to clarify it's a limit, not current exposure. Long+short mode shows both limits (e.g.,
TWEL: L:125% S:85%). -
Dynamic banner width: Startup banner now calculates width dynamically to prevent misaligned borders.
🐛 Other Fixes
-
Windows cache compatibility: folder names now replace
:with_on Windows or whenWINDOWS_COMPATIBILITY=1env var is set (#547, thanks @FelixJongleur42) -
Pareto dashboard: Fixed JavaScript callback errors when switching between tabs (#550, thanks @646826)
📦 Dependencies
- Added
openpyxltorequirements-live.txt(required for Bitget archive XLSX parsing)
⚠️ Upgrade Notes
-
First startup may be slower: The zero-candle fix causes a one-time backfill of historical data. Subsequent restarts will be fast.
-
Windows users: Existing caches will be orphaned and re-downloaded due to the folder naming change.
-
Archive fetching disabled by default: If you relied on archive data for live bots, set
live.enable_archive_candle_fetch: truein your config.
📈 Statistics
- 66 commits since v7.6.1
- 62 files changed
- +9,196 / -2,529 lines
Full changelog: https://github.com/enarjord/passivbot/blob/master/changelog.md