Diskussion zum Artikel "Vereinfachung von Datenbanken in MQL5 (Teil 1): Einführung in Datenbanken und SQL"

 

Neuer Artikel Vereinfachung von Datenbanken in MQL5 (Teil 1): Einführung in Datenbanken und SQL :

Wir erforschen, wie man Datenbanken in MQL5 mit den systemeigenen Funktionen der Sprache manipuliert. Wir decken alles ab, vom Erstellen, Einfügen, Aktualisieren und Löschen von Tabellen bis zum Import und Export von Daten, alles mit Beispielcode. Der Inhalt dient als solide Grundlage für das Verständnis der internen Mechanismen des Datenzugriffs und ebnet den Weg für die Diskussion von ORM, die wir in MQL5 aufbauen werden.

Wenn wir über MQL5 sprechen, drehen sich die meisten Gespräche um Indikatoren, Expert Advisors, Handelsstrategien und Backtests. Aber irgendwann wird jedem Händler oder Entwickler, der ernsthaft mit Automatisierung arbeitet, klar, dass die Datenpersistenz entscheidend ist. Und genau hier kommen Datenbanken ins Spiel. Sie könnten sogar denken: „Aber ich speichere meine Ergebnisse bereits in CSV- oder TXT-Dateien, warum sollte ich die Sache mit einer Datenbank verkomplizieren?“ Die Antwort liegt in der Organisation, der Leistung und der Zuverlässigkeit, die eine Datenbank bietet, insbesondere wenn es um große Informationsmengen oder komplexe Vorgänge geht.

Im Zusammenhang mit MQL5 von Datenbanken zu sprechen, mag auf den ersten Blick wie eine Übertreibung erscheinen. Schließlich ist die Sprache stark auf den Handel, Indikatoren und automatische Ausführungsroboter ausgerichtet. Wenn wir jedoch mit Strategien arbeiten, die große Datenmengen, komplexe Backtests oder detaillierte Auftragsdatensätze umfassen, erweist sich die Einfachheit von Standarddateien schnell als unzureichend. Wenn Sie wissen, wie man eine Datenbank erstellt, auf sie zugreift und sie manipuliert, wird sie zu einem Werkzeug, das Ihre Handelsabläufe verändern kann.

Ein Händler, der beginnt, Datenbanken in MQL5 zu erforschen, wird Dutzende von nativen Funktionen und eigenständigen Beispielen finden. Es reicht aus, Datensätze zu speichern und abzufragen, aber bald stellt sich die Frage: „Wie organisiert man all dies auf saubere und wiederverwendbare Weise in echten Projekten?* In dieser Artikelserie gehen wir über die Dokumentation hinaus. Wir beginnen mit den Grundfunktionen von SQLite und gehen Schritt für Schritt vor, um ein **mini-ORM in MQL5 (TickORM)** zu erstellen. Die Idee besteht darin, direkte Aufrufe in gut gestaltete Schichten umzuwandeln, die von JDBC und JPA in Java inspiriert, aber an das MetaTrader-Ökosystem angepasst sind.

In diesem Artikel zeige ich die Grundlagen von Datenbanken in MQL5 und SQL. Dies ebnet den Weg für die nachfolgenden Artikel zur Kapselung dieser Funktionen in Klassen, Schnittstellen und schließlich im ORM.


Autor: joaopedrodev

 
Ich lese Ihre technischen Artikel gerne!
 

In diesem ersten Artikel habe ich nur die Spitze des Eisbergs gezeigt. TickORM geht viel weiter: Die Idee ist, die Art und Weise, wie Sie mit Datenbanken in MQL5 arbeiten, komplett zu ändern. Das Ziel ist es, etwas Geradliniges, Einfaches und Mächtiges zu schaffen, bei dem das Öffnen einer Datenbank, das Erstellen eines Repositorys und das Manipulieren von Entitäten so selbstverständlich ist wie das Arbeiten mit Arrays. Am Ende der Serie wird die Verwendung dem unten stehenden Beispiel ähneln, bei dem Sie Datensätze speichern, suchen, aktualisieren und löschen können, ohne eine einzige manuelle Abfrage zu schreiben. Dies ist der Weg, den ich mit TickORM beschreite.

int OnInit(void)
  {
   IDatabaseManager *database = new CDatabaseManager();
   if(database.OpenDatabase("trades.sqlite"))
     {
      //--- Instanz-Repository
      AccountRepository repo(database);
      
      //--- Einfügen
      Account acc;
      acc.number = 10;
      repo.save(acc);
      
      //--- Alle auswählen
      Account acc[];
      repo.findAll(acc);
      ArrayPrint(acc);
      
      //--- Auswahl nach ID
      Account acc = repo.findById(1);
      Print(acc.id);
      Print(acc.number);
      
      //--- Aktualisierung
      Account acc;
      acc.id = 1;
      acc.number = 10;
      repo.update(acc);
      
      //--- Löschen nach ID
      repo.deleteById(1);
     }
   
   database.CloseDatabase();
   delete database;
   return(INIT_SUCCEEDED);
  }
 
Ein ordentliches ORM für mql5 ist im Moment sehr notwendig. Zum Glück haben wir Leute wie Sie, die solche coolen wichtigen Bibliotheken erstellen, die unser Leben erleichtern. Ich liebe all die Projekte und Artikel, an denen Sie bisher gearbeitet haben, Mann. Alle von ihnen haben einen ernsthaften Schmerzpunkt gelöst, den ich bei der Arbeit mit mql5 für bestimmte Aufgaben hatte.
 
joaopedrodev mit Datenbanken in MQL5 arbeiten, komplett zu ändern. Das Ziel ist es, etwas Unkompliziertes, Einfaches und Leistungsstarkes zu schaffen, bei dem das Öffnen einer Datenbank, das Erstellen eines Repository und die Manipulation von Entitäten so selbstverständlich ist wie die Arbeit mit Arrays. Am Ende der Serie wird die Verwendung dem unten stehenden Beispiel ähneln, bei dem Sie Datensätze speichern, suchen, aktualisieren und löschen können, ohne eine einzige manuelle Abfrage zu schreiben. Dies ist der Weg, den ich mit TickORM beschreite.

Zu Ihrer Information: Eine ORM-Implementierung für MQL5 wird in diesem Buch vorgestellt.

MQL5 Book: Advanced language tools / SQLite database / OOP (MQL5) and SQL integration: ORM concept
MQL5 Book: Advanced language tools / SQLite database / OOP (MQL5) and SQL integration: ORM concept
  • www.mql5.com
The use of a database in an MQL program implies that the algorithm is divided into 2 parts: the control part is written in MQL5, and the execution...