Inhalte aufrufen

  • Über WindowsLive anmelden Log In with Google Anmelden
  • Mitglied werden
Profilbild

Datei außerhalb der MT4 Installation lesen und schreiben?

- - - - -

  • Du kannst leider keine neuen Themen eröffnen
  • Please log in to reply
9 Antworten zu diesem Thema

  #1
OFFLINE   siero

Hallo zusammen,

 

jetzt habe ich nochmal eine Programmierherausforderung :-)

 

Ich habe EAs auf unterschiedlichen Konten laufen und möchte gerne MT4-instanzenübergreifende Übersichten über offene Trades, geschlossene Trades (History) und auch Account-Infos, wie Equity, usw.erstellen. Und eine Idee war es, dass meine EAs die Infos über eine zentral gelegene Datei austauschen.Oder wie würdet ihr denn sowas angehen?

 

Besten Dank und schöne Grüße

Siero



  #2
OFFLINE   Netsrac

Hi Siero,

 

wenn Du die Übersichten für Dich benötigst, es also keine automatischen Folgerungen aus diesen Daten gibt - dann führt meiner Meinung nach nichts an Tools, wie myfxbook oder FXBlue, vorbei. Wenn die EAs damit was anstellen sollen, wirst Du externe Werkzeuge (außerhalb der MT4-Sandboxen) nutzen müssen, zumal eine Instanz nicht in die Instanz eines anderen MT4 schreiben bzw. daraus lesen kann. 

 

Ergänzung: Für manuelle Auswertungen nutze ich myfxbook und über "Export CSV" kann man dann auch mit Excel weiterarbeiten (man muss Excel nur beim Import dazu bringen, die Dezimalpunkte in Kommas umzuwandeln). Damit dürfte wirklich jedes Statistiker-Herz zu befriedigen sein...


Bearbeitet von Netsrac, 19 March 2019 - 14:33 Uhr,

Hilfreiche Tools für den diskretionären Handel findest Du auf meiner MQL5-Seite


  #3
OFFLINE   siero

@Netsrac, erstmal danke für deine schnelle Antwort. Ich bräuchte die Daten in der Tat um sie ggfls. im EA weiterzuverarbeiten, z.B. die gesamten Equity Infos für die Lot-Sizeberechnung.  



  #4
OFFLINE   Netsrac

... da müssten dann wohl die erfahreneren Programmierer hier mal ran. Mir würde jetzt als Stichwort nur der Datenaustausch über Webrequests einfallen. Das hier (

Please Login or Register to see this Hidden Content

) hab ich auf die schnelle gefunden. Sieht aber nicht nach einer "Plug ´n Play Lösung" aus.


Hilfreiche Tools für den diskretionären Handel findest Du auf meiner MQL5-Seite


  #5
OFFLINE   CashDigger

Im Grunde versuchst du sowas wie IPC (Inter-process communication) für persistente Daten. Der Zugriff muss bei mehreren Prozessen aber unbedingt syncronisiert werden sonst knallt es bei gleichzeitigem Zugriff.

Man kann sowas auch direkt über IPC machen (über DLLs) aber das ist echt unangenehm aufwändig.

Per Named Pipes gehts wohl vielleicht auch:

Please Login or Register to see this Hidden Content

 

Alternativ, ein persitenter Mutex wäre sowas wie eine Lock-File beim Zugriff zu erstellen. Das heißt, vor jedem Zugriff wird geschaut ob die Lockdatei existiert und wenn nicht dann wird diese angelegt und erst dann bekommt der Prozess Zugriff. Ist der Prozess fertig dann löscht er diese Lock-Datei. Will ein anderer Prozess etwas machen und die Lock-Datei existiert dann bricht er ab oder wartet kurz und versucht es neu.

Aber auch das ist alles andere als sauber denn es wird ständig die Lock-File angelegt und gelöscht je nach Frequenz, das sind auch permantente Festplattenzugriffe. Ob es trotz Lock-File mal knallt würde ich nicht ganz ausschließen, hängt auch vom OS ab.

 

Insofern das Vorhaben wird immer in einer tendenziell komplizierten Lösung enden, wenn es geht würde ich versuchen darauf zu verzichten.

 

Wie oft sollen denn die Daten geschrieben + gelesen werden? Denn sagen wir mal nicht oft, dann könnte man sich die Syncro auch mit anderen Hilfsmitteln bauen zB Zeitfilter oder anderen kreativen Ansätzen.

Dann bekommt das Terminal01 die write/read Freigabe einfach zwischen der 0-10 Minute der laufenden Stunde, das Terminal02 zwischen der 20-30 Minute der laufen Stunde usw... so kann man sich mit MQL auch etwas bauen, es ist dann nur nicht "realtime".

 

C$D


Bearbeitet von CashDigger, 19 March 2019 - 15:57 Uhr,


  #6
OFFLINE   traderdoc

Die Datenlage bzgl. der Anforderungen ist etwas mager, um jetzt aus der Hüfte eine Komplettlösung zu schießen, aber auch diese Herausforderung ist mit einem vertretbaren Aufwand zu meistern.
Im einfachsten Fall wird eine Textdatei beschrieben, die ähnlich partitioniert ist, wie eine Festplatte. Jedem EA wird also eine Partition zugewiesen und jeder EA weiß auch, wo die Partitionen der anderen EAs liegen. Das fehlerfreie Zugreifen auf diese Datei hängt natürlich u.a. von der Anzahl der EAs und der Zugriffsfrequenz ab. Und damit wären wir wieder beim Eingangssatz.
Also, wenn Dir etwas daran gelegen ist, dann beschreibe das Vorgehen bitte umfassender und exakter.

traderdoc
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierwünsche.

  #7
OFFLINE   siero

Eigentlich hätte ich es wissen müssen, dass ich es genauer beschreiben musste. Hab anno dazumal ja auch mal Informatik studiert (als man noch Assembler gelernt hat :-) ).

 

Aber Dein Ansatz @Traderdoc passt schon ganz gut. Ich kann die Datei so strukturieren, dass jeder EA weiß, welche Zeilen ihm gehören, also zB EA1 schreibt Zeilen 1-5, EA2 6-10, usw und Lesen kann jeder EA alles. Und das mit dem konkurrierenden Update hätte ich auch im Griff, da ich nur zeitgesteuert die letzte Minute einer H1 Kerze trade.

 

Nochmal das Szenario:

Ich hab drei oder vier EAs auf vier unterschiedlichen Konten laufen. Diese haben eine Zeitsteuerung und handeln immer nur von xx:59:00 bis xx:59:59. Danach ist wieder Ruhe. Davor soll jetzt EA u.a. den aktuellen Kontostand in die Datei schreiben, zB EA1 schreibt von xx:53:00 bis xx:53:55; EA2 dann von xx:54:00 bis xx:54:55 usw.Und um xx:58:00 lese ich die Datei aus und hab meine Parameter für die Lotsizeberechnung. Außerdem würde ich das nutzen, um die Performance über alle Konten hinweg anzuzeigen. 

 

Mein Problem ist nicht die Zeitsteuerung und Zugriffsteuerung, sondern ich kann aktuell Dateien nur innerhalb einer MT4 Instanz schrieben und lesen. Eine Pfadangabe im FileOpen() z.B. wird mit Fehlermeldungen abgelehnt.

 

(Ist gar nicht so einfach, dies in kurzen Worten zu beschreiben ohne gleich ein Lastenheft zu erstellen.)

 

Danke auf jeden Fall für Euren Input.

 

Grüße

Siero



  #8
OFFLINE   CashDigger

ich kann aktuell Dateien nur innerhalb einer MT4 Instanz schrieben und lesen. Eine Pfadangabe im FileOpen() z.B. wird mit Fehlermeldungen abgelehnt.

Müsste man mit "Symlinks" hinbekommen.



  #9
OFFLINE   siero

Müsste man mit "Symlinks" hinbekommen.

 

Hmm, muss ich erstmal Mr. Google fragen :-))



  #10
OFFLINE   CashDigger

Please Login or Register to see this Hidden Content

 

Konzept dabei wäre jedem Metatrader-Verzeichnis ein Hard Link zu verpassen der immer auf die selbe Datei zeigt. Die Terminals denken die Datei wäre im eigenen Verzeichnis. So kommst du mit dem Original aus dem Verzeichnis raus und kannst die Datei an vielen Orten (MT Instanzen) vorgaukeln lassen.


Bearbeitet von CashDigger, 19 March 2019 - 23:03 Uhr,




Similar Topics

  Thema Eröffnet von Statistik Letzter Beitrag




0 Benutzer lesen gerade dieses Thema

0 Mitglieder, 0 Gäste, 0 anonyme Nutzer