# Task: CoinEx Trader Bot — Full Dashboard Control Suite **Priority:** HIGH **Assigned:** Glitch **Status:** Spec **Date:** 2026-03-01 ## Context The live trader bot (`coinex_live_trader.py`) currently runs as a headless systemd timer with no UI control. D J wants ALL configuration and control moved into the CoinEx Dashboard (port 8891) before any more live trading happens. ## Requirements ### 1. Master Controls (Top Priority) - **Global ON/OFF toggle** — starts/stops the trading bot entirely - **Mode selector** — LIVE / DRY-RUN / PAUSED - **Emergency Stop button** — immediately halts bot + attempts to close all positions - **Lockfile status** — show if circuit breaker is tripped, with a "Clear Lockfile" button ### 2. Position Management - **View all open positions** — symbol, side, entry price, current price, P&L, P&L%, margin, leverage - **Close individual position** button - **Close ALL positions** button - **Position history** — recent closed trades with P&L ### 3. Runtime Configuration (all hot-reloadable, no restart needed) - **Position size %** (currently 5%) - **Max concurrent positions** (currently 3) - **Max leverage** (currently 10x) - **Kill switch drawdown %** (currently 50%) - **TP threshold %** (take profit) - **SL threshold %** (stop loss) - **Circuit breaker failure count** (currently 3) - **Scan interval** (currently 5 min) - **Long signal threshold** (currently 45 pts) - **Short signal threshold** (currently 50 pts) - **Coin whitelist/blacklist** — toggle which coins can be traded ### 4. Account Overview - **Total equity** (available + margin) - **Available balance** - **Margin in use** - **Unrealized P&L total** - **Starting balance** and **drawdown %** - **Kill switch distance** (how far from trigger) ### 5. Activity Log - **Trade log** — every open/close with timestamps, prices, P&L - **Error log** — API failures, circuit breaker events - **Signal log** — what signals were generated and whether acted on - **Bot cycle log** — last N cycle summaries (scanned, signals found, actions taken) ### 6. Configuration Persistence - All settings saved to `trader_config.json` - Bot reads config at start of each cycle (hot reload) - Dashboard reads/writes same config file - Default values match current hardcoded settings ## Architecture ### Backend - New API routes in the dashboard: - `GET /api/trader/status` — bot state, positions, balance, config - `POST /api/trader/config` — update runtime config - `POST /api/trader/control` — start/stop/pause/emergency-stop/clear-lockfile - `POST /api/trader/close-position` — close specific position - `POST /api/trader/close-all` — close all positions - `GET /api/trader/logs` — recent trade/error/signal logs ### Config File: `trader_config.json` ```json { "mode": "paused", "position_size_pct": 5.0, "max_positions": 3, "max_leverage": 10, "kill_switch_drawdown_pct": 50, "tp_pct": null, "sl_pct": null, "circuit_breaker_threshold": 3, "scan_interval_minutes": 5, "long_threshold": 45, "short_threshold": 50, "coin_blacklist": [], "coin_whitelist": [] } ``` ### Frontend - New `/trader` page in the dashboard (linked from main nav) - Dark theme matching existing dashboard aesthetic - Real-time updates via the existing WebSocket ### Trader Bot Changes - Read `trader_config.json` at start of each cycle - Respect `mode` field: "live" | "dry-run" | "paused" - If "paused", exit immediately (no API calls) - All hardcoded values replaced with config reads - Bot NO LONGER managed by systemd timer — dashboard API controls start/stop ## Files - Dashboard project: `~/.openclaw/workspace/projects/coinex-dashboard/` - Trader script: `~/.openclaw/workspace/projects/crypto-signals/scripts/coinex_live_trader.py` - Trader state: `~/.openclaw/workspace/projects/crypto-signals/data/coinex-live/trader_state.json` - Lockfile: `~/.openclaw/workspace/projects/crypto-signals/data/coinex-live/live-trader-lock.json` - New config: `~/.openclaw/workspace/projects/crypto-signals/data/coinex-live/trader_config.json` - CoinEx creds: `~/.openclaw/workspace/.credentials/coinex.env` ## Constraints - **Zero client-side CoinEx API calls** — all CoinEx calls go through server-side API routes - **All existing scoring logic in `lib/indicators.ts` preserved exactly** - **Use api.binance.us NOT api.binance.com** (451 geo-blocking) - **Must include unit tests** - **Context7 mandatory** for any library usage - **Dark theme, monospace font aesthetic** - Standard stack: Next.js 16 + Tailwind v4 + Framer Motion + ShadCN + Lucide + TypeScript ## Definition of Done - [ ] All controls functional from dashboard UI - [ ] Bot reads config from file each cycle (hot reload) - [ ] Emergency stop works - [ ] Position management works (view, close individual, close all) - [ ] All settings persisted and reloadable - [ ] Activity logs visible in UI - [ ] Unit tests for API routes - [ ] No live trading until D J explicitly flips the switch in the UI