Sehr schön. Danke. Allerdings kann ich https://forum.mql4.com/270509 nicht finden - es wird ein Fehler angezeigt. Können Sie bitte auch Ihren Code posten. Java und mt4 ist etwas, das ich verwenden möchten, sondern müssen den Code zu sehen.
Ich habe den Link korrigiert: https://www.mql5.com/en/forum/121466
Sie finden den MQL- und Java-Code in der ZIP-Datei.
dies ist ein ausgezeichnetes Werkzeug
irgendwie kann ich es nicht zum Laufen bringen. können Sie mir helfen.
wenn ich den EA ausführe, stürzt mt4 ab
Ich benutze windows 7 64bit, Java 7.0.1, MT4 ver4.00 build 409 25 oct 2011
java ist hier installiert C:\jre\bin\client\jvm.dll
mt4 ist hier installiert C:\MT4\
Windows gibt die folgende Fehlermeldung aus
Problem-Signatur:
Problem Ereignis Name: BEX
Name der Anwendung: terminal.exe
Version der Anwendung: 4.0.0.409
Zeitstempel der Anwendung: 0028f000
Name des Fehlermoduls: MSVCR100.dll
Fehlermodul-Version: 10.0.30319.1
Zeitstempel des Fehlermoduls: 4ba1dbbe
Ausnahme Offset: 0008ae6e
Ausnahmecode: c0000417
Ausnahmedaten: 00000000
Betriebssystem-Version: 6.1.7601.2.1.0.256.1
Gebietsschema-ID: 2057
Zusätzliche Informationen 1: a0db
Zusätzliche Informationen 2: a0db43c64a51ee21486e76f538ab825d
Zusätzliche Informationen 3: 5a50
Zusätzliche Informationen 4: 5a50e927a493324cabb3491f7239cdd1
Lesen Sie unsere Datenschutzerklärung online:
http://go.microsoft.com/fwlink/?linkid=104288&clcid=0x0409
Wenn die Online-Datenschutzerklärung nicht verfügbar ist, lesen Sie bitte unsere Datenschutzerklärung offline:
C:\Windows\system32\en-US\erofflps.txt
Es gibt zwei mögliche Gründe, warum Ihr MT4-Terminal abgestürzt ist
1. Sie verwenden eine 64bit JVM
Dies wird nicht funktionieren, da MT4 eine 32bit Anwendung ist. Sie müssen eine 32bit JVM auf Ihrem Win7-64bit installieren, die zusammen mit MT4 verwendet werden kann.
Die JVM-Versionsprüfung sollte nicht "64 Bit" anzeigen
C:\jre\bin\java -version
Java(TM) SE Laufzeitumgebung (build 1.6.0_30-b12)
Java HotSpot(TM) 64-Bit Server VM (build 20.5-b03, mixed mode)
Bis jetzt habe ich mein Programm nur mit Java6 getestet. Vielleicht gibt es in Java7 einige Änderungen, die den Absturz auslösen.
Eine neue Version 0.2 ist verfügbar, die den oben genannten Absturz des Terminals behebt.
Hallo cyberflohr,
ich bin MT-Neuling, habe aber einige Erfahrung mit Java, so dass die Bridge ein sehr interessantes Tool für mich ist. Ich habe alle Installationsschritte durchgeführt, die Sie erwähnt haben, konnte aber das Beispiel nicht starten. Ich habe folgendes im Expertenprotokoll:
20:53:13 mt4jSample EURUSD,H4: erfolgreich geladen
20:53:13 mt4jSample EURUSD,H4 inputs: IntProperty=99; BoolProperty=true; DoubleProperty=1.23; StringProperty="helloWorld";
20:53:17 mt4jSample EURUSD,H4: kann die Bibliothek 'mt4j.dll' nicht laden(Fehler 126)
20:53:17 mt4jSample EURUSD,H4: Experte angehalten
20:53:17 mt4jSample EURUSD,H4: initialisiert
20:54:27 mt4jSample EURUSD,H4: erfolgreich geladen
20:54:27 mt4jSample EURUSD,H4: kann die Bibliothek 'mt4j.dll' nicht laden (Fehler 126)
20:54:27 mt4jSample EURUSD,H4: Experte gestoppt
20:54:27 mt4jSample EURUSD,H4: deinitialisiert
20:54:27 mt4jSample EURUSD,H4: uninit Grund 1
20:54:27 mt4jSample EURUSD,H4: entfernt
Was kann die Ursache für dieses Problem sein?
Hallo cyberflohr,
20:53:17 mt4jSample EURUSD,H4: kann Bibliothek 'mt4j.dll' nicht laden (Fehler 126)
Was kann die Ursache für dieses Problem sein?
Hallo
Fehler 126 bedeutet nach meinem Verständnis, dass MT4 die dll-Datei nicht finden kann. Vorausgesetzt, Sie rufen sie mit dem richtigen Namen auf, muss sie sich in erster Linie im Ordner /experts/libraries/ befinden. Sie kann auch woanders liegen, aber dies ist der beste Ort.
Ich hoffe, das hilft Ihnen.
Vielen Dank
Brooky
Hallo Cyberflohr,
Ich habe Ihre Anleitung zur Installation von mt4jv0.2 befolgt und keine Fehlermeldung auf der MT4-Plattform erhalten. Allerdings aus der SampleEA.java finde ich, dass es eine Methode, die zu sein scheint, wenn die EA-Initialisierung nach der Beschreibung in MT4BasicClient.java ausgeführt werden
Code in SampleEA.java:
@Override
public void init() {
System.out.println("init()");
}
Beschreibung in MT4BasicClient.java:
/**
* Wird vom MT4-Client während der Init-Phase aufgerufen.
*/
Aus diesen Codes schließe ich, dass während der Initialisierung etwas ausgedruckt werden soll. Aber ich habe nicht gesehen, dass die "init()"-Meldung in der MT4-Plattform gedruckt wird. Habe ich den Code richtig verstanden?
Außerdem, können Sie eine andere Demo geben, um eine Bestellung zu platzieren?
Vielen Dank, ich schätze Ihren Code sehr :D
Hallo
Fehler 126 bedeutet nach meinem Verständnis, dass MT4 die dll-Datei nicht finden kann. Unter der Annahme, dass Sie sie mit dem richtigen Namen aufrufen, muss sie sich in erster Linie im Ordner /experts/libraries/ befinden. Sie kann auch woanders liegen, aber dies ist der beste Ort.
Ich hoffe, das hilft Ihnen.
Vielen Dank
Brooky
Richtig - die mt4j.dll befindet sich nicht im Bibliotheksordner.
D.h.: Wenn Ihr Metatrader-Installationsordner c:\Programmdateien\metatrader lautet, dann müssen sich die Dateien für die mt4j-Bridge an den folgenden Orten befinden.
c:\program files\metatrader\experts\mt4jSample.ex4
c:\program files\metatrader\experts\mt4jSample.mq4
c:\program files\metatrader\experts\libraries\mt4j.dll
c:\program files\metatrader\experts\libraries\mt4j.properties
c:\program files\metatrader\experts\libraries\mt4jSample.jar
PS: überprüfen Sie die Bridge-Logdatei für weitere Informationen über den Fehler
c:\program files\metatrader\experts\files\mt4j.log
Hallo Cyberflohr,
Ich habe Ihre Anleitung zur Installation von mt4jv0.2 befolgt und keine Fehlermeldung auf der MT4-Plattform erhalten. Jedoch von der SampleEA.java finde ich, dass es eine Methode, die zu sein scheint, wenn die EA-Initialisierung nach der Beschreibung in MT4BasicClient.java ausgeführt werden
Code in SampleEA.java:
@Override
public void init() {
System.out.println("init()");
}
Beschreibung in MT4BasicClient.java:
/**
* Wird vom MT4-Client während der Init-Phase aufgerufen.
*/
Aus diesen Codes schließe ich, dass während der Initialisierung etwas ausgedruckt werden soll. Aber ich habe nicht gesehen, dass die "init()"-Meldung in der MT4-Plattform gedruckt wird. Habe ich den Code richtig verstanden?
Außerdem, können Sie eine andere Demo geben, um eine Bestellung zu platzieren?
Vielen Dank, ich schätze Ihren Code sehr :D
Ich werde in den nächsten Tagen ein komplexeres Beispiel vorbereiten, in dem einige Trades durchgeführt werden.
Grüße,
cyberflohr
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Ich bin ein JAVA-Programmierer und benutze MT4 seit einem Jahr. Obwohl MQL ist sehr einfach und leicht zu erlernen, einige Dinge sind wirklich schmerzhaft, in dieser Sprache zu codieren. Vor ein paar Wochen dachte ich über eine einfache Integration von in Java geschriebenem Logik-Code in meinen Metatrader EA nach. Ich suchte im Internet und in diesem Forum nach einer Lösung und fand einige interessante Tools (MT4-Java API https://forum.mql4.com/27050, Java Class to DLL converter, ... ) ABER alle haben ihre Vor- und Nachteile und so entschied ich mich, meine eigene MT4-Java-Integration zu schreiben.
Ich hatte die folgenden vier MUST HAVE Anforderungen für meine Lösung:
1. Einfache Installation2. Debugging-Funktionen für JAVA-Code
3. Geschwindigkeit
4. Keine Netzwerkkommunikation zwischen MT-Terminal und einem anderen Prozess
Eine Sache, die für mich nicht wichtig war, war die Notwendigkeit, MT4-Funktionen (Indikatoren, Handelsfunktionen) aus meinem Java-Code heraus aufzurufen. Für die technische Analyse verwende ich die Open-Source-Bibliothek von www.ta-lib.org und das Orderhandling erfolgt weiterhin im MQL-Code. Der Javacode informiert den MQL-Code einfach darüber, wann es Zeit ist zu KAUFEN oder zu VERKAUFEN.
Alles was Sie benötigen ist MetaTrader, eine installierte JVM (1.6) und die beigefügte ZIP-Datei, die den MQL-Code und die DLL für den JVM-Container enthält.Kopieren Sie die Dateien aus der ZIP-Datei in Ihr MT-Installationsverzeichnis (behalten Sie die Verzeichnisstruktur bei) und bearbeiten Sie die Datei mt4j.properties und passen Sie den Pfad zu Ihrer jvm.dll-Datei an. Das ist alles, um den mt4Sample EA auszuführen.
Die Beispielimplementierung tut nichts. Es ist nur ein Skelett, um Ihnen zu zeigen, was möglich ist. Lesen Sie die Kommentare in den Dateien MT4BasicClient.java und SampleEA.java. Die JAVA-Quellen finden Sie in der Datei mt4jSample.jar. Ihre eigene Klasse muss die MT4BasicClient-Schnittstelle implementieren oder die Klasse AbstractBasicClient erweitern. Vergessen Sie nicht, das Verzeichnis oder die JAR-Datei mit Ihren eigenen Klassen zum Klassenpfad hinzuzufügen (siehe mt4j.properties).
Ihre Java-Klassen werden von einer JVM geladen und ausgeführt, die innerhalb des Terminalprozesses läuft. Dadurch erhalten Sie eine optimale Leistung. Ich habe einige Leistungstests durchgeführt und gezählt, wie oft processTick() während eines MT-Backtests ausgeführt wurde. Die durchschnittlichen Aufrufe pro Sekunde betrugen 400.000 Aufrufe/Sekunde, was meiner Meinung nach schnell genug für meine Bedürfnisse ist.
Die JVM wurde so konfiguriert, dass sie einen Debug-Port auf 8001 erstellt, so dass Sie Ihre bevorzugte IDE verwenden und Ihre Komponenten debuggen können.Alle Ressourcen, um meine kleine MT4-Java-Brücke auszuprobieren, sind an diesen Beitrag angehängt.
Viel Spaß :-)Cyberflohr