Kommunikation zwischen EAs und Indis und Panelen - Seite 2

 
Carl Schreiber:

Es gibt doch für MT4/5 eine ganze Reihe von Möglichkeiten:

  1. Mutex: https://www.mql5.com/de/code/1835
  2. MemMaps: https://www.mql5.com/de/code/816 und https://www.mql5.com/de/code/817
  3. Pipes und Sockets und
  4. Ram-Disks mit den File-Func. aus kernel32 (sind schneller als die von (zumindest) MT4.
Ausprobiert habe ich die aber noch nicht!

Ist alles richtig was du sagts aber mir sind "Bordeigene Mittel" immer lieber .

 
Otto Pauser:

Leider sind gewisse Tricks wie in Delphi oder C++ nicht möglich. zB die Adressen von Variablen übereinander zu legen und Strukturen wie Schablonen zu verwenden.

Auch mit Pointern überprüft der Compiler zu genau.

Es geht nicht Struktur A an der gleichen Adresse wie Struktur B bzw einen String zu definieren (in Delphi/Pascal: records mit dem Statement 'Absolute').

Das chararray ist eine Möglichkeit.

Oder die einzelnen Werte in Strings umwandeln und mit StringConcatenate verbinden, beim Empfänger wieder aufdröseln. Ist wahrscheinlich relativ langsam und eher mühsam.

Wenn du nicht alle Felder von MqlTick brauchst, die EventRoutine mehrfach aufrufen und Werte in lparam und dparam und/oder in sparam übergeben.

Oder dem anderen Programm nur den Hinweis liefern, das im Chart(Symbol) XY ein neuer Tick eingetroffen ist, und es diesen gefälligst selber mit CopyTick(_Symbol,...) lesen soll. _Symbol wird in sparam übermittelt.

Oder bei ssd-Platte via FileWriteStruct / FileReadStruct und mittels Message nur der Anstoß, neue Daten sind da. File lesen.

Du siehst, es gibt schon einige Möglichkeiten.

LG, Otto

Im Prinzip ist das ok wenn es nur eine Meldung gibt und dann ich selber den Tick hole.

Schöner ist es natürlich wenn der Ereignisauslöser selber die Daten sendet. 

Übrigens ist sparam mit maximal 63 Zeichen füllbar. Wäre ja ausreichend für alles Wichtige.

Vieleicht hat ja jemand mal Lust das in Code zu gießen und zu Testen.

Danke Otto für deine Ausführung. 


Gruß

 

Für mich verlangsamen gr. Objekte unnotwendigerweise die Ausführungszeiten, besonders bei umfangreichen Backtests: Für jedes Objekt muss bei einer neuen Bar dessen neuer Platz berechnet werde!

Wenn sie also keine visuelle Bedeutung haben, dergestalt,m dass ich zB. Ein- und Ausstiege mir anzeigen lassen möchte, versuche ich sie zu vermeiden.

Calli

PS.: Die Windows-Funktionen (kernel32.dll,..) sehe ich eigentlich schon als 'bordeigen' an, da zB. die Filefunktionen nicht nur etwas schneller sind, sondern auch flexibler.

Grund der Beschwerde: