Erzeugt mehr als 660, überlastet die Festplatte mit Protokolldateien und verlangsamt die Optimierungsgeschwindigkeit - Seite 3

 

Das Logfile-Verzeichnis ist immer im /tester-Verzeichnis, es könnte nur sein, dass Ihres im UserData-Ordner liegt, da ich MT4 im /portable-Modus verwende.

Ja, man kann den Tester über die Kommandozeile starten, aber das hilft nicht weiter, die Protokollierung erfolgt seit Build 670 programmintern, es gibt keine Möglichkeit, sie per Kommandozeile abzuschalten.

Die Umleitung der Ausgabe nach NUL hat nichts mit der internen Protokollierung zu tun. Ihre Idee würde lediglich die Ausgabe einer Eingabeaufforderung nach NUL umleiten (d.h. die eigentliche Textausgabe). Für eine Anwendung mit einer grafischen Benutzeroberfläche wie MT4 bringt das absolut nichts.

 

Mehr Spaß mit den Baumstämmen!



 

hmm - einer meiner Brokes hat auf b765 aktualisiert - kann es sein, dass diese Version diese "Funktion" verloren hat?

Verwenden Sie ein Powershell-Skript, das alle Protokolldateien in Ihrem Ordner sofort und rechtzeitig löscht?

NICHT GETESTET!!

$path = "C:\Program Files\MetaTrader\tester\logs"   #  correct path?
while($true) {                                      #  endless loop switch off manually!!
    $files = Get-ChildItem -Path $path |  Where-Object {-not $_.PsIsContainer -and $_.name -like "*.log"}
    foreach ($file in $files) {                     #  Folder are excluded
       Remove-Item $file.FullName -Force -ErrorAction SilentlyContinue  
    }
    Start-Sleep -s 60                               #  sleep 60 seconds 
}
 
OK, ich werde mir B765 ansehen. Wie gesagt, die Protokolldateien werden von metatrader.exe gesperrt, während es läuft, man kann sie nicht löschen, ohne das Terminal vorher zu schließen, was die eigentliche Optimierung abbrechen würde.
 

Deshalb dies:

Remove-Item $file.FullName -ErrorAction SilentlyContinue  

Dateien, die nicht entfernt werden konnten, werden 'Silently[...]' umgangen und beim nächsten Mal gelöscht.

Ich denke, Sie können -Force entfernen (so habe ich es getan).

 
Aber "das nächste Mal" ist zu spät, da dies nach einem Terminal-Neustart bedeuten würde (sobald die Dateien entsperrt sind), in welchem Fall die Festplatte bereits voll wäre (was mein eigentliches Problem ist). "Erzwingen" funktioniert auch nicht, ich habe es versucht, aber wie gesagt, die Dateien werden von Metatrader gesperrt, bis das Terminal heruntergefahren wird und Ihr Skript schlägt daher fehl.
 

NEIN! Nächstes Mal nach den 60 Sekunden Schlaf! Habe ich es nicht geschrieben?

Das Skript sucht jede Minute nach zu löschenden Logs!

Da - so meine Vermutung - ein Testlauf nur 1 Log-Datei blockiert, können die zuvor erstellten gelöscht werden - aber probieren Sie es selbst.

Kann ich nicht, da ich im Moment nichts zu optimieren habe.

 
mt4user2000:

Was meinen Sie damit? Die Protokolle, von denen ich spreche, protokollieren jeden SL, der während der Optimierung aufgetreten ist, für jeden Durchgang der Optimierung. Ich habe sie bereits gepostet, was also soll daran anders interpretiert werden? Es ist klar ersichtlich, was protokolliert wird, und das ist eigentlich gar nicht das Problem. Das Problem ist, dass es überhaupt protokolliert, obwohl es das während der Optimierung nicht sollte, da es die Festplatte verstopft.

Sie lesen die Beiträge anderer Leute nicht.

Ich habe meine Logs gepostet, aus denen Sie sehen können, dass ich Stoploss verwende und dass Stoploss vom System ausgelöst wird. Ich habe auch angegeben, unter welchen Builds ich Tests durchgeführt habe.
Aber Sie stellen dieselben Fragen, die bereits beantwortet wurden.

Und gleichzeitig veröffentlichen Sie umfangreiche Protokolle, die keine Informationen enthalten.

mt4user2000:

Darf ich vorschlagen, dass Sie lernen, wie man Protokolle findet? X Beiträge lang erzählst du mir "nein, es wird nichts protokolliert" in Build 670 und 745 und jetzt sagst du plötzlich, dass es auch auf deinem System protokolliert? LOL

Ich habe dir bereits gesagt, dass dieses Verhalten irgendwie ausgelöst wird und dass es offensichtlich noch einen anderen Faktor neben der genetischen Optimierung braucht, um es zu zeigen.

Aber es ist einfacher und bequemer, LOL LOL zu schreiben, als zu lesen und zu versuchen zu verstehen.

Außerdem, was ist Ihr Problem? Entfernen Sie den SL und beenden Sie Trades mit OrderClose().

Wie Sie schreiben, ist es offensichtlich, dass Sie wissen, dass MQ sich nicht um diesen oder andere kleine Fehler kümmert.

 

graziani,

das ist nicht die beste Lösung, aber Sie können versuchen, metatrader.exe das Schreiben in das Log-Verzeichnis zu verbieten, indem Sie die ACLs des Log-Verzeichnisses bearbeiten.

Vorsicht: machen Sie das nur, wenn Sie wissen, was Sie tun.

Grüße

 

graziani: sorry, ich werde nicht weiter auf deine Beiträge eingehen.

gooly: ja, ich weiß, was du meinst, aber es kann die Logdateien immer noch nicht löschen, sie sind gesperrt und es funktioniert daher nicht. Versuchen Sie es einfach selbst.

ics-mq4: das habe ich auch versucht und es funktioniert, aber leider verlangsamt es die Optimierung um den Faktor 10. Höchstwahrscheinlich, weil Metatrader mit Fehlern bombardiert wird, weil er nicht in das Verzeichnis schreiben kann und es ein paar Mal wiederholt, bevor er aufgibt. Ein anderer Trick besteht darin, das "logs"-Verzeichnis zu löschen und eine Datei mit demselben Namen zu erstellen, so dass Metatrader das "logs"-Verzeichnis nicht mehr erstellen kann. Aber auch in diesem Fall kommt es zu einer starken Verlangsamung der Optimierung.