diff --git a/project.sw b/project.sw index 8888b85..1d369d8 100644 --- a/project.sw +++ b/project.sw @@ -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.