Diskussion zum Artikel "Wie man auf die MySQL-Datenbank von MQL5 (MQL4) aus zugreift"

 

Neuer Artikel Wie man auf die MySQL-Datenbank von MQL5 (MQL4) aus zugreift :

Dieser Beitrag beschreibt die Entwicklung einer Schnittstelle zwischen MQL und der MySQL-Datenbank, diskutiert bestehende praktische Lösungen und bietet eine bequemere Art der Implementierung einer Library zur Arbeit mit Datenbanken an. Zudem enthält er eine detaillierte Beschreibung der Funktionen, der Struktur der Schnittstelle, Beispiele und einige der spezifischen Merkmale der Arbeit mit MySQL. Was die Software-Lösungen angeht, finden sich im Anhang an diesen Beitrag die Dateien der dynamischen Libraries, Dokumentationen und Script-Beispiele für die MQL4 und MQL5 Sprachen.

Das Problem der Interaktion von MQL mit Datenbanken ist nicht neu, doch ist es immer noch ungelöst. Die Arbeit mit Datenbanken kann die Möglichkeiten von MetaTrader erheblich verbessern: Speicherung und Analyse der Kurshistorie, Kopieren von Handel von einer Handelsplattform auf eine andere, Lieferung von Notierungen/Handel in Echtzeit, aufwendige analytische Berechnungen auf Serverseite und/oder Verwendung eines Terminplans, Monitoring und remote Kontrolle von Konten mittels Web-Technologien.

Auf jeden Fall hat es viele Versuche gegeben, von der Kombination von MQL und MySQL zu profitieren. Einige dieser Lösungen sind in der CodeBase vorhanden.Jeder, der in seinen MQL-Projekten mit Datenbanken wird arbeiten müssen, hat daher zwei Optionen: entweder seine eigene Lösung zu entwickeln und jeden einzelnen Teil zu kennen oder irgendeine Lösung Dritter zu verwenden/anzupassen, sich mit ihrer Anwendung vertraut zu machen und alle Mängel selbst herauszufinden, die sein Projekt behindern würden.

Ich selbst war auch auf den Einsatz von Datenbanken angewiesen und habe die beiden Optionen bei der Entwicklung eines ziemlich komplexen Handelsroboters selbst erfahren müssen. Nachdem ich bestehende Projekte durchforstet und eine große Menge von Lösungen studiert habe, wurde mir klar, dass keine der gefundenen Implementierungen mir dabei helfen konnten, meinen Handelsroboter auf eine "professionelle Stufe" zu bringen.

Zudem bin ich auch auf absurde Lösungen gestoßen, wie z.B.: DML/DDL-Abläufe (Daten einfügen/aktualisieren/löschen, Objekte in einer Datenbank erzeugen/verwerfen) wurden mittels der Standard libmysql.dll-Datei ausgeführt, und die Datenauswahl (AUSWÄHLEN) war in der Tat als eine HTTP-Suchanfrage (mittels inet.dll) an ein PHP-Script implementiert, das sich auf dem Web-Server auf der MySQL-Serverseite befand. Die SQL-Suchanfragen waren in das PHP-Script geschrieben.

Mit anderen Worten: damit das Projekt laufen konnte, musste man die folgenden Komponenten verfügbar, konfiguriert und laufen haben: MySQL-Server, Apache/IIS Web-Server, PHP/ASP-Scripts auf Serverseite. Eine Kombination einer reichlich großen Zahl an Technologien. Das kann natürlich unter gewissen Umständen akzeptabel sein, doch wenn die einzige Aufgabe darin besteht, Daten aus der Datenbank auszuwählen - dann ist das Quatsch. Darüber hinaus ist die Unterstützung einer derart umständlichen Lösung auch noch zeitaufwendig.

Bei den meisten Lösungen gab es keine Probleme damit, Daten einzufügen, Objekte zu erzeugen und ähnlichem. Das Problem lag in der Datenauswahl, da die Daten an die sie aufrufende Umgebung geliefert werden sollten.

Die im Folgenden besprochene MQL <-> MySql-Schnittstelle beruht auf einem typischen Ansatz, der in Oracle PL/SQL, MS SQL T-SQL, AdoDB angewendet wird - der Arbeit mit Cursors. Die Schnittstelle wurde mit dem klaren Ziel vor Augen entwickelt, das Programmieren und die Pflege zu erleichtern und noch dazu mit möglichst wenig Komponenten arbeiten zu müssen. Sie ist implementiert als ein DLL-Wrapper für die Standard-Library libmysql.dll und als ein Set an Schnittstellenfunktionen als .mqh-Datei.


The scheme of MQL and MySQL interaction

Autor: Eugeniy Lugovoy