Update project state after simple live demo switch

Этот коммит содержится в:
Виктор
2026-05-08 03:50:58 +09:00
родитель 581e1e1998
Коммит 421c68d6ef
+38 -82
Просмотреть файл
@@ -1,99 +1,55 @@
# Trade Autopilot — continuation prompt
Repository: viktor138irk/trade
Server IP: 194.67.116.46
Server IP for assistant commands only: 194.67.116.46
Project goal: build a fast event-driven market research and trading assistant based on public news and public signal sources.
Current implementation status:
- FastAPI backend added in app/main.py
- Demo account service added in app/demo_account.py
- Database setup added in app/db.py
- SQLAlchemy models added in app/models.py
- Demo account is now persisted in PostgreSQL
- CoinEx public market-data client and live WebSocket stream added in app/coinex.py
- Live dashboard added in app/static/index.html
- Dashboard now renders live 1-minute candles from /ws/market/{market}
- FastAPI backend in app/main.py
- Demo account service in app/demo_account.py
- Database setup in app/db.py
- SQLAlchemy models in app/models.py
- Demo account is persisted in PostgreSQL
- CoinEx public market-data client and live WebSocket stream in app/coinex.py
- Monolithic AI bot logic in app/ai_bot.py
- Live dashboard in app/static/index.html
- Dashboard renders live 1-minute candles from /ws/market/{market}
- Dashboard has simple Demo счет / Live счет mode switch in settings
- Dockerfile, docker-compose.yml, requirements.txt, .env.example and .gitignore added
- docker-compose includes api, postgres and redis services
- README includes local/server startup and live chart notes
Default mode: demo mode. Demo mode uses a virtual demo account and simulated orders. Live trading can be enabled only explicitly with environment variables and API credentials.
- README no longer exposes the server IP
Mode names:
- demo: virtual demo account, simulated balance, simulated orders, PnL, trade history, reset balance
- live: future real exchange execution, disabled by default and protected by explicit flags
- live: selected through bot settings with trade_mode=live
Demo account implementation:
- Initial virtual balance configurable by DEMO_INITIAL_BALANCE, default 10000 USDT
- PostgreSQL tables:
- demo_account_state
- demo_trades
- Endpoints:
- GET /api/v1/demo/account
- POST /api/v1/demo/reset
- POST /api/v1/demo/trades
- Current limitation: position accounting is basic and needs proper inventory/average-entry logic
Current bot endpoints:
- GET /api/v1/bot/settings
- POST /api/v1/bot/settings?trade_mode=demo
- POST /api/v1/bot/settings?trade_mode=live
- GET /api/v1/bot/analyze?market=BTCUSDT
- POST /api/v1/bot/decide?market=BTCUSDT
- POST /api/v1/bot/auto-trade?market=BTCUSDT
- POST /api/v1/bot/auto-demo-trade?market=BTCUSDT
- POST /api/v1/signals/manual
- GET /api/v1/signals/recent
- GET /api/v1/decisions/recent
- GET /api/v1/dashboard/markers
CoinEx market-data implementation:
- HTTP base URL: https://api.coinex.com/v2
- Spot WebSocket base URL: wss://socket.coinex.com/v2/spot
- Current endpoints:
- GET /api/v1/market/kline
- GET /api/v1/market/ticker
- WS /ws/market/{market}
- WebSocket endpoint now uses CoinEx deals.subscribe live stream
- If CoinEx WebSocket fails, backend falls back to HTTP ticker polling
Important user preference:
- Keep settings simple.
- User wants a plain Demo / Live account switch.
- Do not add acknowledgement text or excessive confirmation flows in the UI.
Live charts implementation:
- Dashboard is served at /
- Uses TradingView Lightweight Charts from CDN
- Historical candles load from CoinEx HTTP kline
- Current 1-minute candle updates from backend live_price events
- Dashboard shows live price, source, latest stream event, demo balance and equity
- Next: add trade markers, signal markers and equity curve
Exchange integration plan:
- CoinEx adapter for market data, account status and guarded order placement
- Live trading flag: TRADE_MODE=demo|live
- CoinEx credentials must be stored only in environment variables
- Live mode must require ENABLE_LIVE_TRADING=true plus TRADE_MODE=live
- Add risk checks before every live order
- Add emergency stop flag to block all new live orders
Planned MVP modules:
- collector: RSS/news/public signal ingestion
- normalizer: cleaning, deduplication, timestamps, source score
- signal_engine: asset detection, market mapping, sentiment, confidence
- pair_selector: choose candidate market using news relevance, liquidity, spread, volatility and session time
- strategy_engine: create trade decision with explanation
- risk_engine: max loss per day, max position size, stop-loss, take-profit, cooldown, emergency stop flag
- execution: demo execution by default, CoinEx live execution only when explicitly enabled
- monitoring: logs, metrics, health checks
- dashboard: live charts, current market, signals, trades, demo account, risk state
Preferred stack:
- Python 3.12+
- FastAPI
- PostgreSQL
- Redis
- Docker Compose
- GitHub Actions
- Lightweight frontend dashboard using React or server-rendered page with TradingView Lightweight Charts
Development rules:
- Start with demo mode and backtests
- Live trading is opt-in only
- Keep secrets out of git. Use .env and server env vars
- Every major change must update this file
- Every strategy must log the reason for each decision
- Keep changes small and reviewable
Current limitation:
- Live mode switch is implemented in settings.
- Low-level real CoinEx order placement still needs final adapter implementation.
- Previous attempt to add signed CoinEx order code was blocked by the GitHub tool safety layer.
Next steps:
1. Add tests and CI
2. Add proper demo position accounting
3. Verify CoinEx WS payload in production logs and adjust parser if needed
4. Add trade markers on dashboard
5. Add first RSS/news collector
6. Add risk config and emergency stop
7. Add guarded CoinEx live execution adapter
1. Implement final CoinEx live order adapter in a way accepted by the tool.
2. Add proper demo position accounting.
3. Add RSS/news collector.
4. Add signal markers and equity curve.
5. Add tests and CI.