Diskussion zum Artikel "Integration von MetaTrader 5 und Python: Daten senden und empfangen"

 

Neuer Artikel Integration von MetaTrader 5 und Python: Daten senden und empfangen :

Eine umfassende Datenverarbeitung erfordert umfangreiche Werkzeuge und geht oft über den Sandkasten (Sandbox) einer einzigen Anwendung hinaus. Für die Verarbeitung und Analyse von Daten, Statistiken und maschinellem Lernen werden spezielle Programmiersprachen verwendet. Eine der führenden Programmiersprachen für die Datenverarbeitung ist Python. Der Artikel enthält eine Beschreibung, wie man MetaTrader 5 und Python über Sockets verbindet und wie man Kurse über die Terminal-API erhält.

Wir werden ein einfaches Programm schreiben, das einen Socket-Server erstellt und die benötigten Informationen vom Client (das MQL5-Programm) übernimmt, sie bearbeitet und das Ergebnis zurückschickt. Dies scheint die effizienteste Interaktionsmethode zu sein. Angenommen, wir müssten eine maschinelle Lernbibliothek verwenden, wie z.B. scikit learn, die die lineare Regression von Preisen berechnet und Koordinaten zurückschickt, mit denen eine Linie im MetaTrader 5 Terminal gezeichnet werden soll. Dies ist ein einfaches Beispiel. Diese Interaktion kann aber auch zum Trainieren eines neuronalen Netzwerks, zum Senden von Daten (Kurse) vom Terminal, zum Lernen und Zurückgeben des Ergebnisses an das Terminal verwendet werden.

Nun können wir mit dem Erstellen einer Klasse fortfahren, die für den Socket verantwortlich ist:

class socketserver:
    def __init__(self, address = '', port = 9090):
        self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        self.address = address
        self.port = port
        self.sock.bind((self.address, self.port))
        self.cummdata = ''
        
    def recvmsg(self):
        self.sock.listen(1)
        self.conn, self.addr = self.sock.accept()
        print('connected to', self.addr)
        self.cummdata = ''

        while True:
            data = self.conn.recv(10000)
            self.cummdata+=data.decode("utf-8")
            if not data:
                break    
            self.conn.send(bytes(calcregr(self.cummdata), "utf-8"))
            return self.cummdata
            
    def __del__(self):
        self.sock.close()

Autor: Maxim Dmitrievsky

 
Ich danke Ihnen. Schade, kein Casting.
[Gelöscht]  
fxsaber:
Ich danke Ihnen. Schade, ohne Guss.

Wie ich tun werde - ich werde ein Beispiel hier für sicher hochladen, es ist nur, dass ich nicht eine solche Aufgabe vor hatte.

Auch, wenn Steckdosen ihre Entwicklung in den Tester erhalten, dann wird es sehr relevant sein.

 
Nützlich. Habe gerade mit Python angefangen)
 

Für die Geschichte gibt es eine große Standard-Mathematik-Bibliothek in MQL5 in den Quellen direkt im Terminal:

 

Ich lese die Artikel von @Maxim Dmitrievsky immer mit Vergnügen, ich mag seine Herangehensweise beim Schreiben von Artikeln - die Umsetzung der Idee selbst wird prägnant beschrieben, ich mag in letzter Zeit keine "kilometerlangen Spulen" von Code und das Wiederkäuen jeder Zeile zu "und jetzt benennen wir die Variable XY, in der wir ... speichern".

Danke dafür!

 
Igor Makanu:

Mit Vergnügen lese ich immer Artikel von @Maxim Dmitrievsky, ich mag seine Herangehensweise an das Schreiben von Artikeln - die Umsetzung der Idee wird prägnant beschrieben, ich mag es nicht, wenn in letzter Zeit "kilometerlange Strecken" von Code und das Wiederkäuen jeder Zeile zu "und jetzt werden wir die Variable XY benennen, wo wir speichern werden ...".

Vielen Dank dafür!

Es gibt also verschiedene Leser, sowohl erfahrene als auch Anfänger.
 
Alexander Fedosov:
So gibt es verschiedene Arten von Lesern, sowohl erfahrene und Anfänger.

Nun, als ob Sie Recht haben, und nicht sehr - die menschliche Aufmerksamkeit ist eine sehr begrenzte Ressource, und auch ein erfahrener Leser in das Wesen des Artikels zu bekommen hat zu lesen "diagonal" sonst bis zum Ende des Artikels wird einfach nicht verdauen das Material.

Wenn ich mich nicht irre, kann ein Mensch neues Material nur in den ersten 15 Minuten verdauen, dann lässt die Aufmerksamkeit nach und der Effekt des neuen Wissens ist gleich Null - wie man so schön sagt "weniger ist besser".

Es ist natürlich möglich, die Lektüre eines umfangreichen Artikels zu strecken, wie das Lesen einer Zeitschrift oder eines Buches über mehrere Tage, aber das ist nicht meine Option.

 

socketclientEA (Si-6.19,M15) Verbindung localhost:9090 Fehler 4014

https://www.mql5.com/de/docs/network/socketconnect

Beim Aufruf aus dem Indikator gibt GetLastError() den Fehler 4014 zurück - "Systemfunktion darf nicht aufgerufen werden".

Lösung:

Die Adresse für die Verbindung sollte zur Liste der erlaubten Adressen auf der Client-Terminal-Seite hinzugefügt werden (Abschnitt Tools \ Einstellungen \ Expert Advisors).

Erlauben Sie Webrequest für die folgende Url:

http://localhost

 
MetaQuotes Software Corp.:

Der neue Artikel MetaTrader 5 und Python-Integration: Empfangen und Senden von Daten wurde veröffentlicht:

Autor: Maxim Dmitrievsky

Vielen Dank. :)

Bitte posten Sie mehr.. Viel mehr... Ich liebe es..
 
MT5 hat endlich eine Schnittstelle zu Python!