Diskussion zum Artikel "Communicating With MetaTrader 5 Using Named Pipes Without Using DLLs" - Seite 2
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
................
Auf der einen Seite sind wir dll los, aber auf der anderen Seite werden wieder Krücken in anderen Programmiersprachen für die Anwendung benötigt.
Der Nachteil der vorgeschlagenen Methode ist, dass sie nur für Programmierer geeignet ist, die Anwendungen in anderen Sprachen als MQL entwickeln. ...................
Interessehalber sollten Sie zumindest den Titel dieses Themas lesen
Jetzt nicht mehr. Siehe https://www.mql5.com/ru/forum/7806/page3.
Beachten Sie nur, dass es sich um Client-Unterstützung handelt und Server-Verbindungen nicht im Terminal erstellt werden können.
Nicht mehr. Siehe https://www.mql5.com/ru/forum/7806/page3.
Ich werde mich bedeckt halten. Sagen Sie es niemandem. Shhhh.....
Ach, du. Die Entwickler haben so hart gearbeitet, sie haben Kundenkontakte geknüpft, sie haben den Artikel geschrieben.
Und was hast du gemacht? Anstatt alles aufzugeben, C zu lernen und all dieses Zeug offen und ehrlich zu benutzen, jagst du still und leise im tiefen Untergrund Konnektoren durch DLLs.
Egal, wie sehr man ihn füttert (wir wollen nicht mit dem Finger zeigen), er will immer noch die dll im Terminal benutzen.
Normale Helden nehmen immer einen Umweg © N. Korostylev
Schreiben Sie Ihr Gateway in MQL5, basierend auf den Beispielen aus dem oben erwähnten Artikel. Und Sie können Client-Skripte in reinem MQL schreiben.
Allerdings verstehe ich nicht, warum Sie eine so einseitige Lösung machen sollten. Diejenigen, die ihren eigenen Server in C schreiben wollen, haben kein Problem damit, die dll einzubinden, aber der Rest der aktuellen Funktionalität wird nicht ausreichen. Es sei denn, die dll verlangsamt die Arbeit sehr (was ich bezweifle).
Es geht um die Möglichkeit, vom Terminal aus eine Verbindung zu Fremdsystemen herzustellen, ohne DLLs zu verwenden. Die Aufgabe ist erfüllt - jetzt gibt es eine einfache Möglichkeit der Verbindung und des Vollduplex-Datenaustauschs.
Die Beschwerde, dass es sich herausstellt, dass es jetzt notwendig ist, eine Drittanwendung zu schreiben, ist unangebracht.
Achten Sie bitte auf das Thema und den Kern des Artikels.
Es geht um die Möglichkeit, vom Terminal aus eine Verbindung zu Fremdsystemen herzustellen, ohne DLLs zu verwenden. Die Aufgabe ist erfüllt - jetzt gibt es eine einfache Möglichkeit der Verbindung und des Vollduplex-Datenaustauschs.
Die Beschwerde, dass man eine Drittanbieteranwendung schreiben muss, ist unangebracht.
Achten Sie bitte auf das Thema und den Kern des Artikels.
Es geht um die Möglichkeit, vom Terminal aus eine Verbindung zu Fremdsystemen herzustellen, ohne DLLs zu verwenden. Die Aufgabe ist erfüllt - jetzt gibt es eine einfache Möglichkeit der Verbindung und des Vollduplex-Datenaustauschs.
Die Beschwerde, dass man eine Drittanbieteranwendung schreiben muss, ist unangebracht.
In der Tat, es ist wahr, weil es nicht erklärt wird, dass durch Standardmethoden, d.h. ohne Krücken von Drittanbietern, die Kommunikation z.B. zwischen MQL-Anwendungen bereitgestellt wird.
"Viele Entwickler stehen vor dem gleichen Problem - wie kommt man in die Sandbox des Handelsterminals, ohne unsichere DLLs zu verwenden."
Hier gibt es keine Ansprüche und es sollte auch keine geben.
Aber auf der anderen Seite ist die am meisten geforderte Aufgabe in der Anwendungsplanung, die Kommunikation zwischen in MQL geschriebenen Anwendungen bereitzustellen, sehr effektiv durch die Verwendung unsicherer DLLs an den Beispielen aus diesem Artikel gelöst. Da in diesem Artikel, um die Kommunikation über String-Nachrichten zu implementieren, ist es genug, um nur Kenntnisse und Erfahrungen in der Programmierung in MQL5 (der Rest der Arbeit, dh von Drittanbietern Krücken über Windows-API, der Autor des Artikels hat bereits getan und als fertige Klasse gepostet) haben.
Aber die Kommunikation mit externen Systemen ist wichtiger und anwendbar. Dafür wurde der sichere Kanal eröffnet.
Und beachten Sie, dass die gesamte Implementierung im Rahmen der Standard-Datei-Operationen erfolgt. Es mußten keine neuen Funktionen eingeführt werden.
Schreiben Sie Ihr eigenes Gateway in MQL5 auf der Grundlage der Beispiele aus dem obigen Artikel.
Theoretisch können Sie, aber praktisch wird es eine Krücke sein, und sogar simplex.
Ich habe einige Informationen darüber gefunden, wie man Gateways mit minimalen Kosten erstellen kann. Es stellt sich heraus, dass C++ eine Klasse von Streams NamedPipeServerStream(String) hat.
Wenn man sie aufruft, wird ein benannter Kanal erstellt. Dann können wir auf eine Verbindung warten, indem wir die Methode IsConnected aufrufen und einen zweiten benannten Kanal erstellen. Wir warten darauf, dass sich ein anderer Client mit dem zweiten Kanal verbindet, und leiten die Informationen aus dem ersten Stream in den zweiten um, indem wir die Methode CopyToAsync(Stream) verwenden. Danach müssen wir einen Unterprozess starten und erneut mit CopyToAsync(Stream) Informationen aus dem zweiten Stream in den ersten umleiten. Auf diese Weise werden die beiden benannten Kanäle per Duplex verknüpft.
Es sieht einfach aus, aber ich habe keine Erfahrung mit C++. Wenn es Java wäre, würde es eine halbe Stunde mit Debugging dauern.
Bislang habe ich ein geeignetes Beispiel für die Umgestaltung gefunden: http://msdn.microsoft.com/en-us/library/bb546085.aspx. Ich werde in aller Ruhe versuchen, ein Vollduplex-Gateway auf seiner Grundlage zu bauen. Und wenn es funktioniert?