Repair grid rearming and pending-order recovery, accelerate replay data and factors, and persist agent backtest history. Reuse Copilot routing, fetch market data concurrently, and release database connections during streaming. Add regression coverage and enforce LF shell scripts.
Adds a read-only MOEX data source backed by the public MOEX ISS HTTP API
(https://iss.moex.com/iss). Targets the TQBR equities board so common Russian
tickers (SBER, GAZP, LKOH, ...) work out of the box.
What's new
- app/data_sources/moex.py: MOEXDataSource with get_kline / get_ticker
- QuantDinger timeframes mapped to ISS intervals; 5m/15m/30m/4H are
resampled from the nearest finer native interval (1m or 60m)
- ISS naive timestamps treated as Europe/Moscow (UTC+3) and converted to
Unix UTC seconds
- Pagination via ISS start parameter
- Symbol normalization handles SBER, SBER.ME, GAZP:MOEX, etc.
- app/data_sources/factory.py: registers MOEX market + aliases
- app/routes/market.py: MOEX in /market/types between HKStock and Crypto
- app/services/symbol_name.py: resolves MOEX names from ISS securities endpoint
- app/services/strategy.py: explicit guard - MOEX cannot be used as a live
trading market_category (create / batch / update paths)
- tests/test_moex_data_source.py: 11 offline unit tests (mocked HTTP)
- scripts/verify_moex.py: live ISS smoke-test script
Limitations
- Analysis & backtesting only. No live order placement on MOEX.
- TQBR board only by default. Other boards can be enabled by constructing
MOEXDataSource(board=...) explicitly.
- Sub-hour non-native timeframes (5m/15m/30m) and 4H are resampled
client-side; large limits at fine timeframes pull more data.
Core changes:
- Refactor FastAnalysisService: single LLM multi-factor analysis replaces
7-agent pipeline; add multi-timeframe consensus, threshold calibration,
confidence calibration, multi-model ensemble voting
- Add RAG memory injection and reflection validation (analysis_memory +
reflection worker)
- Simplify billing config: remove unused strategy_run/backtest/portfolio_monitor,
add ai_code_gen separate billing (different token consumption scale)
- Settings hot-reload after save, no backend restart needed
Frontend:
- Global dark theme overhaul: pure black palette replacing blue-tinted colors
across sidebar/header/dashboard/analysis/K-line/user-manage/profile/settings/billing
- Fix USDT payment modal dark theme (portal rendering broke CSS selectors)
- Refactor position modal: direction + quantity + entry price, remove add/reduce
logic, show raw DB values on re-open, save exactly what user inputs
- Fix Polymarket prediction market dark text
- i18n for position modal title
Backend:
- Position management: one record per symbol (DELETE+INSERT replacing
ON CONFLICT with side), fixes PnL showing 0 when switching long/short
- MarketDataCollector data fetching optimization
- portfolio_monitor scheduled monitoring improvements
- env.example reorganized: common config first, advanced config last
Documentation:
- README architecture diagram updated to FastAnalysisService flow
- Add virtual position, AI tuning config, billing items documentation
- Add INDICATOR_DEFINITIONS_CN.md, FRONTEND_FAST_ANALYSIS.md
Made-with: Cursor