Files
AH-Oil-Trader/restart_server.bat
T
Axel HocksandClaude Opus 5 0ab79f1876 Code-Pruefung ans Deployment haengen, nicht nur an den Commit
User-Frage "wird die Pipeline bei jedem Deployment ausgefuehrt?". Antwort war
NEIN:
  git commit          check_nfalle + pytest (Hook installiert)
  tools/deploy.py     prueft nur den LAUFENDEN Server, nicht den Code
  restart_server.bat  gar nichts
  Aufgabe OilTradingServer -> start_server_hidden.vbs   gar nichts

Commit und Deployment sind zwei Ereignisse und fallen beliebig auseinander:
eine geaenderte, nie committete Datei ging ueber restart_server.bat ungeprueft
live; nach einem Reboot startet die Aufgabe, was auf der Platte liegt.

"Der Server kommt hoch" ist kein Ersatz: die beiden log.-NameError in
core/trader.py sassen MONATE in except-Zweigen (einer seit dem Initial-Commit),
und der Server startete jedes Mal sauber.

deploy.py bekommt Schritt 0: check_nfalle + pytest VOR dem Kill, bei Rot
Abbruch mit Rueckgabecode 1. Die Reihenfolge ist der Punkt - ein laufender,
funktionierender Server darf fuer kaputten Code nicht abgeschossen werden.
Notausgang --ohne-pruefung.

Beide Richtungen verifiziert: mit eingebautem F821-Fehler -> ABBRUCH, Exit 1,
Server-PID vorher/nachher identisch (20892), der Prozess wurde nachweislich
nicht angefasst. Ohne Fehler laeuft es durch.

BEWUSST NICHT in restart_server.bat und die Aufgabenplanung - das sind
WIEDERANLAUF-Pfade. Wuerde ein fehlschlagender Test dort den Start verhindern,
staende eine offene Position ohne Trailing, Time-Stop und Notfall-Stop da, nur
mit dem Broker-SL. Eine Pruefung, die den Bot offline laesst, ist schlimmer als
der Fehler, den sie sucht. Der Batch gibt stattdessen einen Hinweis aus und
verweist auf deploy.py.

Regel: absichtliches Deployment blockieren, Wiederanlauf niemals.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-07 12:02:08 +02:00

60 lines
3.4 KiB
Batchfile

@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 ^<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