Diskussion zum Artikel "Communicating With MetaTrader 5 Using Named Pipes Without Using DLLs" - Seite 3
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
Ich denke, dass die Kommunikation zwischen den 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.
Niemand bestreitet das, ich meine, die Erklärung, wozu das alles diente. Aber das Problem ist, wie es umgesetzt wurde. Schließlich sind externe Systeme nicht unbedingt in C geschrieben, sondern können in verschiedenen Programmiersprachen erstellt werden. Und eine Verbindung zum Terminal über einen benannten Kanal ist in vielen Programmiersprachen nur als Client über Dateioperationen möglich. Aber die Technologie wurde Client-Server gewählt, d.h. so, dass zwei Clients nicht aufeinander treffen, wenn es eine Lücke zwischen ihnen ohne eine Brücke - Gateway - gibt. D.h. es hätte entweder die Client-Client-Technologie oder ein Gateway vorgesehen werden müssen. Und so kam es wie in der Fabel "Der Fuchs und die Trauben" von Opa Krylow:
Auch wenn das Auge sieht,aber das Auge kann nicht sehen.
© I. Krylow
Es war notwendig zu schauen, wie andere eine ähnliche Verbindung mit externen Systemen realisiert haben. Zum Beispiel: VMWare, MS SQL Server, MySQL, externe Modems und so weiter. Deren Serverteil ist intern implementiert. Und es ist sehr bequem, sich ohne Krücken zu verbinden, sogar über einen benannten Kanal, oder über TCP/IP und andere Kommunikationskanäle. Und Sie können sogar wählen, zum Beispiel, durch einen benannten Kanal, sondern remote über TCP / IP mit Hilfe von "Named Pipe TCP Proxy" Dienstprogramm. D.h. die Benutzer müssen keine zusätzlichen Krücken erstellen, sondern nur die am besten geeignete Client-Anwendung auswählen und sofort eine Verbindung herstellen und arbeiten.
Berücksichtigen Sie, dass MQL5 eine sichere Anwendungsumgebung ist, und zwar eindeutig eine Client-Umgebung, in der es unvernünftig ist, Serverfunktionen zu erstellen.
Ich bin mir nicht sicher, ob eine Serverfunktionalität deklariert wurde. Die Client-Funktionalität wurde geplant und implementiert.
Ich glaube, ich habe den Code für das Gateway erstellt. Ich habe es noch nicht getestet. Ich werde herunterladen und installieren MinGW und sehen, was falsch ist.
MinGW installiert, konfiguriert und mit NetBeans verbunden.
Die Idee, ein Vollduplex-Gateway aus zwei Serverkanälen zu erstellen und Informationen an Clients von einem Kanal zum anderen umzuleiten, hat nicht funktioniert. Wenn ein Server-Unterprozess einen Kanal liest und der zweite etwas dorthin sendet, funktioniert Vollduplex nicht (zumindest unter Windows XP), denn manchmal fängt der Unterprozess, der aus dem Kanal liest, Nachrichten von dem Unterprozess ab, der in denselben Kanal schreibt, und gibt die Informationen zurück.
Wenn Sie einen der Unterprozesse entfernen, läuft die Übertragung problemlos im Simplexverfahren von Client zu Client.
Es ist jedoch nicht alles verloren, denn es gibt auch einen überlappenden Modus, d. h. wenn nicht zwei, sondern nur ein Kanal erstellt wird und sich mehrere Clients gleichzeitig mit diesem verbinden. In diesem Fall muss der Server nicht ständig Informationen aus dem Kanal lesen, da alles auf Ereignissen basiert. Das heißt, wenn ein Client Informationen an den Kanal sendet, liest der Server dessen Ereignis und extrahiert daraus die übertragene Nachricht. Und die empfangenen Informationen an den zweiten Client weiterzuleiten - das ist schon eine Frage der Technik. Ich bin gerade dabei, eine solche Implementierung zu erstellen.
Das war's. Ich habe aufgegeben. Ich bin es leid, mich mit C++-Code und sogar mit der Win-API herumzuschlagen. Es geht nicht so sehr ums Programmieren, sondern darum, verstreute Informationsfetzen auf MSDN zu durchforsten, um zu verstehen, wie alles funktionieren soll. Da mir die Erfahrung fehlt, habe ich all diese Dinge an Service Work geschickt. Siehe Umgestaltung des C++-Codes in ein Zwei-Wege-Vollduplex-Gateway
Vielleicht kann jemand mit mehr Erfahrung diese Aufgabe leicht bewältigen? Ich schließe nicht aus, dass der Grund für die Fehler darin liegt, dass ich die Einstellungen der benannten Kanäle nicht herausfinden konnte. D.h. es ist möglich, dass man genau in diesen Einstellungen etwas richtig schreiben muss und alles funktioniert. Ich habe es bisher nicht geschafft, etwas anderes als im Simplex-Modus zu machen und zu starten.
Ich habe beschlossen, zu versuchen, Freundschaft zwischen MQL und AutoIt durch Pipelines zu machen.
Kurz gesagt, nur eine Harke, und überall :)
Nun, ich habe es geschafft, mit etwas Glück zu AutoIt zu übertragen, nur die ersten 4 Bytes mussten verworfen werden, da ist etwas "Müll". Was ist dieser "Müll"?
Dann habe ich versucht, nach MQL zu übertragen, hier ist es noch lustiger - es kommt gar nichts. Oder vielleicht organisiere ich die Übertragung nicht richtig.... Vielleicht liegt das ganze Problem in diesen 4 Bytes?
Was können Sie mir sagen?
Ich habe beschlossen, zu versuchen, Freundschaft zwischen MQL und AutoIt durch Pipelines zu machen.
Kurz gesagt, nur eine Harke, und überall :)
Nun, ich habe es geschafft, mit etwas Glück zu AutoIt zu übertragen, nur die ersten 4 Bytes mussten verworfen werden, da ist etwas "Müll". Was ist dieser "Müll"?
Dann habe ich versucht, nach MQL zu übertragen, hier ist es noch lustiger - es kommt gar nichts. Oder vielleicht organisiere ich die Übertragung nicht richtig.... Vielleicht liegt das ganze Problem in diesen 4 Bytes?
Was können Sie mir sagen?
Du bist also auch da drin?
Nein, ich bin hier.) Also, es war so:
MQL5
AutoIt
Dieser Teil des Transfers von MQL zu AutoIt. Das funktioniert so.
Mit einem String aus Func ReadMsg($hPipe)
Ich esse die ersten 4 Bytes und alles funktioniert.
Frage: was enthalten diese ersten 4 Bytes?
Ich habe die ersten 4 Bytes ausgelesen und alles funktioniert.
Frage: Was enthalten diese ersten 4 Bytes?
Renat, wann ist es geplant, Pips in MT4 zu machen?