Einleitung
Dieser Artikel erklärt, wie Sie „alte .log-Dateien“ aus den „Betriebsprotokollen (Logs/Journal),“ den „Expertenprotokollen (MQL5\Logs/Experts)“ und den „Backtest-Protokollen (Tester\logs)“ von MT5 (MetaTrader 5) automatisch löschen, um eine übermäßige Speicherplatzbelegung zu verhindern. Dies kann mit den Windows-Standardwerkzeugen Batch (.bat) oder PowerShell (.ps1) erreicht werden. Diese Anleitung richtet sich an diejenigen, die den Prozess aus dem verwandten Artikel (Maßnahmen gegen MT5 Log-Aufblähung | So Löschen Sie Betriebs-, Experten- und Backtest-Logs zur Verkleinerung) automatisieren möchten.
Konzept der Automatischen Löschung (Voraussetzungen)
- MT5-Logs werden im Format
JJJJMMTT.log, jeweils eine Datei pro Datum, gespeichert. - Die grundlegende Löschbedingung ist „Dateien, die älter als $\text{X}$ Tage sind“ (z. B. älter als 30 Tage).
- Die Zielordner sind hauptsächlich drei:
Logs,MQL5\LogsundTester\logs. - Durch die Registrierung in der Windows „Aufgabenplanung“ kann die tägliche/wöchentliche Ausführung automatisiert werden.
Überprüfung der Zielordner und Pfade
Öffnen Sie den Explorer über das MT5-Hauptmenü „Datei → Datenordner öffnen“ und überprüfen Sie die folgenden Unterordner:
…\Terminal\<Lange ID>\Logs(Betriebsprotokolle)…\Terminal\<Lange ID>\MQL5\Logs(Expert Advisors/Indikatoren)…\Terminal\<Lange ID>\Tester\logs(Backtest-Protokolle)
Wenn Sie mehrere Terminals (mehrere IDs) verwenden, existieren unter jeder ID gleichnamige Log-Ordner. Bei der portablen Version von MT5 werden MQL5 und Tester direkt im eigentlichen Stammordner abgelegt.
Aufbewahrungsdauer (Richtlinie für den Betrieb)
- Live-Betrieb (einschließlich VPS): 14–30 Tage aufbewahren
- Entwicklung/Prüfung: 7–14 Tage (Aufgrund des höheren Log-Volumens kürzere Aufbewahrung empfohlen)
- Nur Backtest: Wöchentlich oder täglich löschen, je nach Testzyklus
Beginnen Sie mit einer längeren Periode, z. B. 30 Tage, und reduzieren Sie diese schrittweise, wenn keine Probleme auftreten.
Methode A: Automatische Löschung mit Batch-Datei (.bat)
A-1 Empfohlen: Massenumschaltung mit DRYRUN-Flag (Unterstützt Mehrere Terminals)
Diese Konfiguration ermöglicht eine Massenumschaltung zwischen „nur Liste anzeigen“ und „Produktionslöschung“ mithilfe des DRYRUN-Flags, um versehentliches Löschen zu verhindern. Sie durchsucht automatisch alle IDs (Terminals) unter %APPDATA%\MetaQuotes\Terminal.
Dies ist praktisch, wenn Sie mehrere MT5-Instanzen auf einem einzigen PC oder VPS betreiben.
@echo off
REM ===== MT5 Log-Auto-Löschung (Batch-Version / Mehrere Terminals & Massenumschaltung) =====
REM Ausführung mit Administratorrechten empfohlen. Ändern Sie DAYS/DRYRUN nach Bedarf.
setlocal enabledelayedexpansion
set "DAYS=30" REM Dateien älter als diese Anzahl von Tagen als Ziel (z. B. 30)
set "DRYRUN=1" REM 1=Nur Liste (keine Löschung), 0=Produktionslöschung
set "DATA_ROOT=%APPDATA%\MetaQuotes\Terminal"
echo [INFO] MT5 Logs-Bereinigungsziel: Dateien älter als %DAYS% Tage
echo [MODE] DRYRUN=%DRYRUN% (1=nur Liste, 0=löschen)
echo [ROOT] %DATA_ROOT%
echo.
for /D %%T in ("%DATA_ROOT%\*") do (
for %%F in ("%%T\Logs" "%%T\MQL5\Logs" "%%T\Tester\logs") do (
if exist "%%~F" (
echo [CLEAN] %%~F
if "!DRYRUN!"=="1" (
REM Nur Liste (keine Löschung)
forfiles /p "%%~F" /m *.log /d -%DAYS% /c "cmd /c echo @path"
) else (
REM Produktionslöschung (stille Löschung / Fehlerunterdrückung)
forfiles /p "%%~F" /m *.log /d -%DAYS% /c "cmd /c del /f /q @path" 2>nul
)
)
)
)
echo.
echo [DONE] Log-Bereinigung abgeschlossen.
endlocal
Umschaltmethode: Verwenden Sie für Tests DRYRUN=1 (nur Liste). Um die Löschung auszuführen, ändern Sie DRYRUN=0 und speichern Sie die Datei erneut. Sie müssen keine Zeilen auskommentieren/einkommentieren.
A-2 Angabe über Festen ID-Pfad (Einzelnes Terminal)
Dies ist eine vereinfachte Version, die nur eine bestimmte Terminal-ID (einzelne Umgebung) als Ziel hat. Ersetzen Sie xxxxxxx durch Ihre ID.
@echo off
REM ===== MT5 Log-Auto-Löschung (Batch-Version / Feste ID & Massenumschaltung) =====
setlocal enabledelayedexpansion
set "DAYS=30"
set "DRYRUN=1" REM 1=Nur Liste, 0=Löschen
REM Geben Sie die Log-Ordner im MT5-Datenordner an (ID ersetzen)
set "LOGS_PATH=C:\Users\Administrator\AppData\Roaming\MetaQuotes\Terminal\xxxxxxx\Logs"
set "EXPERTS_LOGS=C:\Users\Administrator\AppData\Roaming\MetaQuotes\Terminal\xxxxxxx\MQL5\Logs"
set "TESTER_LOGS=C:\Users\Administrator\AppData\Roaming\MetaQuotes\Terminal\xxxxxxx\Tester\logs"
echo [INFO] DAYS=%DAYS% / DRYRUN=%DRYRUN%
for %%F in ("%LOGS_PATH%" "%EXPERTS_LOGS%" "%TESTER_LOGS%") do (
if exist "%%~F" (
echo [CLEAN] %%~F
if "%DRYRUN%"=="1" (
forfiles /p "%%~F" /s /m *.log /d -%DAYS% /c "cmd /c echo @path"
) else (
forfiles /p "%%~F" /s /m *.log /d -%DAYS% /c "cmd /c del /f /q @path" 2>nul
)
)
)
echo [DONE] Log-Bereinigung abgeschlossen.
endlocal
A-3 Minimale Konfiguration (Ohne DRYRUN, Sofortige Löschung)
Ein minimales Beispiel für die sofortige Löschung (keine Prüfung). **Seien Sie vorsichtig, um versehentliches Löschen zu verhindern.**
@echo off
REM Geben Sie die Log-Ordner im MT5-Datenordner an
set LOGS_PATH="C:\Users\Administrator\AppData\Roaming\MetaQuotes\Terminal\xxxxxxx\Logs"
set EXPERTS_LOGS="C:\Users\Administrator\AppData\Roaming\MetaQuotes\Terminal\xxxxxxx\MQL5\Logs"
set TESTER_LOGS="C:\Users\Administrator\AppData\Roaming\MetaQuotes\Terminal\xxxxxxx\Tester\logs"
REM Löschen Sie Dateien, die älter als 30 Tage sind
forfiles /p %LOGS_PATH% /s /m *.log /d -30 /c "cmd /c del @file"
forfiles /p %EXPERTS_LOGS% /s /m *.log /d -30 /c "cmd /c del @file"
forfiles /p %TESTER_LOGS% /s /m *.log /d -30 /c "cmd /c del @file"
Methode B: Automatische Löschung mit PowerShell (.ps1)
B-1 Empfohlen: $DryRun-Flag für die Massenumschaltung (Unterstützt Mehrere Terminals)
PowerShell ermöglicht sichere Trockenläufe mithilfe von -WhatIf. Sie können den Betrieb einfach durch Umschalten von $DryRun zwischen $true und $false steuern.
# ===== MT5 Log-Auto-Löschung (PowerShell-Version / Mehrere Terminals & Massenumschaltung) =====
# Ausführung mit Administratorrechten empfohlen. $Days / $DryRun nach Bedarf anpassen.
$Days = 30
$DryRun = $true # $true=Nur Liste (keine Löschung), $false=Produktionslöschung
$cutoff = (Get-Date).AddDays(-$Days)
$dataRoot = Join-Path $env:APPDATA 'MetaQuotes\Terminal'
Write-Host "[INFO] Lösche Logs älter als $Days Tage"
Write-Host "[MODE] DryRun=$DryRun"
Write-Host "[ROOT] $dataRoot`n"
$terminals = Get-ChildItem -Path $dataRoot -Directory -ErrorAction SilentlyContinue
foreach ($t in $terminals) {
$folders = @(
Join-Path $t.FullName 'Logs'
Join-Path $t.FullName 'MQL5\Logs'
Join-Path $t.FullName 'Tester\logs'
)
foreach ($folder in $folders) {
if (Test-Path $folder) {
Write-Host "[CLEAN] $folder"
$targets = Get-ChildItem -LiteralPath $folder -Filter *.log -File -ErrorAction SilentlyContinue |
Where-Object { $_.LastWriteTime -lt $cutoff }
if ($DryRun) {
$targets | ForEach-Object { Write-Host $_.FullName }
} else {
$targets | Remove-Item -Force -ErrorAction SilentlyContinue
}
}
}
}
Write-Host "`n[DONE] Log-Bereinigung abgeschlossen."
B-2 Angabe über Festen ID-Pfad (Einzelnes Terminal)
Diese Version zielt nur auf eine bestimmte ID ab. Ersetzen Sie xxxxxxx durch Ihre ID.
# ===== MT5 Log-Auto-Löschung (PowerShell-Version / Feste ID & Massenumschaltung) =====
$Days = 30
$DryRun = $true
$limit = (Get-Date).AddDays(-$Days)
$folders = @(
"C:\Users\Administrator\AppData\Roaming\MetaQuotes\Terminal\xxxxxxx\Logs",
"C:\Users\Administrator\AppData\Roaming\MetaQuotes\Terminal\xxxxxxx\MQL5\Logs",
"C:\Users\Administrator\AppData\Roaming\MetaQuotes\Terminal\xxxxxxx\Tester\logs"
)
Write-Host "[INFO] DAYS=$Days / DryRun=$DryRun"
foreach ($folder in $folders) {
if (Test-Path $folder) {
Write-Host "[CLEAN] $folder"
$targets = Get-ChildItem -Path $folder -Filter *.log -File -ErrorAction SilentlyContinue |
Where-Object { $_.LastWriteTime -lt $limit }
if ($DryRun) {
$targets | ForEach-Object { Write-Host $_.FullName }
} else {
$targets | Remove-Item -Force -ErrorAction SilentlyContinue
}
}
}
Write-Host "[DONE] Log-Bereinigung abgeschlossen."
B-3 Minimale Konfiguration (Sofortige Löschung)
Ein minimales Beispiel für die sofortige Löschung (keine Prüfung). **Seien Sie vorsichtig, um versehentliches Löschen zu verhindern.**
$days = 30
$limit = (Get-Date).AddDays(-$days)
$folders = @(
"C:\Users\Administrator\AppData\Roaming\MetaQuotes\Terminal\xxxxxxx\Logs",
"C:\Users\Administrator\AppData\Roaming\MetaQuotes\Terminal\xxxxxxx\MQL5\Logs",
"C:\Users\Administrator\AppData\Roaming\MetaQuotes\Terminal\xxxxxxx\Tester\logs"
)
foreach ($folder in $folders) {
Get-ChildItem -Path $folder -Filter *.log | Where-Object { $_.LastWriteTime -lt $limit } | Remove-Item -Force
}
Regelmäßige Ausführung mit der Aufgabenplanung planen
Schritte
- Öffnen Sie die Windows „Aufgabenplanung.“
- „Grundlegende Aufgabe erstellen“ → Geben Sie einen Namen ein (z. B. MT5 Log Auto-Löschung).
- Wählen Sie den Trigger (Täglich/Wöchentlich. Eine Zeit mit geringer Last, z. B. spät in der Nacht, wird empfohlen).
- Aktion = „Programm starten.“
- Batch-Version: Programm/Skript:
cmd.exe
Argumente hinzufügen:/c "C:\scripts\DeleteMT5Logs.bat" - PowerShell-Version: Programm/Skript:
powershell.exe
Argumente hinzufügen:-ExecutionPolicy Bypass -File "C:\scripts\DeleteMT5Logs.ps1"
- Batch-Version: Programm/Skript:
- Aktivieren Sie bei Bedarf „Unabhängig von Benutzeranmeldung ausführen“ und „Mit höchsten Rechten ausführen“ (für VPS empfohlen).
- Deaktivieren Sie unter Bedingungen die Einschränkungen bezüglich „Stromversorgung“ (bei VPS oder ständig laufendem PC).
- Aktivieren Sie die „Aufgabenverlauf“ und überprüfen Sie den Erfolg/Misserfolg (
0x0ist Erfolg).
Checkliste für den Sicheren Betrieb
- Löschen Sie nur
.log-Dateien (löschen Sie nichtBases,History,Profilesusw.). - Führen Sie immer zuerst einen Trockenlauf durch:
DRYRUN=1für Batch,$DryRun=$truefür PowerShell. - Beginnen Sie mit einer längeren Aufbewahrungsdauer → verkürzen Sie, wenn keine Probleme auftreten.
- Stellen Sie bei Verwendung mehrerer Instanzen sicher, dass alle ID-Unterordner als Ziel festgelegt sind (das Skript in diesem Artikel erledigt dies automatisch).
- Achten Sie auf unzureichende Berechtigungen oder falsche Pfade (verwenden Sie Pfade, die direkt aus „Datenordner öffnen“ kopiert wurden).
Fehlerbehebung
- Durch Ausführungsrichtlinie blockiert: Starten Sie PowerShell mit
-ExecutionPolicy Bypass. - Zugriff verweigert: Führen Sie mit Administratorrechten aus / Gewähren Sie der Aufgabe „höchste Rechte.“
- Ziele nicht gefunden: Überprüfen Sie erneut den Pfad für die portable Version, die Unterordner für mehrere IDs und die Schreibweise der Ordnernamen.
- Geplante Aufgabe startet nicht: Überprüfen Sie das „Letzte Ausführungsergebnis“ (
0x0ist Erfolg), die Einstellungen für den Startbenutzer/die Bedingungen und den Verlauf.
FAQ
- F. Welche Ordner und welche Dateien soll ich löschen?
- A. Nur
.log-Dateien inLogs,MQL5\LogsundTester\logs. Löschen Sie nichtBases,HistoryoderProfiles. - F. Wie lange ist eine sichere Aufbewahrungsdauer?
- A. Beginnen Sie mit etwa 30 Tagen, und wenn keine Probleme auftreten, können Sie auf 14 oder 7 Tage verkürzen. 14–30 Tage ist ein Richtwert für den Live-Betrieb und 7–14 Tage für Entwicklung/Tests.
- F. Ich verwende mehrere MT5-Instanzen (mehrere IDs). Können alle als Ziel festgelegt werden?
- A. Die Beispiele in diesem Artikel durchsuchen automatisch alle ID-Ordner unter
%APPDATA%\MetaQuotes\Terminal\. - F. Hat die Löschung Auswirkungen auf EAs oder Backtest-Ergebnisse?
- A. Es werden nur die vergangenen Ausgabeprotokolle (Logs) entfernt, die EA-Logik oder die Testergebnisse werden dadurch nicht beeinträchtigt.
- F. Ich möchte die Dateien überprüfen, bevor ich sie lösche.
- A. Stellen Sie
DRYRUN=1für Batch oder$DryRun=$truefür PowerShell ein und führen Sie das Skript aus, um nur eine Liste anzuzeigen. - F. Kann ich dies auch für die portable Version von MT5 verwenden?
- A. Ja. Geben Sie bitte im Skript den absoluten Pfad zu den Ordnern
Logs/MQL5\Logs/Tester\logsan, die sich direkt unter dem Hauptordner der portablen Version befinden.
