- Upgrade CDN from v4.1.0 to v5.1.0
- Add displayMode property to indicators ('overlay' vs 'pane')
- Mark oscillators (RSI, MACD, Stoch, ATR) as pane-type indicators
- Rewrite drawIndicatorsOnChart() to render oscillators in separate draggable panes
- Update all chart.addSeries() calls to v5 API with paneIndex parameter
- Add pane layout configuration with resizable separators
- Build indicator list dynamically from class getMetadata() instead of hardcoded array
- Remove checkboxes; single-click previews config, double-click adds to chart
- Support multiple instances of same indicator type (unique IDs)
- Add TradingView-style column legend overlay on chart (top-left)
- Recalculate indicators when historical data is prefetched on scroll
- Make indicator list and config panels scrollable (hidden scrollbars)
- Remove AVAILABLE_INDICATORS from strategies/config.js
Dashboard:
- Add indicator checkboxes with multi-select support
- Show color dots for each plot group in indicator list
- Config panel always visible with helpful empty state message
- Support multi-color indicators (HTS shows Fast/Slow colors)
- Add line type selector (solid/dotted/dashed) and line width
- Combine SMA/EMA into unified MA indicator with type selector
Data Collector:
- Fix missing asyncio import in database.py (caused NameError on timeout)
- Add startup backfill for all standard intervals on collector restart
- Add gap detection + time-based backfill for robustness
- Add backfill_gap.py tool for manual gap filling
- Optimize custom timeframe generation to only generate missing candles (not all from beginning)
Files changed:
- src/api/dashboard/static/js/ui/indicators-panel.js
- src/api/dashboard/static/js/indicators/index.js, ma_indicator.js
- src/api/dashboard/static/js/strategies/config.js
- src/api/dashboard/static/js/ui/chart.js
- src/api/dashboard/static/js/app.js
- src/api/dashboard/static/index.html
- src/data_collector/database.py
- src/data_collector/main.py
- src/data_collector/custom_timeframe_generator.py
- src/data_collector/backfill_gap.py (new)
- Add custom price line (green/red based on candle direction)
- Disable default orange price line visibility
- Chart scrolls to recent data on timeframe switch
- Implement dynamic buffer for historical data prefetch (2x visible bars)
- Silently refills buffer when below 80% threshold
- Split inline JS into separate ES module files (indicators/, strategies/, ui/, utils/)
- Fix brain.py strategy registry to use MAStrategy directly instead of missing modules
- Add auto-backfill for detected data gaps in collector monitoring loop
- Fix chart resize on sidebar toggle
- Fix chart scrollToTime -> setVisibleLogicalRange
- Added /api/v1/candles/bulk endpoint for high-performance data download
- Implemented ClientStrategyEngine in JS with support for 7 indicators
- Added Multi-Timeframe support for strategy confirmation
- Added Risk Management module (Risk % per trade, Stop Loss %)
- Overhauled dashboard simulation UI with TF selector and risk inputs
- Removed server-side backtest dependency for simulations
- Added display_name and description to BaseStrategy
- Updated MA44 and MA125 strategies with metadata
- Added /api/v1/strategies endpoint for dynamic discovery
- Added Strategy Simulation panel to dashboard with date picker and tooltips
- Implemented JS polling for backtest results in dashboard
- Added performance test scripts and DB connection guide
- Expanded indicator config to all 15 timeframes