Mach ne SQL in Memory und nutze diese als Datenspeicher.
Du wirst sonst verrückt.
Mag am Anfang schwer sein, lohnt aber hinten raus.
Scheint wohl wahr zu sein. Meinst du das hier:
https://www.mql5.com/de/articles/862
CARL SCHREIBER´s Ansatz
int hdl = FileOpen(fName,FILE_READ|FILE_SHARE_READ|FILE_BIN|FILE_COMMON);
if(hdl < 0) {/* Fehlermeldung */}
string c, allLines[], allCells[],
f = FileReadString(hdl,(int)FileSize(hdl)); // lese ganze DateiFileClose(hdl);
int nZ,nL = StringSplit(f,StringGetCharacter("\n",0),allLines); // jetzt hab ich ein Array mit alle Zeilenwhile(nL-->0) {
nZ = StringSplit( allLines[nL] ,StringGetCharacter(";",0),allCells); // jetzt hab ich ein Array mit allen Zellen der Zeilewhile(nZ-->0) {
c = allCells[nZ]; // alle Zellen werden verarbeitet
...
}
}
/* ungetestet */
Habe deinen Ansatz mal weiter verfolgt. Die FileReadString() liest jeweils nur eine Zeile aus. Musste sie daher in eine while Schleife packen, damit sie mir alle Zeilen liest. Das Problem: Er spuckt eine Fehlermeldung aus "Abnormal Termination" und braucht über 3Minuten um dann mal mein Print statement auszuspucken. die letzte Zahl des Prints ist der Zähler i, also die Größe des Arrays. Wieso braucht die Kiste so lange um die paar Zeilen zu lesen und in arrays zu verpacken..?
string c, allLines[], allCells[], fileString,line[];
string fName = "AAVEUSDT_2019_2020_AddHistory.csv";
int nZ,nL,i=0;
intOnInit()
{
int fileHandle = FileOpen(fName,FILE_READ|FILE_CSV|FILE_ANSI); //create Handleif(fileHandle < 0)Print( "create Handle error: ",GetLastError()); //Errorwhile(!FileIsEnding(fileHandle)) //bis zum ende des files
{
ArrayResize(line,i+1); //Vergrößere das Array nach jedem Durchlauf um 1
fileString = FileReadString(fileHandle,(int)FileSize(fileHandle)); // lese ganze Datei
line[i] = fileString; //Zeile an der stelle i mit dem filestrign befüllen
i++;
}
FileClose(fileHandle);
Print(line[4]," ",i); // zeile an der Stelle 4 und die Zählergröße ireturn(INIT_SUCCEEDED);
}
Dieser Beitrag richtet sich an Entwickler, die in ihren Projekten gerne SQL verwenden möchten. Er erklärt die Funktionsweise und Vorteile von SQLite. Für diesen Beitrag sind keine speziellen Kenntnisse der SQLite-Funktionen nötig, doch ein Grundverständnis von SQL wäre durchaus hilfreich.
Ich habe die abn. Termination noch nie gehabt - mit meiner Lösung
habs damit versucht, auch wenn ich dachte, dass man für ein.csv file auch FILE_CSV nehmen muss.
Es funktioniert teilweise. wenn ich aber eine Zeile > 200 auswähle, sagt er, dass das array out of range sei. Programmieren ist wirklich die Größte HErausforderung meines Lebens. Danke, dass ihr mir alle beisteht!
Dieser Beitrag richtet sich an Entwickler, die in ihren Projekten gerne SQL verwenden möchten. Er erklärt die Funktionsweise und Vorteile von SQLite. Für diesen Beitrag sind keine speziellen Kenntnisse der SQLite-Funktionen nötig, doch ein Grundverständnis von SQL wäre durchaus hilfreich.
habs damit versucht, auch wenn ich dachte, dass man für ein.csv file auch FILE_CSV nehmen muss.
Es funktioniert teilweise. wenn ich aber eine Zeile > 200 auswähle, sagt er, dass das array out of range sei. Programmieren ist wirklich die Größte HErausforderung meines Lebens. Danke, dass ihr mir alle beisteht!
Wenn Du nicht einmal die Dok. über die verwendeten Funktionen liest, die, so wie Du sie verwendest, nicht funktionieren, machst Du Dir das Leben extra und unnötig schwer.
habs damit versucht, auch wenn ich dachte, dass man für ein.csv file auch FILE_CSV nehmen muss.
Es funktioniert teilweise. wenn ich aber eine Zeile > 200 auswähle, sagt er, dass das array out of range sei. Programmieren ist wirklich die Größte HErausforderung meines Lebens. Danke, dass ihr mir alle beisteht!
Hast du das Wissen über die Datenbankprogrammierung von hier? https://www.mql5.com/de/articles/862
https://www.mql5.com/de/articles/7463
Weder noch, ehrlich gesagt arbeite ich schon sehr lange mit MySQL und habe das Wissen daher und aus PHP-Projekten.
Meine Empfehlung geht in die Richtung dieses Artikels, den du genannt hast.
https://www.mql5.com/de/articles/7463
Die Dokumentation ist eine Standard-Pflicht-Lektüre, ich empfehle diese auf Englisch zu lesen.
Auch Fehlerhandhabung muss ein Grundsatz sein, besonders wenn du anfängst zu lernen.
Generell gilt auch sich Beispielcode zu suchen, in der CodeBase und diese zu lesen. Es ist viel Zeitaufwand, besonders am Anfang. Lohnt aber in jedem Fall.
Für SQL kann ich die MySQL Dokumentation empfehlen.
Warum deine Schleife so langsam ist, kann mit dem Dritten Parameter von ArrayResize zusammenhängen. -Lies mal nach, was der macht.
3 Minuten sind ein Zeichen für einen Fehler.
Sporadische Fehler sind ein Zeichen einer fehlerhaften Herangehensweise, können aber auch andere Ursachen haben. Generell solltest du immer davon ausgehen, dass der Fehler vor dem Gerät sitzt. - Selten ist das Gerät schuld.
Die Entwicklung von Handelsstrategien ist mit dem Umgang mit großen Datenmengen verbunden. Jetzt können Sie mit Datenbanken mit SQL-Abfragen auf der Basis von SQLite direkt in MQL5 arbeiten. Ein wichtiges Merkmal dieser Engine ist, dass die gesamte Datenbank in einer einzigen Datei auf dem PC des Benutzers abgelegt wird.
ich würde dir ebenfalls den Einsatz einer SQL-Datenbank (z.B. MySQL) empfehlen - ist zwar etwas mehr Aufwand, aber die anderen Ansätze bringen dich bei großen Datenmengen nicht wirklich weiter.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Erlauben Sie die Verwendung von Cookies, um sich auf der Website MQL5.com anzumelden.
Bitte aktivieren Sie die notwendige Einstellung in Ihrem Browser, da Sie sich sonst nicht einloggen können.
Sie sind angemeldet. Die Zwei-Faktor-Authentifizierung wurde deaktiviert. Richten Sie sie erneut ein und scannen Sie einen neuen QR-Code oder fahren Sie mit deaktivierter Zwei-Faktor-Authentifizierung fort.
Scheint wohl wahr zu sein. Meinst du das hier:
https://www.mql5.com/de/articles/862
Habe deinen Ansatz mal weiter verfolgt. Die FileReadString() liest jeweils nur eine Zeile aus. Musste sie daher in eine while Schleife packen, damit sie mir alle Zeilen liest.

Das Problem: Er spuckt eine Fehlermeldung aus "Abnormal Termination" und braucht über 3Minuten um dann mal mein Print statement auszuspucken. die letzte Zahl des Prints ist der Zähler i, also die Größe des Arrays. Wieso braucht die Kiste so lange um die paar Zeilen zu lesen und in arrays zu verpacken..?
Du verwendest nicht die Option FILE_BIN, dann ...
Ich habe die abn. Termination noch nie gehabt - mit meiner Lösung
Du verwendest nicht die Option FILE_BIN, dann ...
Ich habe die abn. Termination noch nie gehabt - mit meiner Lösung
habs damit versucht, auch wenn ich dachte, dass man für ein.csv file auch FILE_CSV nehmen muss.
Es funktioniert teilweise. wenn ich aber eine Zeile > 200 auswähle, sagt er, dass das array out of range sei. Programmieren ist wirklich die Größte HErausforderung meines Lebens. Danke, dass ihr mir alle beisteht!
@Dominik Egert
Hast du das Wissen über die Datenbankprogrammierung von hier?
https://www.mql5.com/de/articles/862
https://www.mql5.com/de/articles/7463
habs damit versucht, auch wenn ich dachte, dass man für ein.csv file auch FILE_CSV nehmen muss.
Es funktioniert teilweise. wenn ich aber eine Zeile > 200 auswähle, sagt er, dass das array out of range sei. Programmieren ist wirklich die Größte HErausforderung meines Lebens. Danke, dass ihr mir alle beisteht!
Wenn Du nicht einmal die Dok. über die verwendeten Funktionen liest, die, so wie Du sie verwendest, nicht funktionieren, machst Du Dir das Leben extra und unnötig schwer.
habs damit versucht, auch wenn ich dachte, dass man für ein.csv file auch FILE_CSV nehmen muss.
Es funktioniert teilweise. wenn ich aber eine Zeile > 200 auswähle, sagt er, dass das array out of range sei. Programmieren ist wirklich die Größte HErausforderung meines Lebens. Danke, dass ihr mir alle beisteht!
@Dominik Egert
Hast du das Wissen über die Datenbankprogrammierung von hier?
https://www.mql5.com/de/articles/862
https://www.mql5.com/de/articles/7463
Weder noch, ehrlich gesagt arbeite ich schon sehr lange mit MySQL und habe das Wissen daher und aus PHP-Projekten.
Meine Empfehlung geht in die Richtung dieses Artikels, den du genannt hast.
https://www.mql5.com/de/articles/7463
Die Dokumentation ist eine Standard-Pflicht-Lektüre, ich empfehle diese auf Englisch zu lesen.
Auch Fehlerhandhabung muss ein Grundsatz sein, besonders wenn du anfängst zu lernen.
Generell gilt auch sich Beispielcode zu suchen, in der CodeBase und diese zu lesen. Es ist viel Zeitaufwand, besonders am Anfang. Lohnt aber in jedem Fall.
Für SQL kann ich die MySQL Dokumentation empfehlen.
Warum deine Schleife so langsam ist, kann mit dem Dritten Parameter von ArrayResize zusammenhängen. -Lies mal nach, was der macht.
3 Minuten sind ein Zeichen für einen Fehler.
Sporadische Fehler sind ein Zeichen einer fehlerhaften Herangehensweise, können aber auch andere Ursachen haben. Generell solltest du immer davon ausgehen, dass der Fehler vor dem Gerät sitzt. - Selten ist das Gerät schuld.
Hi,
ich würde dir ebenfalls den Einsatz einer SQL-Datenbank (z.B. MySQL) empfehlen - ist zwar etwas mehr Aufwand, aber
die anderen Ansätze bringen dich bei großen Datenmengen nicht wirklich weiter.
Viele GrüßeOkay, Neustart. Danke für deinen Hinweis, Carl. Werde mir den Tipp merh zu Herzen nehmen.

Mittlerweile ist es mir gelungen, Daten aus einer .sqlite Datei abzufragen. Nun wollte ich ein .csv File in den Mt5 einlesen.
Mienes wissens müsste ich über:
und dem sich öffnenden Fenster,

das .csv file importieren können. Der Mt5 spuckt mir allerdings folgenden Fehler aus:

Habt ihr einen Schimmer, woran das liegen könnte?