Diskussion zum Artikel "Eine DLL-freie Lösung für die Kommunikation zwischen Terminals von MetaTrader 5 mithilfe von Named Pipes" - Seite 3

 
In Anbetracht der Tatsache, dass mql4/5 nicht die Möglichkeit des Multithreading hat, ist die Erstellung eines Servers auf mql4/5 wie ein Röhrenfernseher (es scheint zu funktionieren, aber das Gefühl ist nicht dasselbe. Deshalb ist es besser, einen separaten Server zu schreiben und ihn für den Datentransfer zwischen mql-Programmen zu verwenden.
 
Hallo, ist dies immer noch ein funktionierendes Produkt? Wenn nicht, kann es aktualisiert werden, um unter dem neuesten MT5-Build zu funktionieren? Im Moment wirft es eine 'Access Violation'
 

Außerdem gab es Zugriffsverletzungsfehler beim Aufrufen der Methoden writeTick, readTick usw.. Im Anhang finden Sie die korrigierte CNamedPipes-Datei.

Ich habe auch die WriteDouble Methode zur CNamedPipe Klasse hinzugefügt:

#import "kernel32.dll"
...
int WriteFile(ulong fileHandle,double &var,int bytes,int &numOfBytes,ulong overlapped);
...
#import

...

bool CNamedPipe::WriteDouble(double data)
  {
   int data_size = sizeof(data);
//--- Parameter prüfen
   if(!data || data_size<1) return(false);

//--- Daten senden
   int written;
   if(!WriteFile(hPipe,data,data_size,written,NULL) || written!=data_size)
      return(false);
//--- ok
   return(true);
  }


Anmerkung: Um auf der Client-Seite zu lesen/schreiben (z.B. von einem anderen Metatrader-Terminal aus), habe ich einfach die Standard MQL5 FilePipe Library verwendet. Beispiele, wie man sie verwendet, können hier heruntergeladen werden:


https://www.mql5.com/de/articles/503

Communicating With MetaTrader 5 Using Named Pipes Without Using DLLs
Communicating With MetaTrader 5 Using Named Pipes Without Using DLLs
  • www.mql5.com
Many developers face the same problem - how to get to the trading terminal sandbox without using unsafe DLLs. One of the easiest and safest method is to use standard Named Pipes that work as normal file operations. They allow you to organize interprocessor client-server communication between programs. Take a look at practical examples in C++ and MQL5 that include server, client, data exchange between them and performance benchmark.
Dateien:
 
fantastische Arbeit
 
Es ist schon eine Weile her, dass es hier ein Update gab... Ich sehe einen "Access Violation"-Fehler, wenn ich den Indikator an den Chart anhänge. Ich schätze, es gibt keine Möglichkeit, dies zum Laufen zu bringen.