Diskussion zum Artikel "Communicating With MetaTrader 5 Using Named Pipes Without Using DLLs" - Seite 2

 
Reshetov:
................

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. ...................

Sie können auch einen Papagei in MQL5 zeichnen. Hier ist ein Artikel mit Codes.
 
MetaDriver:
Sie können in MQL5 auch einen Papagei zeichnen, hier ist статья, с кодами.

Interessehalber sollten Sie zumindest den Titel dieses Themas lesen

Jetzt nicht mehr. Siehe https://www.mql5.com/ru/forum/7806/page3.

Renat:
Beachten Sie nur, dass es sich um Client-Unterstützung handelt und Server-Verbindungen nicht im Terminal erstellt werden können.
Использование MQL5 для торговли на МТ4
Использование MQL5 для торговли на МТ4
  • www.mql5.com
Подскажите, можно ли каким-нибудь образом извернуться, чтобы с помощью программ на MQL5 торговать у брокера, поддерживающего МТ4?
 
Ich werde es im Stillen tun. Sagen Sie es niemandem. Schhhh.....
 
MetaDriver:
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

 
Reshetov:

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).

 
Bitte beachten Sie 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 es sich herausstellt, dass es jetzt notwendig ist, eine Drittanwendung zu schreiben, ist unangebracht.
 
Renat:
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.
Renat, wann planen Sie die Einführung von Pipes in MT4?
 
Renat:
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.

 
Ich denke, dass die Frage der Kommunikation zwischen Terminals nur einen kleinen Teil der Anwendung ausmacht.

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.
 
komposter:

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?

NamedPipeServerStream Constructor (String) (System.IO.Pipes)
NamedPipeServerStream Constructor (String) (System.IO.Pipes)
  • msdn.microsoft.com
Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core Role not supported), Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported)