English Русский 中文 Español 日本語 Português
preview
Marktsimulation (Teil 10): Sockets (IV)

Marktsimulation (Teil 10): Sockets (IV)

MetaTrader 5Beispiele |
19 0
Daniel Jose
Daniel Jose

Einführung

Im vorherigen Artikel Marktsimulation (Teil 09): Sockets (III), habe ich den letzten Schritt erklärt, den wir brauchen, um einen Mini-Chat zu erstellen. Der Zweck war es, Ihnen zu ermöglichen, die Arbeit mit Sockets in MQL5 zu erkunden. Dies ist zwar sehr interessant und könnte in Zukunft verwendet werden, aber ich habe noch nicht genau entschieden, wie ich das Auftragssystem hier im Rahmen der Replay/Simulator-Anwendung implementieren werde. Die Verwendung von Sockets ist oft nur eine praktikable Alternative für die Übertragung von Informationen zwischen verschiedenen Anwendungen und sogar zwischen verschiedenen Betriebssystemen. Mit anderen Worten: Sie können Daten von einem Windows-System auf ein macOS- oder Linux-System übertragen, ohne dass Sie das Quell- oder Zielsystem kennen müssen. Aus diesem Grund könnten wir sogar ein scheinbar einfaches System verwenden, um etwas Aufwändigeres zu bauen, wie z. B. eine Reihe von Raspberry Pis für spezielle Berechnungen zu verwenden. Dies würde jedoch den Rahmen dieser Artikelserie sprengen. Der Hauptgedanke dabei ist, die Leser auf die nächste Entwicklungsstufe vorzubereiten, die das Spiel/Simulator schließlich durchlaufen wird.

In dem Artikel Market Simulation (Part 06): Übertragen von Informationen von MetaTrader 5 nach Excel, habe ich gezeigt, wie Sie Informationen zwischen MetaTrader 5 und Excel übertragen können. Und warum Excel? Der Grund dafür ist rein pädagogischer Natur. Wir hätten auch jedes andere Programm verwenden können. Mit Excel ist es jedoch einfacher zu erklären, was wir erreichen wollen. Es ist sehr üblich, RTD oder DDE zu verwenden, um Daten an Excel zu übertragen, aber diese Art der Kommunikation ist immer unidirektional. Mit anderen Worten, wir können nur Daten an Excel senden, aber niemals schnell die dort berechneten Daten lesen, was MetaTrader 5 erlauben würde, sie zu nutzen. Stellen Sie sich die Möglichkeiten vor, die sich daraus ergeben: Sie könnten einen einfachen Expert Advisor verwenden und die gesamte Berechnungslogik in Excel unterbringen, um ihn zu steuern. Dies würde es dem Expert Advisor ermöglichen, vollautomatisch zu arbeiten, ohne Anpassungen und Änderungen durch MQL5 vornehmen zu müssen. In diesem Fall würden wir das direkt in VBA tun. Dies mag kompliziert erscheinen, aber mit dem richtigen Wissen und der Bereitschaft zum Lernen werden Sie sehen, dass es relativ einfach ist. Allerdings muss man sich dafür engagieren und lernen.

Dies bringt uns zu einer weiteren Frage. Ein RTD-System ist im Grunde nur ein Socket. Es ist jedoch so konfiguriert, dass es nur eine einseitige Kommunikation zulässt. Mit dem Wissen, das in den letzten drei Artikeln über Sockets erklärt wurde, wird es klarer, dass wir etwas Anspruchsvolleres implementieren können. Auch hier werde ich Excel nur zu Lehrzwecken verwenden. In der Tat könnten Sie jedes Programm, jede Anwendung oder Methode verwenden, um die gleichen Ergebnisse zu erzielen. Bevor ich Ihnen jedoch die tatsächliche Umsetzung zeige, möchte ich Ihnen die Möglichkeiten erläutern, mit denen Sie die später vorgestellten Ergebnisse erzielen können.

Hier werden wir etwas Fortgeschritteneres machen. Ich glaube, dass viele Leser mit dem, was ich jetzt vorstellen werde, nicht vertraut sind. Das Thema ist sehr interessant, aber extrem umfangreich. Ich empfehle daher, auch die am Ende dieses Artikels angegebenen Referenzen zu lesen. Sie werden sehr hilfreich sein. Was wir verwenden werden, ist noch in der Entwicklung. Das heißt aber nicht, dass sie nicht untersucht werden sollte.

Da ich dem MQL5-Code keine DLLs hinzufügen möchte (zumindest noch nicht), werden wir etwas recht Kurioses erforschen. Ich werde sie schrittweise vorstellen, damit Sie mitverfolgen und verstehen können, wie wir Excel mit MetaTrader 5 kommunizieren lassen werden.

Dies geschieht ohne den Ansatz aus Market Simulation (Teil 06): Übertragen von Informationen von MetaTrader 5 nach Excel. Obwohl diese Methode funktioniert, ist sie nicht sehr flexibel und zwingt uns, bestimmte Dinge zu tun, die bei der Verwendung von Sockets unnötig sind. Ziel ist es, zu zeigen, wie man Daten aus Excel in den MetaTrader 5 überträgt und umgekehrt.


Einstieg in die Verwendung von Python in Tasks

Moment mal, es hieß doch gerade, wir würden Excel verwenden. Ich dachte, wir würden direkt in VBA programmieren. Was hat es mit der Verwendung von Python auf sich? Beruhigen Sie sich, lieber Leser. Wir werden zwar Excel verwenden, aber wir werden nicht alles direkt in VBA programmieren. Technisch gesehen könnten wir VBA verwenden, um die Kommunikation zwischen Excel und MetaTrader 5 herzustellen. Wenn wir das täten, wären wir jedoch durch die Möglichkeiten dieser beiden Programme eingeschränkt. Wenn Sie anstelle von Excel ein anderes Programm zur Unterstützung von MetaTrader 5 bei Marktoperationen verwenden wollten, müssten Sie das gesamte Kommunikationssystem neu aufbauen. Durch die Verwendung von Python als Zwischenschicht werden die Dinge viel flexibler. Python vereinfacht auch bestimmte Aufgaben, sodass Sie alles auch ohne Excel machen und nur mit Python arbeiten können. Aber das ist nicht unser Ziel hier. Ich möchte aus Gründen, die später deutlich werden, Excel verwenden. Deshalb brauchen wir Python. Was wir tun, ist in der folgenden Abbildung dargestellt:


Beachten Sie, dass Python im Zentrum steht und alle Informationen durch sie hindurchgehen. Unser eigentliches Ziel ist die Verwendung von MetaTrader 5 mit Excel. Aber indem wir Python in den Mittelpunkt stellen, können wir auch auf Excel verzichten oder es durch eine andere Anwendung ersetzen.

Warum Python und nicht C/C++? Der Grund dafür ist praktischer Natur. Es macht keinen Sinn, in C/C++ zu programmieren, wenn man mit Python viel einfacher hervorragende Ergebnisse erzielen kann. Denn Python entwickelt sich ständig weiter und bietet uns immer mehr praktische Möglichkeiten. Wir werden also Python verwenden, um mit MetaTrader 5 über Sockets zu kommunizieren.

Nun ist es wichtig, eine Sache zu erklären. MetaTrader 5 erlaubt es Ihnen, Python-Skripte direkt auf Charts auszuführen, vorausgesetzt, Sie konfigurieren es richtig. Diese Konfiguration ist nicht kompliziert. Im Gegenteil, alles ist sehr einfach und unkompliziert. Sie müssen lediglich die neueste stabile Python-Version herunterladen und installieren. Legen Sie dann in MetaEditor das Verzeichnis für die ausführbare Python-Datei wie unten gezeigt fest:


Beachten Sie, dass Sie nur auf das Verzeichnis verweisen müssen, das die ausführbare Python-Datei enthält. Zum Zeitpunkt der Erstellung dieses Dokuments ist die stabilste Version 3.11.3, aber wahrscheinlich ist eine neuere Version verfügbar. Sie können die neueste Version von Python.org herunterladen .

Nach der Installation können Sie mit der Erstellung von Python-Skripten beginnen. Es gibt zwar verschiedene Tools und Editoren, die bei der Programmierung helfen, aber Sie brauchen sie nicht unbedingt. Sie können MetaEditor oder einen anderen Editor Ihrer Wahl verwenden. Optional können Sie einige Tools herunterladen, die Ihnen bei der Kodierung helfen, aber ich werde hier keine bestimmten Tools empfehlen.

Um auf das Thema der Verwendung von Python in MetaTrader 5 zurückzukommen, werden wir dies hier nicht wirklich tun. Wenn Sie es wünschen, können Sie es jedoch auf jede erdenkliche Weise verwenden. Wir werden den Kommunikationscode rein in MQL5 erstellen, so wie wir es in den vorherigen Artikeln getan haben, und Python verwenden, um die Erstellung des Sockets für Excel zu vereinfachen. Auch hier ist es möglich, den Socket direkt in VBA zu erstellen, aber es ist viel einfacher, dies mit Python zu tun, vor allem, weil wir die Server-Seite erstellen werden. In MQL5 können wir nicht wirklich einen Server nur mit MQL5 erstellen.

Allerdings gibt es hier ein wichtiges Detail. Das Herunterladen und Installieren von Python auf Ihrem Betriebssystem reicht nicht aus, um Python zu verwenden, wie in der obigen Abbildung zu sehen ist, in der die Kommunikation zwischen Excel und MetaTrader 5 über Python dargestellt ist. Wir benötigen eine zusätzliche Komponente auf unserem Rechner – natürlich zusätzlich zu Excel. Und genau diese zusätzliche Komponente ist es, die den Unterschied ausmachen wird.


Kennenlernen von xlwings

Hier ist die zusätzliche Komponente, die wir hinzufügen müssen. xlwings ist ein Modul, mit dem man Python-Skripte als Ersatz für VBA in Excel ausführen kann. Ja, Sie können Aufgaben direkt in Python in Excel ausführen, anstatt die gleichen Dinge mit VBA zu tun. VBA ist jedoch nach wie vor nützlich, denn xlwings ersetzt VBA nicht vollständig. Es erweitert einfach die Möglichkeiten und erlaubt uns, viele Aufgaben mit Python zu erledigen.

Ein erwähnenswertes Detail ist, dass es andere Module gibt, die dasselbe tun wie xlwings. Ja, es gibt sie. In einigen Fällen erhalten sie jedoch eine Lizenz. Im Falle von xlwings kann es für nicht kommerzielle Zwecke ohne zusätzliche Kosten genutzt werden. Da man die meiste Zeit beim Experimentieren lernt und nicht wirklich etwas Kommerzielles erstellt, ist xlwings eine gute Alternative für den Anfang des Lernprozesses. Vor allem, weil es ganz einfach ist, wie Sie sehen werden.


Installation von xlwings

Im Abschnitt Referenzen gebe ich an, wie Sie auf die Dokumentation zugreifen und xlwings besser verstehen können. Um Ihnen die Arbeit zu erleichtern, werde ich in diesem Artikel zeigen, wie Sie in dieser ersten Phase vorgehen sollten. Zu Beginn müssen wir Python installieren. Während der Python-Installation müssen Sie die in der Abbildung unten gezeigte Option aktivieren.


Wenn Sie dies nicht tun, müssen Sie den Python-Pfad später manuell zu den Windows-Umgebungsvariablen hinzufügen, damit alles funktioniert. Wenn Sie bereits mehr Erfahrung mit Python haben, ist das Hinzufügen der Pfadvariable unnötig. Aber wir gehen hier davon aus, dass Sie keinerlei Erfahrung mit Python haben. Deshalb werden wir alles mit den Standardeinstellungen machen. Warten Sie, bis die Python-Installation abgeschlossen ist.

Der folgende Bildschirm wird angezeigt.


Wenn Sie auf die hervorgehobene Option klicken, können Sie lange Dateinamen verwenden. Das ist eine persönliche Entscheidung. Manche Leute mögen keine sehr langen Dateinamen verwenden. Wenn das bei Ihnen der Fall ist, klicken Sie einfach auf CLOSE und wir sind fertig. Wenn Sie jedoch Namen verwenden möchten, die länger als 256 Zeichen sind (bzw. im Falle von Python 260 Zeichen), sollten Sie auf die hervorgehobene Option klicken. Auf diese Weise wird Python in der Lage sein, mit solchen Namen umzugehen.

Danach öffnen wir eine Eingabeaufforderung. Sie können PowerShell verwenden, aber ich persönlich bevorzuge die gute alte CMD. Als erstes empfehle ich Ihnen, in der Eingabeaufforderung den unten gezeigten Befehl einzugeben.


Ich werde versuchen, die Dinge auf diese Weise darzustellen: Befehl für Befehl, zusammen mit dem Ergebnis, sodass klar ist, was getan wird. Als Ergebnis des eingegebenen Befehls können Sie sehen, dass Python standardmäßig zwei Pakete installiert hat. Eines dieser Pakete muss bereits aktualisiert werden. Geben Sie also den Befehl ein. Das Ergebnis ist unten zu sehen.


Gut. Nun, da das System aktualisiert ist, können wir zu xlwings übergehen. xlwings ist ein Add-in, das eine Verbindung zu Excel herstellt. Wie Sie jedoch in der Dokumentation sehen werden, ist Excel dafür nicht unbedingt erforderlich. In jedem Fall werden wir so vorgehen, dass Excel tatsächlich verwendet wird. Nach der Installation von Excel wird es wie unten dargestellt angezeigt.


Beachten Sie, dass sich in der Multifunktionsleiste von Excel an dieser Stelle nichts geändert hat. Kehren Sie also zur Eingabeaufforderung/PowerShell zurück und geben Sie den folgenden Befehl ein, wie in der Abbildung unten gezeigt.


Wie Sie sehen können, lädt dieser Befehl xlwings herunter und installiert es als Python-Paket. Wenn Sie die installierten Pakete erneut überprüfen, sehen Sie das unten abgebildete Ergebnis:


Die xlwings-Version kann unterschiedlich sein, da sie von Zeit zu Zeit aktualisiert wird. Beachten Sie jedoch, dass zusammen mit xlwings auch ein weiteres Paket installiert wurde: pywin32. Machen Sie sich keine Sorgen, es ist einfach eine Abhängigkeit von xlwings.

Der nächste Schritt ist die Lizenzierung von xlwings. Aber keine Sorge. Da wir sie nicht kommerziell nutzen, d. h. nicht verkaufen oder vermarkten wollen, können wir eine Lizenz speziell für diesen Zweck verwenden. Folgen Sie einfach den Anweisungen auf dem Bild unten, und xlwings wird lizenziert.


Sehr gut. Sehr gut. Jetzt sind wir fast fertig. Das Einzige, was noch fehlt, ist die Integration von xlwings in Excel. An dieser Stelle gibt es einige Fragen zu bedenken. Die erste Frage ist: Wollen Sie wirklich Python-Anwendungen über Excel ausführen, oder wollen Sie VBA durch Python ersetzen, was die Funktionsweise von Excel betrifft? Ich erwähne dies, weil Sie, wenn Sie nur Makros für Excel erstellen möchten, die in Python geschrieben sind, das xlwings-Add-in nicht zu Excel hinzufügen müssen. Bei der Makrobearbeitung müssen Sie nur einen kleinen Schritt ausführen. Damit können Sie sowohl VBA als auch Python in Excel integrieren.

Wenn Sie jedoch wirklich Python-Skripte in Excel ausführen möchten, empfiehlt es sich, xlwings als Excel-Add-In hinzuzufügen. Auf diese Weise wird ein neuer Bereich in der Multifunktionsleiste erstellt, der es Ihnen ermöglicht, Python-Skripte direkt von Excel aus auszuführen, ohne Probleme oder Komplikationen. Allerdings müssen Sie noch einige zusätzliche Schritte durchführen, um sicherzustellen, dass alles ordnungsgemäß funktioniert.

All dies ist in der xlwings-Dokumentation gut erklärt. Wenn Sie also Zweifel haben, lesen Sie in der xlwings-Dokumentation nach, wie Sie vorgehen müssen. Am Ende dieses Artikels gebe ich Verweise an, sodass Sie direkt auf das entsprechende Material zugreifen können.

Hier gehe ich allerdings von der Annahme aus, dass die Leser noch nichts über xlwings wissen und gerade erst anfangen, sich mit Python zu beschäftigen. In diesem Fall ist es ideal, xlwings sowohl als Add-In hinzuzufügen als auch für die Verwendung in Makros verfügbar zu machen. Im Laufe der Zeit werden Sie feststellen können, welcher Ansatz für Sie am besten geeignet ist.


Hinzufügen von xlwings zu Excel als Add-In

Das Hinzufügen von xlwings als Add-In gehört nicht zu den kompliziertesten Aufgaben, die es gibt. Im Grunde ist es ganz einfach. Es gibt zwei Wege, die Sie einschlagen können. Denken Sie daran, dass wir hier die Standardinstallation verwenden. Wenn Sie mehr Erfahrung haben, können Sie dies auch auf andere Weise konfigurieren.

Der erste Weg ist, direkt über Excel zu gehen und xlwings als Add-In von Excel selbst hinzuzufügen. Dazu müssen Sie die unten stehende Option wählen:


Wählen Sie dann die in der folgenden Abbildung gezeigte Option:


Dadurch wird die Registerkarte „Developer“ zur Multifunktionsleiste hinzugefügt. Wählen Sie auf der Registerkarte „Developer“ das im nächsten Bild gezeigte Element aus:


Daraufhin wird das folgende Fenster geöffnet:


Hier haben wir die Standard-Add-Ins aus der Excel-Installation. Um xlwings in diesem Fenster hinzuzufügen, müssen Sie auf die Schaltfläche Durchsuchen klicken und zum folgenden Pfad navigieren:

C:\Users\{USERNAME}\AppData\Local\Programs\Python\Python311\Lib\site-packages\xlwings\addin

Beachten Sie, dass sich dieser Pfad auf die Standard-Python-Installation bezieht. Der Wert {USERNAME} gibt den Windows-Benutzernamen an, unter dem Python installiert wurde. Der Wert Python311 gibt die aktuell installierte Python-Version an. Deshalb ist es wichtig, dass Sie wissen, was Sie bei der Programminstallation tun. Wenn Sie während der Installation etwas ändern, werden diese Werte anders sein. In jedem Fall geht es darum, die in der Abbildung unten gezeigte Datei zu finden:


Nachdem Sie diese Dateien hinzugefügt haben, können Sie direkt über das Excel-Band auf das Add-In zugreifen. Ich persönlich bevorzuge jedoch die zweite Methode, um die gleiche Addition durchzuführen. Das liegt daran, dass wir die Eingabeaufforderung bereits geöffnet haben. Alles, was wir tun müssen, ist, den unten gezeigten Befehl einzugeben:


In beiden Fällen ist das Ergebnis dasselbe, wie in der folgenden Abbildung zu sehen ist. Es gibt ein Detail, das Ihre Entscheidung beeinflussen kann, welches Verfahren für das Hinzufügen des Add-Ins besser ist. Dieses Detail bezieht sich auf die Tatsache, dass alle Befehle, die in der Eingabeaufforderung ausgeführt werden, in einer Batch-Datei abgelegt werden können. Auf diese Weise können Sie all diese getippten Befehle automatisieren und den gesamten Integrationsprozess viel schneller und einfacher gestalten.


Beachten Sie, dass in Excel eine neue Registerkarte mit der Bezeichnung xlwings hinzugefügt wurde. Hier können Sie auf in Python geschriebene Skripte zurückgreifen. Damit dies perfekt funktioniert, sind jedoch einige Details zu beachten. Auch hier sollten Sie die xlwings-Dokumentation studieren, um zu lernen, wie man dies richtig macht, da Sie möglicherweise versuchen, Dinge auf eine Weise zu tun, die xlwings nicht erwartet. In solchen Fällen erhalten Sie immer eine Fehlermeldung, selbst wenn alles korrekt zu funktionieren scheint.

Aber ein anderer Punkt ist wichtig. Das Python-Skript wird so ausgeführt, als wäre es ein in VBA geschriebenes Makro. Meiner Meinung nach ist es am interessantesten, beides zu kombinieren: die Verwendung von VBA zusammen mit Python. Dies bleibt jedoch Ihnen überlassen. In diesem Artikel soll lediglich eine Lösung für ein Problem vorgestellt werden. Das Problem ist, wie man Informationen zwischen Excel und MetaTrader 5 übertragen kann. Wir haben diesen Punkt noch nicht erreicht, aber wir sind sehr nahe dran.

Weitere Erläuterungen beziehen sich auf VBA. Um die Dinge zu ordnen, lassen Sie uns zu einem neuen Thema übergehen.


Integration von Python mit VBA

Um Python direkt in einem in VBA geschriebenen Code zu verwenden, gibt es neben dem hier verwendeten Ansatz noch einige andere. Einer dieser Ansätze ist die Durchführung eines SHELL-Aufrufs. Das funktioniert zwar, ist aber mit einigen Unannehmlichkeiten verbunden, die bei der Verwendung von xlwings oder sogar eines anderen Tools, das dieselbe Aufgabe wie xlwings erfüllt, nicht auftreten würden.

Ein Beispiel für einen SHELL-Aufruf, der die Ausführung von Python-Skripten innerhalb von VBA-Code ermöglicht, ist unten zu sehen:

Sub CallPythonInVBA()
        Dim vbaShell as Object
        
        Set vbaShell = VBA.CreateObject("WScript.Shell")
        vbaShell.Run """<PATH OF PYTHON>\python.exe""" & """<PATH OF SCRIPT>\Script.py"""
        
End Sub

VBA-Makro

Mit dem obigen Fragment kann VBA ein Python-Skript ausführen. Es funktioniert. Beachten Sie jedoch, dass der als <PATH OF PYTHON> angegebene Wert auf den Ort der ausführbaren Python-Datei verweisen muss, ebenso wie <PATH OF SCRIPT> auf den korrekten Pfad der auszuführenden Datei verweisen muss – in diesem Fall auf die Datei mit dem Namen Script.py.

Diese Art von Arbeit ist nicht sehr sinnvoll, wenn man Python direkt in VBA integrieren kann. Der Grund dafür ist, dass der oben gezeigte Code durch eine einzige Befehlszeile ersetzt werden kann, und zwar mit mehreren Vorteilen. Einer dieser Vorteile ist, dass Sie sich nicht darum kümmern müssen, wo Python installiert ist. Ein weiterer Vorteil (auf den ich hier nicht näher eingehen werde, da er den Rahmen dieses Artikels sprengen würde) ist, dass das Python-Skript Teil eines Projekts sein kann, in dem Excel selbst mit VBA-Code enthalten ist. Bei der Integration kann das gesamte Projekt in einem einzigen Ordner oder Verzeichnis organisiert werden, und xlwings kümmert sich um die Pfadauflösung und andere damit verbundene Probleme. Dadurch wird sichergestellt, dass das Python-Skript nahtlos mit VBA zusammenarbeitet. Es ist besser, wenn Sie die Dokumentation lesen, die in den Referenzen zu diesem Artikel aufgeführt ist.

Kehren wir nun zu unserem Hauptthema zurück. Wenn Sie den VBA-Editor in Excel öffnen, sehen Sie den folgenden Bildschirm:


Beachten Sie, dass ich im Bild etwas hervorgehoben habe. Dieses hervorgehobene Element ist durch ein Passwort geschützt. Dies sollte Ihnen jedoch keine Sorgen oder Unannehmlichkeiten bereiten. Das Kennwort, das zum Öffnen dieser markierten Datei erforderlich ist, finden Sie in der xlwings-Dokumentation, die über den im Abschnitt „Referenzen“ angegebenen Link zugänglich ist. Ich könnte es hier darlegen, aber ich möchte, dass Sie die Dokumentation selbst konsultieren. Auf jeden Fall müssen wir an dieser Stelle VBA mitteilen, dass xlwings verwendet werden soll. Dies geschieht durch Hinzufügen des Verweises xlwings zum VBA-Code, den wir schreiben werden. Um diese Referenz hinzuzufügen, gehen Sie zu der unten angegebenen Stelle.


Nachdem Sie den markierten Punkt in der obigen Abbildung ausgewählt haben, wird der folgende Bildschirm angezeigt:


Sie müssen die in der Abbildung oben angegebene Referenz überprüfen. Wenn Sie dieses Fenster noch nie gesehen oder genutzt haben, sollten Sie wissen, dass es VBA mitteilt, welche Referenzen es als Unterstützung verwenden soll, wenn es etwas im Code nicht intern auflösen kann. In diesem Fall durchsucht VBA die referenzierten Bibliotheken, um festzustellen, wie der Aufruf im Code gelöst werden kann. VBA wird unter den verfügbaren Referenzen suchen. Wenn er nicht aufgelöst werden kann, meldet VBA diesen nicht aufgelösten Aufruf als Fehler. Das ist genau der Grund, warum viele Leute im Internet nach VBA-Makrocode suchen und ihn dann nicht zum Laufen bringen. Das Problem hängt oft mit fehlenden Referenzen zusammen, die VBA nicht auflösen kann.

In unserem Fall ist einer der Aufrufe, die im VBA-Code vorhanden sein werden und die nicht Teil des nativen VBA sind, RunPython. Wenn Sie die in der obigen Abbildung hervorgehobene Option nicht aktivieren, wird VBA bei einem Aufruf von RunPython einen Fehler melden.

Vergessen Sie also nicht: Wann immer Sie ein Makro oder Skript in VBA erstellen, das Python-Code aufruft, stellen Sie sicher, dass Sie dieses Kästchen im Abschnitt Referenzen aktivieren. Auf diese Weise wird Ihr Code korrekt funktionieren.


Abschließende Überlegungen

In diesem Artikel habe ich nur das Verfahren vorgestellt, das für die Ausführung eines Python-Skripts in Excel erforderlich ist. Auch wenn dies ungewöhnlich oder sogar seltsam erscheinen mag, öffnet es viele Türen, vor allem weil viele Dinge in Python einfacher zu implementieren sind als in VBA. Noch wichtiger ist, dass es uns ermöglicht, eine sehr flexible und elegante Methode zur Übertragung von Informationen zwischen Excel und MetaTrader 5 zu schaffen. Auch wenn wir auf die intensive Nutzung von Excel verzichten und stattdessen Python direkt mit MetaTrader 5 verwenden, werden Sie, wenn Sie erst einmal verstanden haben, was alles möglich ist, nicht nur auf Python und MetaTrader 5 setzen wollen. Sie werden auf jeden Fall Excel oder ein anderes Tabellenkalkulationsprogramm verwenden wollen.

Im nächsten Artikel werden wir endlich sehen, wie der Code, mit dem all dies funktioniert, tatsächlich implementiert wird. Also, wir sehen uns im nächsten Artikel.


Referenzen

xlwings Dokumentation

Die offizielle Python-Website

Datei Beschreibung
Experts\Expert Advisor.mq5
Demonstriert die Interaktion zwischen Chart Trade und dem Expert Advisor (für die Interaktion ist ein Mauszeiger erforderlich)
 Indicators\Chart Trade.mq5 Erstellt das Fenster für die Konfiguration des zu sendenden Auftrags (Mouse Study ist für die Interaktion erforderlich)
 Indicators\Market Replay.mq5 Erstellt Steuerelemente für die Interaktion mit dem Wiedergabe-/Simulationsdienst (Mausstudie ist für die Interaktion erforderlich)
 Indicators\Mouse Study.mq5 Ermöglicht die Interaktion zwischen den grafischen Steuerelementen und dem Nutzer (erforderlich für den Betrieb des Replay-Simulators und des Live-Markthandels)
 Servicios\Market Replay.mq5 Erstellt und pflegt den Marktwiedergabe- und Simulationsdienst (Hauptdatei des gesamten Systems)
 VS C++ Server.cpp Erstellt und pflegt einen Socket-Server in C++ (Mini-Chat-Version)
 Python code Server.py Erstellt und pflegt einen Python-Socket für die Kommunikation zwischen MetaTrader 5 und Excel
 ScriptsCheckSocket.mq5 Überprüft die Verbindung zu einem externen Socket
 Indicators\Mini Chat.mq5 Implementiert einen Mini-Chat als Indikator (erfordert einen Server)
 Experts\Mini Chat.mq5 Implementiert einen Mini-Chat als Expert Advisor (erfordert einen Server)

Übersetzt aus dem Portugiesischen von MetaQuotes Ltd.
Originalartikel: https://www.mql5.com/pt/articles/12743

Beigefügte Dateien |
Anexo.zip (560.03 KB)
Verwendung von Deep Reinforcement Learning zur Verbesserung des Ilan Expert Advisor Verwendung von Deep Reinforcement Learning zur Verbesserung des Ilan Expert Advisor
Wir greifen den Ilan Grid Expert Advisor wieder auf und integrieren Q-Learning in MQL5, um eine adaptive Version für MetaTrader 5 zu erstellen. Der Artikel zeigt, wie man Zustandsmerkmale definiert, sie für eine Q-Tabelle diskretisiert, Aktionen mit ε-greedy auswählt und Belohnungen für Mittelwertbildung und Ausgänge gestaltet. Sie implementieren das Speichern/Laden der Q-Tabelle, stellen die Lernparameter ein und testen EURUSD/AUDUSD im Strategy Tester, um die Stabilität und das Drawdown-Risiko zu bewerten.
Von der Grundstufe bis zur Mittelstufe: Ereignisse (II) Von der Grundstufe bis zur Mittelstufe: Ereignisse (II)
In diesem Artikel werden wir sehen, dass nicht immer alles auf eine bestimmte Weise umgesetzt werden muss. Es gibt alternative Ansätze zur Problemlösung. Um diesen Artikel richtig zu verstehen, ist es notwendig, die in den vorangegangenen Artikeln beschriebenen Konzepte zu begreifen. Die hier vorgestellten Materialien sind ausschließlich für Bildungszwecke bestimmt. Sie sollten nicht als endgültige Anwendung betrachtet werden, deren Ziel es nicht ist, die hier vorgestellten Konzepte zu untersuchen.
Eine alternative Log-datei mit der Verwendung der HTML und CSS Eine alternative Log-datei mit der Verwendung der HTML und CSS
In diesem Artikel werden wir eine sehr einfache, aber leistungsfähige Bibliothek zur Erstellung der HTML-Dateien schreiben, dabei lernen wir auch, wie man eine ihre Darstellung einstellen kann (nach seinem Geschmack) und sehen wir, wie man es leicht in seinem Expert Advisor oder Skript hinzufügen oder verwenden kann.
Wie man Code in CodeBase veröffentlicht: Ein praktischer Leitfaden Wie man Code in CodeBase veröffentlicht: Ein praktischer Leitfaden
In diesem Artikel werden wir anhand von Beispielen aus der Praxis die Veröffentlichung verschiedener Arten von Terminalprogrammen in der MQL5-Quellcodebasis CodeBase veranschaulichen.