@echo off REM ============================================================ REM Oil Trading Agent - BEIDE Server neu starten REM 1) Hyperliquid-Dashboard (Port 8001, versteckt im Hintergrund) REM 2) Oil Trading Backend (Port 8000, in diesem Fenster) REM REM ⚠ Warum beide: der MT5-Bot holt die echten Liquiditaets-Waende vom REM HL-Dashboard (127.0.0.1:8001/api/walls). Ausserdem killte die alte REM Fassung den HL-Server ungewollt mit (Muster '*server.py*' trifft beide) REM -> das riss die Luecken in die Order-Flow-/Lead-Lag-Datensammlung. REM Nutzt absolute Pfade (PATH-unabhaengig). REM ============================================================ title Oil Trading Server - Restart cd /d "%~dp0" set "PS=%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" set "PY=C:\Users\ah\AppData\Local\Programs\Python\Python312\python.exe" set "HLDIR=%~dp0..\HyperLiquid-WTI Trader" REM ------------------------------------------------------------ REM ⚠ HIER LAEUFT BEWUSST KEINE CODE-PRUEFUNG (2026-08-07). REM Dieser Batch ist ein WIEDERANLAUF-Pfad (auch per Aufgabenplanung REM nach Reboot/Logon ueber start_server_hidden.vbs). Wuerde ein REM fehlschlagender Test den Start verhindern, staende eine offene REM Position ohne Trailing, Time-Stop und Notfall-Stop da - nur mit REM dem Broker-SL. Eine Pruefung, die den Bot offline laesst, ist REM schlimmer als der Fehler, den sie sucht. REM Fuer ein ABSICHTLICHES Deployment gibt es tools\deploy.py: REM das prueft VOR dem Kill und bricht bei Rot ab. REM ------------------------------------------------------------ echo. echo [i] Hinweis: dieser Weg fuehrt KEINE Code-Pruefung aus. echo Absichtliches Deployment bitte ueber: python tools\deploy.py --feld ^ echo. echo Beende laufende Server (8000 + 8001) ... "%PS%" -NoProfile -Command "Get-CimInstance Win32_Process | Where-Object { $_.Name -eq 'python.exe' -and $_.CommandLine -like '*server.py*' } | ForEach-Object { Stop-Process -Id $_.ProcessId -Force; Write-Host (' gestoppt: PID ' + $_.ProcessId) }; Start-Sleep -Seconds 2" REM ── 1) Hyperliquid-Dashboard zuerst (versteckt), damit die Waende schon REM bereitstehen, wenn der Bot den ersten Level-Export schreibt. if exist "%HLDIR%\server.py" ( echo Starte Hyperliquid-Dashboard ^(8001, Hintergrund^) ... if exist "%HLDIR%\start_hidden.vbs" ( wscript.exe "%HLDIR%\start_hidden.vbs" ) else ( "%PS%" -NoProfile -Command "Start-Process -FilePath '%PY%' -ArgumentList '-X','utf8','server.py' -WorkingDirectory '%HLDIR%' -WindowStyle Hidden -RedirectStandardOutput '%HLDIR%\server_out.log' -RedirectStandardError '%HLDIR%\server_err.log'" ) REM kurz warten, bis 8001 lauscht (max ~10 s) - fail-safe, blockiert nie lange "%PS%" -NoProfile -Command "$n=0; while($n -lt 20 -and -not (Get-NetTCPConnection -LocalPort 8001 -State Listen -ErrorAction SilentlyContinue)) { Start-Sleep -Milliseconds 500; $n++ }; if (Get-NetTCPConnection -LocalPort 8001 -State Listen -ErrorAction SilentlyContinue) { Write-Host ' HL-Dashboard laeuft (8001)' } else { Write-Host ' WARNUNG: 8001 antwortet nicht - Chart bleibt ohne Liquiditaetslinien' }" ) else ( echo HL-Projekt nicht gefunden - ueberspringe ^(Liquiditaetslinien aus^). ) REM ── 2) Oil Trading Backend im Vordergrund (Konsole bleibt sichtbar) echo Starte Oil Trading Server ^(8000^) ... set PYTHONIOENCODING=utf-8 "%PY%" -X utf8 server.py echo. echo ===== Server beendet ===== pause