Marktsimulation (Teil 20): Erste Schritte mit SQL (III)
Einführung
Ich grüße Sie alle in einem weiteren Artikel aus der Serie über den Aufbau eines Replikations-/Simulationssystems.
In diesem Artikel werden wir uns mit einem recht komplexen Thema befassen. Aber wenn Sie verstehen, was wir als Nächstes behandeln werden, werden Sie in Ihrer Karriere deutlich vorankommen. Das wird keine leichte Aufgabe sein. Wir werden dennoch versuchen, es so einfach wie möglich zu erklären.
Vorbereitung des Skripts
Im vorangegangenen Artikel, „ Marktsimulation (Teil 19): Erste Schritte mit SQL (II)“ haben wir erklärt, wie man Skripte verwendet, um Datensätze in einer Datenbank hinzuzufügen, zu ändern und sogar zu löschen. Um mit der Erklärung fortfahren zu können, benötigen wir zunächst eine einfache Ausgangsdatenbank. So können Sie wirklich verstehen, was Ihnen erklärt wird.
Obwohl wir mit einer Datenbank arbeiten können, die etwa 10 Datensätze enthält, wird es einfacher zu verstehen sein, wenn wir eine Datei mit mehr als 15 Tausend Datensätzen verwenden. Das heißt, wenn wir versuchen würden, eine solche Datenbank manuell zu erstellen, wäre dies ein enormer Aufwand. Es ist jedoch selbst zu Lernzwecken schwierig, eine solche Datenbank zum Download zu finden. Aber das ist nicht nötig: Wir können MetaTrader 5 verwenden, um sie zu erstellen. Es mag nicht perfekt sein, aber zumindest wird es viele Datensätze enthalten, was genau das ist, was wir brauchen.
Um zu verstehen, wie wir MetaTrader 5 verwenden werden, um eine Datenbank zu erstellen und unser Thema zu untersuchen, müssen wir ein wenig in der Zeit zurückgehen.
Es gibt Menschen und sogar kleine Organisationen, die Excel als Datenbank verwenden. Viele von Ihnen werden das vielleicht nicht glauben oder gar nicht merken, dass das tatsächlich vorkommt. Und es ist nicht nur Excel – es gibt auch andere Programme, die auf diese Weise verwendet werden. Vorerst beschränken wir uns aber auf Excel. Wenn wir Excel verwenden, um mit einer Datenbank zu arbeiten, erscheint im Menüband eine zusätzliche Registerkarte bzw. Option für die Datenverarbeitung. Die folgende Abbildung zeigt, was gemeint ist.

Damit diese Registerkarte erscheint, müssen wir ein paar Dinge tun. Eine davon, und vielleicht die einfachste, besteht darin, eine Datei zu öffnen, die ein bestimmtes Format oder eine bestimmte Struktur hat. Dies geschieht an der in der folgenden Abbildung gezeigten Stelle.

Denken Sie daran, dass wir nur einen der Wege aufzeigen, aber nicht den einzigen. Nun stellt sich die Frage: Welche Art von Datei werden wir hier verwenden? Sie werden höchstwahrscheinlich verschiedene Arten von Dateien verwenden. Wenn ich das sage, meine ich, dass die interne Struktur der Datei beliebig sein kann, aber um die Dinge zu vereinfachen und den Inhalt leichter verständlich zu machen, lassen Sie uns zum MetaTrader 5 übergehen. In der folgenden Abbildung sehen Sie, worauf ich hinaus will.

Bitte beachten Sie, dass wir hier eine Anfrage an den Handelsserver gesendet haben, um alle an einem bestimmten Tag gehandelten Ticks für ein bestimmtes Symbol zu erhalten. Was in der obigen Abbildung zu sehen ist, ist im Grunde ein Datenausschnitt aus der Datenbank. In diesem Fenster können wir die Daten jedoch nicht so bearbeiten, wie wir es mit einem spezialisierten Programm können. Wir können diese Informationen jedoch in eine Datei exportieren. Sie können im CSV-Format vorliegen.
Sobald diese Datei auf der lokalen Festplatte gespeichert ist, können wir sie in einem Programm verwenden, das Datenbankdateien verarbeitet. Allerdings – und das ist wichtig zu verstehen, bevor wir mit der Verarbeitung des Inhalts der Datei und ihrer Interpretation als Datentabelle beginnen – müssen wir sie in eine Datenbank umwandeln. Das ist die Magie des Prozesses. Und das ist genau das, was wir erreichen wollen.
Erster Kontakt außerhalb der WorkBench
Nachdem wir die in der obigen Abbildung gezeigten Informationen in einer Datei gespeichert haben, können wir sie zunächst in Excel laden. Dies hat zur Folge, dass Excel die Datei nicht mehr so verarbeitet, wie Sie es sich vielleicht vorstellen. Excel wandelt die Datei in das Äquivalent einer Datenbank um. Dadurch ändert sich die Excel-Oberfläche und sieht wie folgt aus:

Na gut. Man könnte meinen, dass Sie hier so arbeiten können, als ob Sie SQL-Befehle verwenden würden. Bei der Verwendung von Excel oder einem anderen Programm, das einen gewissen Zugang zu einer Datenbank bietet, ist das nicht ganz der Fall. Obwohl man hier viel machen kann, ist die Erfahrung weit entfernt von der, die man mit reinem SQL macht. Vergessen wir also Excel und gehen wir in eine andere Richtung. Dies ist notwendig, damit wir den nun folgenden Befehl besser verstehen können.
Verwendung von MetaEditor zur Untersuchung der Datenbank
Wahrscheinlich denken Sie, dass wir vor einem großen Problem stehen, denn in den meisten Fällen kann die von MetaTrader 5 heruntergeladene und im CSV-Format gespeicherte Datei mehrere Megabyte groß sein. Und so etwas in ein akzeptables Format umzuwandeln (sodass man SQL-Abfragen auf diese heruntergeladenen Daten anwenden kann) scheint eine sehr schwierige Aufgabe zu sein, die nur von ausgewiesenen Experten gelöst werden kann. Die Wahrheit ist jedoch, dass Sie, wenn Sie die Ihnen zur Verfügung stehenden Instrumente nicht verstehen, immer ein Problem zu lösen haben werden, selbst wenn die Lösung direkt vor Ihnen liegt.
Der einfachste Weg, alle von MetaTrader 5 heruntergeladenen Daten ohne Programmierung in ein bequemeres Format umzuwandeln, ist also die Verwendung von MetaEditor. Dadurch wird die heruntergeladene CSV-Datei in eine echte Datenbankdatei umgewandelt. Aber wie macht man das? Wie konvertiert man eine von MetaTrader 5 gespeicherte CSV-Datei mit MetaEditor in eine Datenbankdatei? Das scheint unglaublich schwierig zu sein, aber das ist es bei weitem nicht, liebe Leserinnen und Leser. Es kommt darauf an, zu verstehen, welches Werkzeug man in den Händen hält.
Als Erstes gehen wir wie folgt vor: Wir beginnen mit der Erstellung einer neuen, völlig sauberen Datenbank. Wir haben bereits erklärt, wie man das mit MetaEditor macht. Nach der Erstellung dieser Datenbankdatei müssen wir die folgenden Schritte durchführen.
Wählen Sie zunächst die in der folgenden Abbildung gezeigte Option:

Mit dieser Option können Sie eine Tabelle in die Datenbank importieren. Denken Sie daran, dass eine Tabelle eine Sammlung von Datensätzen ist. Da es sich bei einer CSV-Datei auch um eine Sammlung von Datensätzen handelt, importieren wir sie, als wäre sie eine Tabelle. Nachdem Sie die gewünschte Option ausgewählt haben, öffnet sich ein Fenster, in dem Sie die Datenimporteinstellungen für MetaEditor konfigurieren müssen, um die endgültige Tabelle zu erstellen. Dieses Fenster ist in der nachstehenden Abbildung zu sehen.

Um die Sache so einfach wie möglich zu machen, haben wir die CSV-Datei in das MQL5-Verzeichnis gelegt. Letztlich kommt es aber darauf an, dass wir die richtige Datei auswählen. Wenn wir jedoch einfach die Datei auswählen, wie im Bild oben gezeigt, und sofort auf die Schaltfläche OPEN klicken, zeigt MetaEditor keine Reaktion an. Das liegt daran, dass wir die Datei nur ausgewählt, aber noch nicht importiert haben. Einige zusätzliche Einstellungen müssen im selben Fenster konfiguriert werden. Jede dieser Einstellungen hängt vom jeweiligen Fall ab – es gibt keine festen Regeln.
Sie sollten zumindest eine allgemeine Vorstellung davon haben, was die zu importierende Datei enthält. Es ist sinnlos, einfach MetaEditor zu öffnen, einen Datenimport zu starten und zu erwarten, dass er den Inhalt der Datei selbst erkennt. So funktioniert das nicht. Das erste, was wir konfigurieren müssen, ist das Datentrennzeichen. Denken Sie daran, dass diese Daten vom MetaTrader 5 generiert wurden. Wenn Sie das Dateiformat nicht geändert haben, ist das verwendete Trennzeichen ein Tabulatorzeichen. Nachdem wir diese Einstellung geändert haben, erhalten wir das unten gezeigte Bild.

Nun gut, dies ist das erste Element, das wir konfigurieren müssen. Da Sie die Datei gerade heruntergeladen haben und nun in MetaEditor importieren, gibt es noch einen weiteren Punkt zu beachten. Hierbei handelt es sich um den Namen der Tabelle, die verwendet werden soll. In diesem Stadium sind viele Leute vielleicht verwirrt, weil wir in MetaEditor noch keine Tabellen in der Datenbank haben. Dies ist in den obigen Bildern zu sehen, in denen zum Zeitpunkt der Anforderung des Dateiimports keine Tabelle angegeben ist.
Welche Informationen sollten wir also als Tabellennamen angeben? Wir müssen lediglich den Namen angeben, der der Tabelle bei ihrer Erstellung zugewiesen wird. Aus diesem Grund haben wir vorgeschlagen, eine völlig leere Datei zu verwenden – so ist dieser Schritt leichter zu verstehen. Als Nächstes geben wir den Tabellennamen ein, wie in der folgenden Abbildung gezeigt.

Sie können ihm einen beliebigen Namen geben. Danach können wir auf die Schaltfläche OPEN klicken. Denken Sie daran, dass je nach dem Inhalt der zu importierenden Datei hier möglicherweise zusätzliche Einstellungen vorgenommen werden müssen. Da wir die Datei jedoch gerade von MetaTrader 5 heruntergeladen haben und sie mit MetaEditor importieren, sind diese Schritte für unseren Zweck ausreichend.
Sobald wir auf „OPEN“ klicken, müssen wir völlig vergessen, was Sie vielleicht gesehen haben, wenn Sie dieselbe Datei in Excel verwenden. Hier wird alles ganz anders sein, als Sie es vor dem Lesen dieser Artikel über Datenbanken gesehen haben. Wenn wir also den MetaEditor-Bildschirm betrachten, sehen wir zunächst das folgende Bild.

Perfekt. Wenn Sie dies sehen, bedeutet dies, dass MetaEditor die CSV-Datei in eine Tabelle in einer Datenbank namens MT5_Tutor.db umgewandelt hat. Wahrscheinlich sind Sie zu diesem Zeitpunkt völlig verwirrt und verstehen nicht, was gerade passiert ist. Aber lassen Sie uns das aufschlüsseln, denn das ist ein wichtiges Konzept.
Alle Informationen, die von MetaTrader 5 heruntergeladen wurden – wenn wir beim Server Daten zu einem Symbol für ein bestimmtes Datum angefordert haben – sind nicht mehr nur ein ungeordneter Satz von Daten. Alles wurde strukturiert und in Form einer Tabelle dargestellt. Diese Tabelle enthält die gleiche Kopfzeile wie die CSV-Datei. Wenn wir also wollen, dass die Spalten in unserer Datenbank andere Namen haben, müssen wir nur die Zeile 01 bearbeiten, bevor wir die Daten aus der CSV-Datei importieren, damit die Spalten neue Namen erhalten.
Tun Sie dies jedoch nur, wenn Sie wirklich wissen, was Sie tun, denn ein Fehler könnte zu einer völlig unbrauchbaren Datenbank führen. Selbst wenn Ihnen die aktuellen Namen nicht gefallen, können sie später mit einem SQL-Befehl geändert werden, da es sich jetzt nicht mehr um eine CSV-Datei, sondern um eine Datenbank handelt.
„All das ist großartig, aber wie kann ich auf die Informationen in dieser Datenbank zugreifen? Ich dachte, es wäre so etwas wie Excel oder ein anderes Tabellenkalkulationsprogramm, aber was ich in MetaEditor sehe, ist völlig nutzlos und hat keinen Wert für mich“.
Wenn Sie das denken, liegt das daran, dass Sie vielleicht noch nicht wissen, wie leistungsfähig eine Datenbank sein kann, und dass das Erlernen der Arbeit mit einer Datenbank Studium und Hingabe erfordert. Ich möchte Sie nicht beleidigen oder entmutigen. Ich verstehe, dass viele Menschen beim Anblick des obigen Bildes enttäuscht sind, weil sie etwas visuell Beeindruckenderes oder Intuitiveres erwartet haben. Aus dieser Perspektive mag es sinnlos erscheinen oder sich nicht lohnen, SQL zu lernen.
Aber lassen Sie mich versuchen, Ihre Perspektive ein wenig zu ändern. Nun wollen wir uns endlich einem der Befehle zuwenden, der zweifellos den größten Lernaufwand erfordert. Um die Konzepte klar voneinander zu trennen, sollten wir uns einem neuen Thema zuwenden.
Endlich der Befehl SELECT
Der SELECT-Befehl hat in seiner einfachsten Form folgende Syntax:
SELECT * FROM table;
Bitte beachten Sie, dass dies genau derselbe Befehl ist, der in der folgenden Animation verwendet wird.

Aber wie ist der SELECT-Befehl zu interpretieren? Es ist ganz einfach. Und nicht nur dieser Befehl – SQL-Befehle wurden mit Bedacht so gestaltet, dass ihre Syntax leicht zu verstehen ist. Um zu verstehen, was wir gerade gesagt haben, schauen wir uns an, wie man den oben gezeigten Befehl liest.
Wir sollten es so lesen: Wählen Sie alle Daten aus der Tabelle namens „table“. Das ist die wörtliche Auslegung dieses Befehls. Wenn Sie wirklich verstehen, wie dieser Befehl zu lesen ist, erkennen Sie wahrscheinlich schon, dass wir einige ziemlich interessante Dinge tun können. Dies ist nur ein Beispiel für die wörtliche Lesart, aber versuchen Sie, dasselbe mit anderen SQL-Befehlen zu tun. Sie werden bald merken, dass Sie sie recht schnell erlernen können, denn jeder Befehl ist leicht zu verstehen.
Um zu dem zurückzukehren, was uns jetzt interessiert, schauen wir uns das Ergebnis der Animation an. Dort haben wir eine ziemlich große Anzahl von zurückgegebenen Datensätzen – das ist genau das, was wir wollten. Denn wenn man den SELECT-Befehl auf eine Tabelle mit nur wenigen Datensätzen anwendet, könnte man meinen, SQL sei sinnlos. Wenn die Anzahl der Datensätze jedoch groß wird, wird das Erlernen von SQL sehr viel wertvoller.
Was ist also das eigentliche Problem, mit dem wir es hier zu tun haben? Das Problem ist das Volumen der zurückgegebenen Daten. Aber wenn Sie verstanden haben, wie man den SELECT-Befehl buchstäblich liest, denken Sie wahrscheinlich schon darüber nach, wie man die Datenmenge durch Anwendung einer Art von Filter reduzieren kann. Wenn Ihnen dieser Gedanke in den Sinn kommt, ist das ein sehr gutes Zeichen. Dies gilt umso mehr, wenn Sie das Sternchen (*) durch etwas anderes ersetzen würden, da das Sternchen ein universelles Symbol ist. Jeder, der schon einmal eine Kommandozeile benutzt hat, weiß, was das bedeutet. Wenn Sie in diese Richtung gedacht haben, dann sind Sie auf dem richtigen Weg – Sie brauchen nur ein wenig Anleitung, um Ihren Ansatz zu präzisieren.
Lassen Sie uns ein wenig nachdenken: „Wenn wir das Sternchen im Befehl ersetzt haben, warum müssen wir das tun, um die von SQL zurückgegebenen Ergebnisse zu filtern?“ Dies ist die gleiche Frage, die sich die Entwickler von SQL stellen mussten, als die Sprache entwickelt wurde. Denken Sie einen Moment darüber nach und fragen Sie sich: Wie würden Sie eine solche Filterung durchführen, wenn Sie mit einer großen Datenmenge und vielen Spalten arbeiten?
Bevor ich erkläre, wie die Designer und Entwickler dieses Problem brillant gelöst haben, möchte ich Ihre Aufmerksamkeit auf ein weiteres Detail in MetaEditor lenken. Dieses Detail könnte später wichtig werden. Werfen Sie einen Blick auf das folgende Bild.

Bitte beachten Sie, dass wir einen Teil des Bildes hervorgehoben haben. Der Grund dafür ist, dass Sie in der rechten Ecke des hervorgehobenen Bereichs sehen können, dass eine bestimmte Anzahl von Datensätzen geladen wurde. In manchen Fällen müssen Sie zwischen diesen Datensätzen navigieren, um die abgerufenen Daten anzuzeigen, wenn Sie die Filterung verfeinern. Durch Klicken auf die Pfeile im markierten Bereich können Sie zum nächsten Block geladener Datensätze wechseln. Beachten Sie, dass die Blöcke in Tausenderschritten geladen werden.
Der im hervorgehobenen Bereich angezeigte Wert steht also für diese Tausender-Datensatz-Blöcke. Wenn wir also zum achttausendsten Block gehen wollen, ändern wir einfach den Wert von eins auf neun, und der Block, der den achttausend entspricht, wird in MetaEditor angezeigt. Aber warum neun? Sollten es nicht acht sein? Der Grund dafür ist, dass die Zählung bei eins beginnt. Der Wert „eins“ steht jedoch für Datensätze bis zu „eintausend“. Dies mag zunächst etwas verwirrend erscheinen, aber mit etwas Übung wird es Sinn machen.
Versuchen Sie, mit der MetaEditor-Schnittstelle zu interagieren, um besser zu verstehen, wie alles funktioniert – sie ist meiner Meinung nach viel einfacher als WorkBench. Dennoch können wir eine ganze Menge tun, ohne die leistungsfähigere WorkBench zu verwenden, vor allem, wenn wir nur eine Datenbank untersuchen wollen.
Na gut. Kehren wir nun zu unserer Frage nach dem Filtern von Suchergebnissen zurück. Vielleicht denken Sie noch darüber nach, wie Sie eine einfache Lösung umsetzen können. Meiner Meinung nach ist die von den Designern geschaffene Lösung eine der bestmöglichen. Das Sternchen kann durch etwas anderes ersetzt werden – das werden wir ein anderes Mal zeigen. Für die Filterung haben die Entwickler dem SELECT-Befehl jedoch ein weiteres Element hinzugefügt. Es gibt jedoch einen kleinen Trick: Je nachdem, was wir finden wollen und wie wir es tun, ändert sich die Syntax des SELECT-Befehls leicht.
Als erstes muss man verstehen, wie man Spaltennamen in einer Abfrage verwendet. Dies mag ein wenig ungewöhnlich erscheinen. Aber wenn Sie schon einmal Ergebnisse in Excel gefiltert haben, wissen Sie, dass Sie eine Spalte auswählen und dann festlegen, wie sie gefiltert werden soll – nach Werten, die größer, kleiner oder gleich einem bestimmten Kriterium sind. Die gleiche Idee gilt für SQL. Der Unterschied besteht darin, dass wir uns hier nicht durch Menüs klicken, sondern einen Befehl an SQL zur Ausführung senden. So wird die Filterung korrekt durchgeführt.
Nehmen wir zum Beispiel an, dass SQL alle Datensätze anzeigen soll, bei denen der Wert der Spalte FLAGS gleich 88 ist. Dann wissen wir, dass wir im SELECT-Befehl etwas brauchen wie:
FLAGS = 88
Das scheint offensichtlich zu sein, aber wir müssen dem Befehl noch ein kleines Detail hinzufügen. Der vorherige Befehl wird also zu:
SELECT * FROM tb_Quotes WHERE "<FLAGS>" = 88;
Denken Sie daran, dass der Name unserer Tabelle tb_Quotes lautet. Bei Ausführung dieses Befehls werden alle Datensätze, bei denen die Spalte FLAGS gleich 88 ist, im Ergebnisbereich angezeigt. Beachten Sie: Warum steht der Spaltenname in Anführungszeichen? Weil er hier als Zeichenfolge behandelt wird. Wenn wir eine Zeichenkette in SQL verwenden, muss sie in Anführungszeichen gesetzt werden. Bitte beachten Sie außerdem, dass neben dem Spaltennamen die Symbole „größer als“ und „kleiner als“ stehen. Ohne Anführungszeichen könnte SQL diese Symbole als Teil seiner eigenen internen Syntax interpretieren.
An diesem Punkt könnten Sie denken: „Warum sollte ich das in SQL tun? Wenn ich Excel oder ein ähnliches Programm verwenden würde, könnte ich die gleichen Ergebnisse leichter erreichen. Ich sehe keinen Sinn darin, SQL zu lernen“. Es stimmt, dass das, was wir gerade gezeigt haben, auch in Excel möglich ist – und sogar noch einfacher. Aber es gibt etwas, das Sie übersehen. Wir beginnen gerade erst zu verstehen, wie SQL funktioniert. Viele dieser anfänglichen Aufgaben können in der Tat mit einfacheren Tools erledigt werden.
Bei der Arbeit mit echten Datenbanken verwenden wir jedoch häufig verknüpfte Tabellen und verknüpfte Abfragen. Dies sind Dinge, die Excel und ähnliche Tools nicht effizient handhaben können. Das wäre zwar möglich, aber viel komplizierter, zeitaufwändiger und kostspieliger als die Verwendung von SQL.
Es gibt noch einen weiteren wichtigen Grund, warum sich viele erfahrene Programmierer dafür entscheiden, bestimmte Funktionen nicht selbst zu implementieren – sie ziehen es vor, stattdessen SQL oder ähnliche Technologien zu verwenden. Um zu verstehen, worum es hier geht, müssen wir zum ersten Artikel über SQL zurückgehen. Wie bereits erwähnt, ist es oft besser, ein vorhandenes Tool zu verwenden, als alles von Grund auf neu zu entwickeln. Wenn Sie also bereits wissen, wie man Datensätze in einer Datenbank erstellt, einfügt, aktualisiert, löscht und anzeigt, können wir jetzt etwas tiefer in das einsteigen, was in diesem Artikel besprochen wurde.
Denken Sie darüber nach, was wir bis jetzt behandelt haben. Um die gleichen Ergebnisse mit einer Programmiersprache wie Python zu erzielen, bräuchten Sie wesentlich mehr Zeit, um die notwendige Logik zu erstellen, zu testen und zu entwickeln. Der Grund dafür ist, dass Sie anstelle von SQL die gleiche Aufgabe mit Python erledigen würden. Ich sage nicht, dass Sie es nicht schaffen könnten. Ich will damit nur sagen, dass Sie viel mehr Zeit benötigen, um Unterprogramme zu erstellen, zu testen und zu entwickeln, die das tun, was wir bisher gesehen haben.
Und denken Sie daran: Wir haben nur die allerersten Grundlagen von SQL behandelt. Selbst ein erfahrener Programmierer mit guten Python-Kenntnissen würde Tage oder sogar Wochen brauchen, um etwas zu erstellen, das mit dem vergleichbar ist, was SQL bereits effizient leisten kann. Wir werden auf dieses Thema zurückkommen, denn ich möchte nicht, dass Sie Ihre Zeit damit verschwenden, das Rad neu zu erfinden. Wenn Sie auch nur die Grundlagen von SQL erlernen – vor allem, wie man es richtig einsetzt –, werden Sie feststellen, dass es keinen Sinn hat, Funktionen nachzubilden, die SQL bereits bietet.
Abschließende Überlegungen
Bis jetzt haben wir einen der wichtigsten Aspekte von SQL noch nicht demonstriert. Obwohl wir es in früheren Artikeln erwähnt haben, haben wir nicht vollständig erforscht, was Datenbanken zu einem so umfangreichen Thema macht. Nachdem wir nun die grundlegenden Befehle für die Suche nach Informationen eingeführt haben, können wir uns nun mit den Konzepten befassen, die SQL zu einem unverzichtbaren Werkzeug für die berufliche Praxis machen. Im nächsten Artikel werden wir ein wenig mehr über die SQL-Programmierung sprechen, denn es gibt ein Konzept, das noch gelernt und erklärt werden muss.
Dieses Konzept umfasst Primär- und Fremdschlüssel, was bei der Erstellung eines Systems verknüpfter Tabellen sehr wichtig ist. Die Möglichkeit, verknüpfte Tabellen zu verwenden, ist äußerst wichtig, vor allem, weil sie beim Durchsuchen einer Datenbank sehr hilfreich sind, aber auch, weil sie es uns ermöglichen, einige Dinge zu tun und zu erstellen, die sonst unmöglich wären. Wenn Sie sich also wirklich für das Thema Datenbanken interessieren, sollten Sie den nächsten Artikel nicht verpassen, denn dann geht es etwas ernster zur Sache.
| Datei | Beschreibung |
|---|---|
| Experts\Expert Advisor.mq5 | Demonstriert die Interaktion zwischen Chart Trade und einem Expert Advisor (Mouse Study für die Interaktion erforderlich). |
| Indicators\Chart Trade.mq5 | Erzeugt ein Fenster zur Konfiguration des zu versendenden Auftrags (Mouse Study zur Interaktion erforderlich). |
| Indicators\Market Replay.mq5 | Erstellt Steuerelemente für die Interaktion mit dem Replay-/Simulationsdienst (Mouse Study für die Interaktion erforderlich). |
| Indicators\Mouse Study.mq5 | Ermöglicht die Interaktion zwischen den grafischen Steuerelementen und dem Benutzer (erforderlich sowohl für das Replay-/Simulationssystem als auch für den Live-Markthandel). |
| Services\Market Replay.mq5 | Erstellt und verwaltet den Replay-/Simulationsdienst des Marktes (Hauptdatei des gesamten Systems). |
| Code VS C++\Servidor.cpp | Erstellt und pflegt einen in C++ entwickelten Server-Socket (Mini-Chat-Version). |
| Code in Python\Server.py | Erstellt und pflegt einen Python-Socket für die Kommunikation zwischen MetaTrader 5 und Excel. |
| Indicators\Mini Chat.mq5 | Ermöglicht die Implementierung eines Mini-Chats über einen Indikator (erfordert einen Server, um zu funktionieren). |
| Experts\Mini Chat.mq5 | Ermöglicht die Implementierung eines Mini-Chats unter Verwendung eines Expert Advisors (erfordert einen Server, um zu funktionieren). |
| Scripts\SQLite.mq5 | Demonstriert die Verwendung eines SQL-Skripts mit MQL5. |
| Files\Script 01.sql | Demonstriert die Erstellung einer einfachen Tabelle mit einem Fremdschlüssel. |
| Files\Script 02.sql | Zeigt das Hinzufügen von Werten zu einer Tabelle. |
Übersetzt aus dem Portugiesischen von MetaQuotes Ltd.
Originalartikel: https://www.mql5.com/pt/articles/12928
Warnung: Alle Rechte sind von MetaQuotes Ltd. vorbehalten. Kopieren oder Vervielfältigen untersagt.
Dieser Artikel wurde von einem Nutzer der Website verfasst und gibt dessen persönliche Meinung wieder. MetaQuotes Ltd übernimmt keine Verantwortung für die Richtigkeit der dargestellten Informationen oder für Folgen, die sich aus der Anwendung der beschriebenen Lösungen, Strategien oder Empfehlungen ergeben.
Die Übertragung der Trading-Signale in einem universalen Expert Advisor.
Implementierung eines Break-Even-Mechanismus in MQL5 (Teil 1): Basisklasse und Break-Even-Modus auf Basis fester Punkte
Eine alternative Log-datei mit der Verwendung der HTML und CSS
Das Hilbert-Schmidt-Unabhängigkeitskriterium (HSIC)
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.