Introduction
Cet article explique comment supprimer automatiquement les « anciens fichiers .log » des « logs d’opération (Logs/Journal), » des « logs d’experts (MQL5\Logs/Experts), » et des « logs de backtest (Tester\logs) » de MT5 (MetaTrader 5) pour prévenir l’encombrement du disque. Ceci est réalisable avec les outils standard de Windows : Batch (.bat) ou PowerShell (.ps1). Ce contenu s’adresse à ceux qui souhaitent automatiser le processus décrit dans l’article connexe (Contre-mesures contre l’encombrement des logs MT5 | Comment Supprimer les Logs d’Opération, d’Experts et de Backtest pour Réduire la Taille).
Concept de Suppression Automatique (Prérequis)
- Les logs MT5 sont enregistrés au format
AAAAMMJJ.log, un par date. - La condition de suppression de base est « les fichiers plus anciens que $\text{X}$ jours » (ex. : plus de 30 jours).
- Les dossiers cibles sont principalement trois :
Logs,MQL5\Logs, etTester\logs. - En l’enregistrant dans le « Planificateur de Tâches » de Windows, vous pouvez automatiser son exécution quotidienne/hebdomadaire.
Vérification des Dossiers Cibles et des Chemins d’Accès
Ouvrez l’Explorateur via le menu supérieur de MT5 « Fichier → Ouvrir le Dossier de Données » et vérifiez les sous-dossiers suivants :
…\Terminal\<Long ID>\Logs(Logs d’Opération)…\Terminal\<Long ID>\MQL5\Logs(Experts-Conseillers/Indicateurs)…\Terminal\<Long ID>\Tester\logs(Logs de Backtest)
Si vous utilisez plusieurs terminaux (plusieurs ID), des dossiers de logs du même nom existent sous chaque ID. Pour la version portable de MT5, MQL5 et Tester sont placés directement sous le dossier racine réel.
Durée de Rétention (Ligne Directrice de Politique Opérationnelle)
- Opération en direct (y compris VPS) : Conserver 14 à 30 jours
- Développement/Vérification : 7 à 14 jours (Rétention plus courte recommandée en raison du volume élevé de logs)
- Backtest uniquement : Supprimer hebdomadairement ou quotidiennement, selon le cycle de test
Commencez par une période plus longue, comme 30 jours, et réduisez progressivement s’il n’y a pas de problèmes.
Méthode A : Suppression Automatique par Fichier Batch (.bat)
A-1 Recommandé : Bascule Globale avec le Flag DRYRUN (Supporte les Terminaux Multiples)
Cette configuration permet une bascule globale entre « liste uniquement » et « suppression en production » à l’aide du flag DRYRUN pour éviter les suppressions accidentelles. Elle analyse automatiquement tous les ID (terminaux) sous %APPDATA%\MetaQuotes\Terminal.
C’est pratique lorsque vous exécutez plusieurs instances MT5 sur un seul PC ou VPS.
@echo off
REM ===== Suppression Automatique des Logs MT5 (Version Batch / Terminaux Multiples & Bascule Globale) =====
REM Exécution en tant qu'administrateur recommandée. Modifiez DAYS/DRYRUN si nécessaire.
setlocal enabledelayedexpansion
set "DAYS=30" REM Cible les fichiers plus anciens que ce nombre de jours (ex. : 30)
set "DRYRUN=1" REM 1=Liste uniquement (pas de suppression), 0=Suppression en production
set "DATA_ROOT=%APPDATA%\MetaQuotes\Terminal"
echo [INFO] Cible de nettoyage des logs MT5 : fichiers plus anciens que %DAYS% jours
echo [MODE] DRYRUN=%DRYRUN% (1=liste uniquement, 0=supprimer)
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 Liste uniquement (pas de suppression)
forfiles /p "%%~F" /m *.log /d -%DAYS% /c "cmd /c echo @path"
) else (
REM Suppression en production (suppression silencieuse / suppression d'erreur)
forfiles /p "%%~F" /m *.log /d -%DAYS% /c "cmd /c del /f /q @path" 2>nul
)
)
)
)
echo.
echo [DONE] Nettoyage des logs terminé.
endlocal
Comment Basculer : Pour les tests, utilisez DRYRUN=1 (liste uniquement). Pour exécuter la suppression, changez DRYRUN=0 et enregistrez le fichier. Vous n’avez pas besoin de commenter/décommenter des lignes.
A-2 Spécification par Chemin d’Accès d’ID Fixe (Terminal Unique)
Ceci est une version simplifiée ciblant uniquement un ID de terminal spécifique (environnement unique). Remplacez xxxxxxx par votre ID.
@echo off
REM ===== Suppression Automatique des Logs MT5 (Version Batch / ID Fixe & Bascule Globale) =====
setlocal enabledelayedexpansion
set "DAYS=30"
set "DRYRUN=1" REM 1=Liste uniquement, 0=Supprimer
REM Spécifiez les dossiers de logs dans le dossier de données MT5 (remplacez l'ID)
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] Nettoyage des logs terminé.
endlocal
A-3 Configuration Minimale (Sans DRYRUN, Suppression Immédiate)
Un exemple minimal pour une suppression immédiate (sans vérification). **Attention à la suppression accidentelle.**
@echo off
REM Spécifiez les dossiers de logs dans le dossier de données MT5
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 Supprimer les fichiers plus anciens que 30 jours
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"
Méthode B : Suppression Automatique par PowerShell (.ps1)
B-1 Recommandé : Flag $DryRun pour la Bascule Globale (Supporte les Terminaux Multiples)
PowerShell permet des essais à sec sécurisés en utilisant -WhatIf. Vous pouvez gérer l’opération en basculant simplement $DryRun entre $true et $false.
# ===== Suppression Automatique des Logs MT5 (Version PowerShell / Terminaux Multiples & Bascule Globale) =====
# Exécution en tant qu'administrateur recommandée. Ajustez $Days / $DryRun si nécessaire.
$Days = 30
$DryRun = $true # $true=Liste uniquement (pas de suppression), $false=Suppression en production
$cutoff = (Get-Date).AddDays(-$Days)
$dataRoot = Join-Path $env:APPDATA 'MetaQuotes\Terminal'
Write-Host "[INFO] Suppression des logs plus anciens que $Days jours"
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] Nettoyage des logs terminé."
B-2 Spécification par Chemin d’Accès d’ID Fixe (Terminal Unique)
Cette version cible uniquement un ID spécifique. Remplacez xxxxxxx par votre ID.
# ===== Suppression Automatique des Logs MT5 (Version PowerShell / ID Fixe & Bascule Globale) =====
$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] Nettoyage des logs terminé."
B-3 Configuration Minimale (Suppression Immédiate)
Un exemple minimal pour une suppression immédiate (sans vérification). **Attention à la suppression accidentelle.**
$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
}
Planification de l’Exécution Régulière avec le Planificateur de Tâches
Étapes
- Ouvrez le « Planificateur de Tâches » de Windows.
- « Créer une Tâche de Base » → Entrez un Nom (ex. : SuppressionAutoLogsMT5).
- Sélectionnez le Déclencheur (Quotidien/Hebdomadaire. Une heure à faible charge, comme tard le soir, est recommandée).
- Action = « Démarrer un programme. »
- Version Batch : Programme/script :
cmd.exe
Ajouter des arguments :/c "C:\scripts\DeleteMT5Logs.bat" - Version PowerShell : Programme/script :
powershell.exe
Ajouter des arguments :-ExecutionPolicy Bypass -File "C:\scripts\DeleteMT5Logs.ps1"
- Version Batch : Programme/script :
- Si nécessaire, activez « Exécuter si l’utilisateur est connecté ou non » et « Exécuter avec les privilèges les plus élevés » (recommandé pour les VPS).
- Désactivez les restrictions liées à l' »Alimentation » dans les Conditions (pour les VPS ou les PC toujours allumés).
- Activez l' »Historique des Tâches » et confirmez le succès/échec (
0x0est un succès).
Liste de Contrôle pour une Opération Sûre
- Ciblez uniquement les fichiers
.logpour la suppression (ne supprimez pasBases,History,Profiles, etc.). - Effectuez toujours un essai à sec d’abord :
DRYRUN=1pour Batch,$DryRun=$truepour PowerShell. - Commencez par une durée de rétention plus longue → raccourcissez si aucun problème n’apparaît.
- Lors de l’utilisation de plusieurs instances, assurez-vous que tous les sous-dossiers ID sont ciblés (le script de cet article le gère automatiquement).
- Soyez prudent concernant les autorisations insuffisantes ou les chemins d’accès incorrects (utilisez les chemins d’accès copiés directement depuis « Ouvrir le Dossier de Données »).
Dépannage
- Bloqué par la Politique d’Exécution : Démarrez PowerShell avec
-ExecutionPolicy Bypass. - Accès Refusé : Exécutez avec les privilèges d’administrateur / Accordez les « privilèges les plus élevés » à la tâche.
- Cibles Introuvables : Revérifiez le chemin d’accès pour la version portable, les sous-dossiers pour les ID multiples, et l’orthographe des noms de dossiers.
- La Tâche Planifiée ne se Lance pas : Vérifiez le « Dernier Résultat d’Exécution » (
0x0est un succès), les paramètres utilisateur/conditions de démarrage, et l’historique.
FAQ
- Q. Quels dossiers et quels fichiers dois-je supprimer ?
- A. Uniquement les fichiers
.logdansLogs,MQL5\Logs, etTester\logs. Ne supprimez pasBases,History, ouProfiles. - Q. Quelle est la durée de rétention sécuritaire ?
- A. Commencez par environ 30 jours, et s’il n’y a pas de problèmes, vous pouvez raccourcir à 14 ou 7 jours. 14–30 jours est une ligne directrice pour l’opération en direct, et 7–14 jours pour le développement/test.
- Q. J’utilise plusieurs instances MT5 (plusieurs ID). Toutes peuvent-elles être ciblées ?
- A. Les exemples de cet article analysent automatiquement tous les dossiers ID sous
%APPDATA%\MetaQuotes\Terminal\. - Q. La suppression affecte-t-elle les EAs ou les résultats de backtest ?
- A. Elle ne fait que supprimer les enregistrements de sortie passés (logs) et n’affecte pas la logique de l’EA ou les résultats des tests.
- Q. Je souhaite vérifier les fichiers avant de les supprimer.
- A. Réglez
DRYRUN=1pour Batch ou$DryRun=$truepour PowerShell, et exécutez le script pour afficher une liste uniquement. - Q. Puis-je utiliser ceci pour la version portable de MT5 ?
- A. Oui. Veuillez spécifier le chemin d’accès absolu aux dossiers
Logs/MQL5\Logs/Tester\logssitués directement sous le dossier principal de la version portable dans le script.
