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

Grund der Beschwerde: