Inhalt von Datei wird nach EA Neustart überschrieben [FileSeek ist aktiv]

 

Hi,

die Frage wurde warscheinlich schon mahrfach gestellt und ja es ist eine Anfängerfrage, allerdings werde ich nicht schlau aus dem Tutorial https://www.mql5.com/de/articles/2720 bzw. finde ich mein Problem nicht.

Ich habe einen EA geschrieben, der mir zusätzlich Daten in eine Datei schreiben soll.

Die Abfrage wird in der OnTick() Funktion ausgeführt (vlt. liegt da auch der Fehler)

int filehandle = FileOpen("Test.csv",FILE_READ|FILE_WRITE|FILE_CSV);
if(filehandle != INVALID_HANDLE)
  {
  FileSeek(filehandle,0,SEEK_END);
  FileWrite(filehandle,TimeCurrent(),Symbol());
  FileClose(filehandle);
  Print("File Open OK");
  }
  else
  Print("File Open failed");

Sonlange der EA beim Backtest arbeitet z.b. Test von 01.01.2020 - 01.02.2020 schreibt er die Daten in die Test.csv und zwar Zeile für Zeile. (so soll es sein)

Ist der Test nun beendet und ich mache einen neuen Backtest mit dem selben EA von z.b. 02.02.2020 - 01.03.2020 überschreibt er mir aber alle vorherigen Einträge der Test.csv.

Warum schreibt er wenn der Backtest läuft Zeile für Zeile und überschreibt dann bei einem neuen Backtest die Zeilen. Die Funktion FileSeek sollte doch den Zeiger an das Ende der Datei stellen auch bei einem Neustart des EA?

Vielen Dank für Hilfe

MQL5 Grundlagen der Programmierung: Dateien
MQL5 Grundlagen der Programmierung: Dateien
  • www.mql5.com
Wie viele andere Programmiersprachen besitzt auch MQL5 Funktionen für das Arbeiten mit Dateien. Das Arbeiten mit Dateien ist zwar keine sehr häufige Aufgabe bei der Entwicklung von MQL5 Expert Advisors und Indikatoren, aber jeder Entwickler wird früher oder später damit konfrontiert. Die Palette der Themen, die das Arbeiten mit Dateien...
 

Gibt es im Gesamtcode vorher einen anderen Zugriff, der hier nicht erscheint?

Druck mal vor dem Öffnen der Datei in Log die Größe der Datei.

 

Hi,

sorry für das späte melden.

Ja es wird vorher Code zum Traden ausgeführt (Code möchte ich hier nicht angeben), aber die Datei wird nur geöffnet und geschreiben wenn das Event stattfindet (der Trade). Die Dokumentation soll beim Ausführen des Trades in eine CSV Datei geschrieben werden. Das klappt auch alles, sobald der EA aber - wie bereits geschreiben - abgeschaltet wird oder bzw. MT5 geschlossen und dann erneut gestartet, überschreibt er mir die vorhanden Daten in der Datei.

Die Datei selbst bleibt erhalten das habe ich schon mit dem Erstell- und Änderungsdatum abgeglichen. Durch was auch immer springt der nicht zur letzen Zeile sondern schreibt ab der ersten Zeile alles neu (die alten Einträge bleiben nicht erhalten selbst wenn z.b. 20 Einträge vorhanden waren und beim neuen Test nur 10 neue dazukommen, Ergebnis ist dann 10 Einträge).

Würde es vlt helfen wenn ich die Datei vorher in der OnInit Funktion einlese und den Zeiger ans Ende stelle? (mal ausprobieren)

Merci

 
Beim Start eines Backtests unter MT5 wird die File-Sandbox gelöscht, auch bei einem neuen Pass innerhalb des Optimierens.