@echo off REM ============================================================ REM Coinben One-Click Launcher — run_all.bat (INTERACTIVE) REM - Starts Node trade server (port 8789) REM - Prompts for trading params each run REM - Starts AutoTradingBot.py with provided parameters REM - (Optional) Starts RiskManagementBot.py REM - Serves opsdeck-basic.html via local HTTP (port 8791) and opens it REM - Works from USB: paths are relative to this .bat REM ============================================================ setlocal ENABLEDELAYEDEXPANSION REM ---------- Resolve project root (this .bat location) ---------- set "ROOT=%~dp0" pushd "%ROOT%" cd /d "%ROOT%" title Coinben One-Click Launcher REM ---------- Quick tool checks ---------- where node >nul 2>nul if errorlevel 1 ( echo [ERROR] Node.js not found in PATH. Please install Node 18+. pause exit /b 1 ) where python >nul 2>nul if errorlevel 1 ( echo [ERROR] Python not found in PATH. Please install Python 3.9+. pause exit /b 1 ) REM ---------- Prepare server dependencies (USB-friendly) ---------- if exist "server" ( pushd "server" if not exist "node_modules" ( echo [SETUP] Installing Node dependencies in .\server ... npm install if errorlevel 1 ( echo [ERROR] npm install failed. pause exit /b 1 ) ) popd ) REM ---------- Ensure OpsDeck widget path (pnl-card.js) ---------- if not exist "widgets" mkdir "widgets" >nul 2>nul if exist "pnl-card.js" ( copy /y "pnl-card.js" "widgets\pnl-card.js" >nul ) REM ---------- Ask for parameters each run ---------- set "DEF_SYMBOL=BTCUSDT" set "DEF_ORDER=10" set "DEF_SPREAD=0.5" set "DEF_HEDGE=0.8" set "DEF_POSMODE=isolated" set /p SYMBOL=Enter SYMBOL [default: %DEF_SYMBOL%] ^> if "%SYMBOL%"=="" set "SYMBOL=%DEF_SYMBOL%" set /p ORDER_SIZE=Enter ORDER_SIZE (USDT) [default: %DEF_ORDER%] ^> if "%ORDER_SIZE%"=="" set "ORDER_SIZE=%DEF_ORDER%" set /p SPREAD_PCT=Enter SPREAD_PCT (%) [default: %DEF_SPREAD%] ^> if "%SPREAD_PCT%"=="" set "SPREAD_PCT=%DEF_SPREAD%" set /p HEDGE_TRIGGER_PCT=Enter HEDGE_TRIGGER_PCT (%) [default: %DEF_HEDGE%] ^> if "%HEDGE_TRIGGER_PCT%"=="" set "HEDGE_TRIGGER_PCT=%DEF_HEDGE%" set /p POS_MODE=Enter POS_MODE (isolated/cross) [default: %DEF_POSMODE%] ^> if "%POS_MODE%"=="" set "POS_MODE=%DEF_POSMODE%" echo. echo [CONFIRM] SYMBOL=%SYMBOL% ORDER_SIZE=%ORDER_SIZE% SPREAD_PCT=%SPREAD_PCT% HEDGE_TRIGGER_PCT=%HEDGE_TRIGGER_PCT% POS_MODE=%POS_MODE% echo. REM ---------- Start Node trade server (port 8789) ---------- echo [START] Trade server on :8789 start "trade-server:8789" cmd /k ^ "cd /d ""%ROOT%server"" && node trade.js" REM ---------- Ensure Python deps (aiohttp) for bots ---------- echo [SETUP] Ensuring Python dependency: aiohttp python -m pip show aiohttp >nul 2>nul || python -m pip install --user aiohttp REM ---------- Start AutoTradingBot (uses BASE_URL -> trade server) ---------- echo [START] AutoTradingBot.py start "autobot" cmd /k ^ "cd /d ""%ROOT%"" && ^ set BASE_URL=http://127.0.0.1:8789 && ^ set SYMBOL=%SYMBOL% && ^ set SIZE_TYPE=USDT && ^ set ORDER_SIZE=%ORDER_SIZE% && ^ set SPREAD_PCT=%SPREAD_PCT% && ^ set HEDGE_TRIGGER_PCT=%HEDGE_TRIGGER_PCT% && ^ set POS_MODE=%POS_MODE% && ^ set SAFE_MODE=off && ^ python AutoTradingBot.py" REM ---------- Optional: RiskManagementBot ---------- choice /c YN /n /m "Start RiskManagementBot.py as well? (Y/N): " if errorlevel 2 goto SKIP_RISK echo. echo [START] RiskManagementBot.py start "riskbot" cmd /k ^ "cd /d ""%ROOT%"" && ^ set BASE_URL=http://127.0.0.1:8789 && ^ python RiskManagementBot.py" :SKIP_RISK REM ---------- Serve dashboard over HTTP (to avoid file:// CORS) ---------- echo [START] Local HTTP server on :8791 (for opsdeck-basic.html) start "web:8791" cmd /k ^ "cd /d ""%ROOT%"" && ^ python -m http.server 8791" REM ---------- Open OpsDeck dashboard ---------- if exist "opsdeck-basic.html" ( start "" "http://127.0.0.1:8791/opsdeck-basic.html" ) else ( echo [WARN] opsdeck-basic.html not found in %ROOT% ) echo. echo [OK] Launch sequence completed. Keep the three windows open: echo - trade-server:8789 echo - autobot echo - (optional) riskbot echo. echo To stop: close the windows or press Ctrl+C in each. echo. popd endlocal