metatrader <-> gui lnet, ipc, tcp, named pipes ????

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
laz847
Beiträge: 114
Registriert: Mi 18. Jun 2014, 16:39

metatrader <-> gui lnet, ipc, tcp, named pipes ????

Beitrag von laz847 »

Hallo Leute,

bin seit Wochen auf der Suche nach einer STABILEN/SCHNELLEN Lösung um Daten aus dem MT4 an meine exe zu senden. Wie man eine dll schreibt weiß ich, wie ich diese im MT4 einbinde und die Daten aus dem Mt4 in die dll bekomme ist auch klar, nur welcher Weg ist am besten um die Daten dann in meiner Gui nutzen zu können? Muss es überhaupt eine dll sein, müsste man nicht mittels TCP auch nen mql4 Client erreichen, ich finde leider kein lauffähiges Beispiel (http ja, tcp nein) ;(

Ich will mir z.B. die Daten eine Paares (Eurusd) als Array Open, Close usw aus meiner dll abrufbar/per tick sendbar machen, diese Daten sollen dann in meinem Programm zur Verfügung stehen. Klar ich könnte mir im MT4 csv von der Histo erstellen lassen und die importieren aber die müssten dann auch ständig aktualisiert werden, man hat alles doppelt usw... Ausserdem brauche ich in Echtzeit mindestens Bid/Ask da bei jedem Tick in eine Datei zu schreiben und das gleichzeitig für viele Wp's halte ich für ungünstig, da werden schnell Ticks verschluckt. Files möchte ich also eigentlich nicht, die zu wählende Verbindung sollte aber schnell genug sein um auch mal 100.000 kleine Datensätze zu übertragen.

Ich habe es mit lnet http://www.martinjakobs.de/pages/lazarus.php probiert und die 2 Beispiele Server<>Client http://www.martinjakobs.de/modules/down ... hp?file=67 laufen wunderbar, die Performance sollte reichen. Wenn man nur einen Text schickt kommt der sauber auf der anderen Seite an. Hab das dann mal im loop (ohne sleep, also vollast) geprüft, wenn ich aus dem Clienten
for i:=0 to 100000 do b := client.SendMessage(IntToStr(i)+'|');
kommt aber das beim Server an

serverin1 -> 1|2|3|4|5|6|7|8|9|10|11|
serverin2 -> 12|13|14|15|
serverin3 -> 16|17|18|19|20|

usw....

Obwohl ich jede Nachricht einzeln sende, empfängt der Server die als eine Nachricht gesammelt in Chunks, diese sind auch noch unterschiedlich lang? Nun mache ich mir Sorgen, wenn ich damit 100.000 Bars importiere und da fehlt etwas oder kommt von der Reihenfolge durcheinander, würde man das evtl. nicht mal merken. Wenn ich mir da erst noch was zum prüfen und zusammensetzen bauen muss, wird das doch wieder langsamer ;)....

Ich suche nun also, entweder nach einer Möglichkeit diese TCP Verbindung stabil zu nutzen, oder nach einer Alternative. Habe mich auch schon mit Named Pipes beschäftigt, leider finde ich recht wenig dazu für Lazarus ;(.

Habt ihr evtl eine Idee wie ich die Daten synchronisieren kann oder hat jemand einen besseren Vorschlag um Daten aus dem MT4 senden oder abfragen zu können?

Dickes Danke, ich sitze da schon Wochen dran ;)

laz847
Beiträge: 114
Registriert: Mi 18. Jun 2014, 16:39

Re: metatrader <-> gui lnet, ipc, tcp, named pipes ????

Beitrag von laz847 »

Ok hat sich erledigt, ich habe eine Lösung :D

Antworten