不错。谢谢。然而,我找不到https://forum.mql4.com/270509 - 它显示一个错误。另外,能不能请你把你的代码贴出来。Java和mt4是我想使用的东西,但需要看到代码。
我已经纠正了链接:https://www.mql5.com/en/forum/121466
你可以在ZIP文件中找到MQL和Java代码。
这是个很好的工具
我不能让它工作,你能帮助我吗?
当我运行EA时,MT4崩溃了。
我使用的是windows 7 64bit, Java 7.0.1, MT4 ver4.00 build 409 25 oct 2011
java安装在这里 C:\jre\bin\client\jvm.dll
mt4安装在这里 C:\MT4\
windows给出了以下错误信息
问题签名。
问题事件名称: BEX
应用程序名称: terminal.exe
应用程序版本: 4.0.0.409
应用程序时间戳: 0028f000
故障模块名称: MSVCR100.dll
故障模块版本: 10.0.30319.1
故障模块时间戳: 4ba1dbbe
异常偏移量: 0008ae6e
异常代码: c0000417
异常数据: 00000000
操作系统版本: 6.1.7601.2.1.0.256.1
本地ID: 2057
附加信息1: a0db
附加信息2: a0db43c64a51ee21486e76f538ab825d
附加信息3: 5a50
附加信息4: 5a50e927a493324cabb3491f7239cdd1
在线阅读我们的隐私声明。
http://go.microsoft.com/fwlink/?linkid=104288&clcid=0x0409
如果没有在线隐私声明,请离线阅读我们的隐私声明。
C:\Windows\system32\en-US\erofflps.txt
你的MT4终端崩溃的原因可能有两个
1.您使用的是64位JVM
这是不可能的,因为MT4是一个32位的应用程序。您必须在您的Win7-64bit上安装一个32bit的JVM,它可以和MT4一起使用。
JVM 版本检查 不应显示 "64 位"
C:\jre\bin\java -version
Java(TM) SE运行环境(build 1.6.0_30-b12)
Java HotSpot(TM) 64-Bit服务器虚拟机(build 20.5-b03,混合模式)。
到目前为止,我只用Java6来测试我的程序。也许在Java7中有一些变化,引发了崩溃。
嗨,cyberflohr。
我是MT的新手,但对Java有一些经验,所以这个桥对我来说是非常有趣的工具。我已经执行了你提到的所有安装步骤,但却无法启动这个例子。我在专家日志中看到以下内容。
20:53:13 mt4jSample EURUSD,H4: 载入成功
20:53:13 mt4jSample EURUSD,H4输入。IntProperty=99; BoolProperty=true; DoubleProperty=1.23; StringProperty="helloWorld"。
20:53:17 mt4jSample EURUSD,H4: 无法加载库 'mt4j.dll'(错误 126)
20:53:17 mt4jSample EURUSD,H4:专家停止工作
20:53:17 mt4jSample EURUSD,H4:已初始化
20:54:27 mt4jSample EURUSD,H4:加载成功
20:54:27 mt4jSample EURUSD,H4:无法加载库 "mt4j.dll"(错误126)。
20:54:27 mt4jSample EURUSD,H4:专家停止工作
20:54:27 mt4jSample EURUSD,H4:取消初始化
20:54:27 mt4jSample EURUSD,H4: 取消初始化的原因1
20:54:27 mt4jSample EURUSD,H4:移除
问题的原因可能是什么?
你好,Cyberflohr。
我按照您的指示安装了mt4jv0.2,在MT4平台上没有得到任何错误报告。然而,从SampleEA.java中我发现,根据MT4BasicClient.java中的描述,有一个方法似乎在EA初始化时运行
SampleEA.java中的代码。
@Override
public void init() {
System.out.println("init()")。
}
MT4BasicClient.java中的描述。
/**
*由MT4客户端在初始阶段调用。
从这些代码中,我认为在初始化时应该有一些东西被打印出来。但在MT4平台上,我没有看到 "init() "信息被打印。我对这段代码的理解是否正确?
此外,你能给另一个演示来下单吗?
非常感谢你,我真的很欣赏你的代码。
你好
根据我的理解,错误126意味着MT4找不到dll文件。假设你用正确的名字调用它,它主要需要在/experts/libraries/文件夹中。它可以放在其他地方,但这是你的最佳位置。
希望这有帮助。
谢谢
布鲁克
正确 - mt4j.dll不在libraries文件夹中。
即:如果你的metatrader安装文件夹是c:\program files\metatrader,那么mt4j桥的文件必须在以下位置。
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:查看桥接日志文件,了解有关错误的进一步信息
c:\program files\metatrader\experts\files\mt4j.log
你好,Cyberflohr。
我按照您的指示安装了mt4jv0.2,在MT4平台上没有得到任何错误报告。然而,从SampleEA.java中我发现,根据MT4BasicClient.java中的描述,有一个方法似乎在EA初始化时运行
SampleEA.java中的代码。
@Override
public void init() {
System.out.println("init()")。
}
MT4BasicClient.java中的描述。
/**
*由MT4客户端在初始阶段调用。
从这些代码中,我认为在初始化时应该有一些东西被打印出来。但在MT4平台上,我没有看到 "init() "信息被打印。我对这段代码的理解是否正确?
此外,你能给另一个演示来下单吗?
非常感谢你,我真的很欣赏你的代码。
我将在未来几天准备一个更复杂的例子,做一些交易。
问候。
cyberflohr
我是一个JAVA程序员,我从一年前就开始使用MT4。虽然MQL非常简单易学,但用这种语言编写代码时,有些事情确实很痛苦。几周前,我想把用Java编写的逻辑代码简单地整合到我的metatrader EA中。我在互联网和这个论坛上寻找解决方案,我发现了一些有趣的工具(MT4-Java API https://forum.mql4.com/27050, Java Class to DLL converter, ...) 但所有这些都有其优点和缺点,所以我决定自己写一个MT4-Java集成。
我对我的解决方案有以下四个必须具备的要求。
1. 简单的安装2. 对JAVA代码的调试能力
3. 速度快
4. 4.MT-Terminal和另一个进程之间没有网络通信
有一件事对我来说并不重要,那就是需要在我的Java代码中调用MT4功能(指标,交易功能)。对于技术分析,我使用来自www.ta-lib.org 的开源库,订单处理仍在MQL代码中完成。Javacode只是在买入或卖出的时候通知MQL代码。
你所需要的是MetaTrader,一个已安装的JVM(1.6)和所附的ZIP文件,其中包含MQL代码和JVM容器的DLL。将ZIP中的文件复制到你的MT安装目录(保持目录结构),编辑mt4j.properties文件,并调整jvm.dll文件的路径。这就是运行mt4Sample EA的全部内容。
样本实现不做任何事情。它只是一个骨架,向你展示什么是可能的。 请阅读MT4BasicClient.java和SampleEA.java这两个文件中的注释。 你可以在mt4jSample.jar中找到JAVA源。 你自己的类必须实现MT4BasicClient接口或必须扩展 AbstractBasicClient类。不要忘记在classpath中添加包含你自己的类的目录或JAR文件(见mt4j.properties)。
你的Java类被一个在终端进程内运行的JVM加载和执行。这将给你带来最佳的性能。我做了一些性能测试,并计算了在MT回测中执行processTick()的频率。每秒的平均调用次数为400.000次/秒,我认为这对我的需求来说已经足够快了。
JVM被配置为在8001创建一个调试端口,所以你可以使用你最喜欢的IDE并调试你的组件。试用我的MT4-Java小桥的所有资源都附在这个帖子里。
祝你愉快 :-)Cyberflohr