Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Also warten die versprochenen 3 Jahre... es ist sehr wenig übrig - ein Jahr zu warten )))
Wahrscheinlich :)))
Der neue Artikel Websockets für MetaTrader 5 wurde veröffentlicht:
Autor: Francis Dube
Hallo tolle Arbeit dort @Francis Dube,
Ich habe Ihre Bibliothek implementiert, um mit meinem Web-Socket-Server in nodejs/nestjs zu arbeiten. Das Problem, dem ich gegenüberstehe, ist, dass wenn ich die Sockets lokal mit meinem Server verwende, alles gut funktioniert. mql5 Socket sendet den Handshake und ich erhalte die korrekte Antwort, d.h. "101 Switching protocols".
Aber die Dinge ändern sich, sobald ich meine Nestjs-App auf der Digitalocean-App-Plattform einsetze. Zunächst war ich nicht in der Lage, mql5-Sockets mit meinem Server zu verbinden, aber dann war ich in der Lage, eine Verbindung herzustellen, aber ich erhalte keine korrekte Antwort für den Handshake, da die Connect-Methode von "CWebsocketClient" false zurückgibt, da die Upgrade-Methode keine Antwort parsen konnte, ich erhalte nur "H" als Antwort von meiner eingesetzten App.
Obwohl ich mir über den Rest der Funktionalität nicht sicher bin, da der Socket-Status durchgehend auf "CONNECTING" gesetzt ist, kann ich nach der erfolgreichen Verbindung nichts tun. Allerdings, wenn nach dem Aufruf der connect-Methode, wenn die Daten zu meinem Server mit "sendString" -Methode senden die Daten erhalten geliefert.
Und das ist, wo ich bin verwirrt, wie die Dinge in meiner app zu implementieren, wie ich nicht in der Lage, Sache Handshake Sache auf andere Weise zu testen, ich habe versucht, Erweiterungen zu überprüfen, ob meine Web-Socket in meiner app funktioniert stellt sich heraus, seine Arbeit gut, aber sobald es kommt zu mql5 Dinge sind durcheinander und nicht ganz elaborative genug, um die Ursache für dieses Verhalten zu erhalten.
Jegliche Hinweise oder Anleitung zu diesem Problem wird sehr geschätzt werden.
PS: Ich mache keine ausgefallenen Sachen für jetzt in meinem mql5 EA, ich bin nur nach der Verbindung Anleitung im Artikel und nur die Verbindung mit dem Server. Sonst nichts! :(
Beachten Sie, dass es einen Fehler in WebsocketClient.fillRxBuffer gibt, und zwar in dem Szenario, in dem es mehrere Aufrufe von m_socket.Read(..) innerhalb der while-Schleife gibt.
m_socket.Read(..) hängt die Daten nicht an das Ende des Arrays an, sondern schreibt an den Anfang des Arrays.
In meinem Fall, in dem ich zu Testzwecken eine Verbindung zu einem lokalen Websocket herstellte, stellte ich fest, dass der erste Aufruf von m_socket.Read(..) nur ein einziges Byte abholte, während eine zweite Schleife von m_socket.Read(..) den Rest abholte. Infolgedessen fehlte im Puffer das erste Byte, was zu einem Fehler beim Parsen des Frames führte.
Sie müssen auch sicherstellen, dass der m_rxbuf leer ist, bevor Sie den Puffer füllen, sonst könnte er denken, dass mehr Daten geholt wurden, als es tatsächlich der Fall war. Der Puffer wird nach dem Parsen von Frames geleert, aber nur um sicher zu gehen, habe ich beschlossen, ihn bei jedem Aufruf von fillRxBuffer zu leeren.
Ich habe auch dafür gesorgt, dass die Schleife von m_socket.Read(..) aufhört, sobald keine Daten mehr zu lesen sind, so dass nicht mehr auf die Timeout-Periode gewartet wird. Idealerweise denke ich, dass es tatsächlich weiter lesen sollte, bis genug Daten vorhanden sind, um einen Frame zu analysieren, aber das erfordert eine Umstrukturierung des Codes ein bisschen.
Trotzdem vielen Dank für diesen Artikel. Bisher ist es die Lösung, die dem am nächsten kommt, wonach ich gesucht habe. Schließlich kann ich meine eigene Web-Socket-Bibliothek erstellen.
h ttps:// www.mql5.com/en/book
Ich glaube, Sie verwechseln Websockets mit normalen Netzwerk-Sockets oder einfachen HTTP-WebRequests. Websockets erfordern benutzerdefinierte Kodierung zusätzlich zu normalen HTTP-Anfragen. Es ist mir gelungen, eine Lösung auf der Grundlage dieses Artikels mit einigen projektspezifischen Änderungen zu finden.
Ich glaube, Sie verwechseln Websockets mit normalen Netzwerk-Sockets oder einfachen HTTP-WebRequests. Websockets erfordern benutzerdefinierte Kodierung zusätzlich zu normalen HTTP-Anfragen. Es ist mir gelungen, eine Lösung auf der Grundlage dieses Artikels mit einigen projektspezifischen Änderungen zu finden.
Ich habe Ihnen einen Hinweis gegeben,
, wenn Sie nicht in das Buch schauen wollen, ist das Ihr Verlust, nicht meiner ;)
Sie müssen auch sicherstellen, dass der m_rxbuf leer ist, bevor Sie den Puffer füllen, sonst könnte er denken, dass mehr Daten geholt wurden, als es tatsächlich der Fall war. Der Puffer wird nach dem Parsen von Frames geleert, aber um sicherzugehen, habe ich beschlossen, ihn bei jedem Aufruf von fillRxBuffer zu leeren.
Ich habe auch dafür gesorgt, dass die Schleife von m_socket.Read(..) aufhört, sobald keine Daten mehr zu lesen sind, so dass nicht mehr auf die Timeout-Periode gewartet wird. Idealerweise sollte die Schleife so lange weiterlaufen, bis genügend Daten vorhanden sind, um einen Frame zu parsen, aber das erfordert eine kleine Umstrukturierung des Codes.
Trotzdem vielen Dank für diesen Artikel. Bisher ist es die Lösung, die dem am nächsten kommt, wonach ich gesucht habe. Schließlich kann ich meine eigene Web-Socket-Bibliothek erstellen.
Vielen Dank im Voraus
Bitte @ Shane Leigh Kingston, ich wusste, dies ist ein alter Beitrag, aber brauchen einen Weg, um Websocket mit mql5 zu implementieren und diese Bibliothek scheint die einzige relativ nah an es zu sein. Aber wieder bin Gesicht das Problem, das Sie gerade beschrieben, aber ich bin kein Experte in diesem Bereich. Bitte können Sie mich anleiten, wie ich das zum Laufen bringen kann. Ich wäre Ihnen sehr dankbar, wenn Sie mir helfen könnten.
Es gibt eine weitere Implementierung von Websockets in dem Algotrading-Buch.
Eine aktuelle Version der Quellcodes finden Sie in der Diskussion im Forum:
Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien
Experten: MQL5 Programmierung für Trader - Quellcodes aus dem Buch. Teil 7
Stanislav Korotky, 2025.03.10 13:32
Ich füge einige Bugfixes und Verbesserungen in den Websockets-Klassen bei.Es gibt eine weitere Implementierung von Websockets in dem Algotrading-Buch.
Eine aktuelle Version der Quellcodes finden Sie in der Diskussion im Forum: