简单的MT4 - Java桥 - 页 3 1234 新评论 pivotpoint 2012.05.09 21:04 #21 cyberflohr: 你是否使用了正确的获取方法 - getDoubleProperty(jCtx, "DoublePropertyName") ? 我已经用双倍值验证了样本mt4jSAmple.mq4,它可以工作。setDoubleProperty(jCtx, "DoublePropertySample", DoubleProperty); if (DoubleProperty != getDoubleProperty(jCtx, "DoublePropertySample")) { Alert("Double was not set correct: " + getDoubleProperty(jCtx, "DoublePropertySample") );} 也许是浮动值本身的问题,浮动值是什么?环境========> MT4.00 build 418> Java运行时间:C:\Program Files (x86)\Java\jre6\bin\client\jvm.dlljava版本 "1.6.0_31" Java(TM) SE运行环境(构建1.6.0_31-b05)。Java HotSpot(TM)客户端虚拟机(构建20.6-b01,混合模式,共享)。包含MT4。==========#import "mt4j.dll" (导入)。double getDoubleProperty(int jctx, stringproperty);void setDoubleProperty(int jctx, string property, double value)。#import Java实现。==============私有doublePropertySample。 public double getDoublePropertySample() { 返回 this.doublePropertySample;} public void setDoublePropertySample(double doubleProperty) { this.doublePropertySample = doubleProperty; } 以下是运行的代码:==============double send_test_double = -8008.12345678912;setDoubleProperty(pid, "DoublePropertySample",send_test_double); double received_test_double = getDoubleProperty(pid, "DoublePropertySample"); Print("Double Send (as is) " ,send_test_double); Print("Double Send Test ",DoubleToStrMorePrecision(send_test_double,16)); Print("Double Received (as is) ",received_test_double); Print("Double Received Test ",DoubleToStrMorePrecision(received_test_double,16)); Print("Double Comparison Test ", send_test_double == received_test_double) 。 以下是终端日志中的几行。=======================2012.05.10 00:55:55 ATT - Java EURUSD,M5: Double Send (as is) -8008.1235 2012.05.10 00:55:55 stdlib EURUSD,M5: 载入成功 2012.05.10 00:55:55 ATT - Java EURUSD,M5: Double Send Test -8008.1234567891197003 2012.05.10 00:55:55 ATT - Java EURUSD,M5: Double Received (as is) -1.#IND 2012.05.10 00:55:55 ATT - Java EURUSD,M5: Double Received Test -1.6627963145224000 2012.05.10 00:55:55 ATT - Java EURUSD,M5: Double Comparison Test 1希望你能在上面看到一些东西,因为我已经比较过很多次了(也许我忽略了什么)。 Simple MT4 - Java Adding, replacing, and removing DoEasy 函数库中的时间序列(第三十八部分):时间序列集合 - 实时更新以及从程序访问数据 pivotpoint 2012.05.09 21:06 #22 pivotpoint: 环境 ======== > MT4.00 build 418 > Java运行时:C:\Program Files (x86)\Java\jre6\bin\client\jvm.dll java版本 "1.6.0_31" Java(TM) SE运行时环境(构建1.6.0_31-b05)。 Java HotSpot(TM) Client VM(build 20.6-b01,混合模式,共享)。 MT4包含。 ========== #import "mt4j.dll" double getDoubleProperty(int jctx, string property)。 void setDoubleProperty(int jctx, string property, double value)。 ##进口 Java实现: ============== 私有 doublePropertySample; public double getDoublePropertySample() { 返回 this.doublePropertySample; } public void setDoublePropertySample(double doubleProperty) { this.doublePropertySample = doubleProperty。 } 以下是运行的代码: ============== double send_test_double = -8008.12345678912; setDoubleProperty(pid, "DoublePropertySample," send_test_double); double received_test_double = getDoubleProperty(pid, "DoublePropertySample"); Print("Double Send (as is) ",send_test_double); Print("Double Send Test" ,DoubleToStrMorePrecision(send_test_double,16))。 Print("Double Received (as is) ",received_test_double); Print("Double Received Test",DoubleToStrMorePrecision(received_test_double,16))。 Print("双倍数比较测试",send_test_double == received_test_double)。 以下是终端日志中的几行。 ======================= 2012.05.10 00:55:55 ATT - Java EURUSD,M5: Double Send (as is) -8008.1235 2012.05.10 00:55:55 stdlib EURUSD,M5:加载成功 2012.05.10 00:55:55 ATT - Java EURUSD,M5: Double Send Test -8008.1234567891197003 2012.05.10 00:55:55 ATT - Java EURUSD,M5: Double Received (as is) -1.#IND 2012.05.10 00:55:55 ATT - Java EURUSD,M5: Double Received Test -1.6627963145224000 2012.05.10 00:55:55 ATT - Java EURUSD,M5: 双重比较测试1 希望你能在上面看到一些东西,因为我已经比较过很多次了(也许我忽略了什么)。 或者你是否碰巧有其他增强功能的软件更新版本?我目前使用的是v2版的dll。 [删除] 2012.05.11 04:06 #23 嗨,pivotpoint。 我已经用我的MT build 409测试了你的代码,它可以工作。 06:37:18 mt4jSample EURUSD,H4: Double Send (as is) -8008.1235 06:37:18 stdlib EURUSD,H4:加载成功 06:37:18 mt4jSample EURUSD,H4: 双重发送测试 -8008.1234567891197003 06:37:18 mt4jSample EURUSD,H4: Double Received (as is) -8008.1235 06:37:18 mt4jSample EURUSD,H4: Double Received Test -8008.1234567891197003 06:37:18 mt4jSample EURUSD,H4: Double Comparison Test 1 尽管如此,我还是搜索了一下,发现了一个有趣的帖子。似乎你所使用的版本(418)有一些严重的错误。 https://www.mql5.com/en/forum/138657 问候。 尹志强 Simple MT4 - Java Software products from Piligrimm I have to apologize [删除] 2012.05.11 05:14 #24 新版本。V0.3 增加了对noargs void-method的支持。 MT4代码。 //在你的EA类中调用一个noargs void方法。 callNoArgsMethod(jCtx, "doSomething")。 问候。 cyberflohr 附加的文件: mt4j_v0.3.zip 17 kb Jesus Tovar 2012.05.27 01:52 #25 brooky29: 你好 根据我的理解,错误126意味着MT4找不到dll文件。假设你用正确的名字调用它,它主要需要在/experts/libraries/文件夹中。它可以放在其他地方,但这是你的最佳位置。 希望这有帮助。 谢谢 布鲁克 事实上,经过几次测试和在外部论坛上的搜索,我发现当DLL找不到它的一个依赖项时,系统就会发布Error 126......我强烈建议使用dependence.exe工具来找出你的操作系统中缺少的DLL依赖项。 [删除] 2012.06.13 14:39 #26 你好。 我在MT build 432中遇到以下错误 2012.06.14 00:23:24 2011.09.26 20:00 mt4jSample EURUSD,H4: function 'addNewBar' call from dll 'mt4j.dll'critical error c0000005 at 6D8860FA. 对我来说,这看起来是构建时遇到了api的问题。 如果我们升级到较新的MT版本,会不会再次遇到同样的问题? 谢谢 javaelf 2012.09.08 12:33 #27 你好。 我有一个加载mt4jSample.jar的问题。我在SampleEA.java中添加了一些需要外部jar文件的代码,但是在我重新打包了mt4jSample.jar 之后,系统似乎不承认或者找不到这些外部jar文件。 新的SampleEA.java在Eclipse中工作正常,但在MetaTrader 4中却不能工作,如果我删除那些调用外部jar文件的代码并重新打包,mt4jSample.jar就能正常工作。 你能告诉我,我应该在哪里为这些外部jar文件定义或设置类的路径吗?我试过mt4j.properties,但没有用。 非常感谢 Simon Gniadkowski 2012.09.08 12:50 #28 javaelf: 你好。 我有一个加载mt4jSample.jar的问题。我在SampleEA.java中添加了一些需要外部jar文件的代码,但是在我重新打包了mt4jSample.jar 之后,系统似乎不承认或者找不到这些外部jar文件。 新的SampleEA.java在Eclipse中工作正常,但在MetaTrader 4中却不能工作,如果我删除那些调用外部jar文件的代码并重新打包,mt4jSample.jar就能正常工作。 你能告诉我,我应该在哪里为这些外部jar文件定义或设置类的路径吗?我试过mt4j.properties,但没有效果。 非常感谢 本论坛是关于mql4编码的 . . . javaelf 2012.09.09 10:55 #29 RaptorUK: 本论坛是关于mql4编码的 . . . 谢谢,但正如我在帖子中提到的,我在Eclipse中运行时没有问题,但在MetaTrader4中却有问题。不知道MQL4或MetaTrader4应该在哪里配置类的路径。 [删除] 2012.09.15 12:39 #30 javaelf:你好。 我有一个加载mt4jSample.jar的问题。我在SampleEA.java中添加了一些需要外部jar文件的代码,但是在我重新打包了mt4jSample.jar 之后,系统似乎不承认或者找不到这些外部jar文件。新的SampleEA.java在Eclipse中工作正常,但在MetaTrader 4中却不能工作,如果我删除那些调用外部jar文件的代码并重新打包,mt4jSample.jar就能正常工作。你能告诉我,我应该在哪里为这些外部jar文件定义或设置类的路径吗?我试过mt4j.properties,但没有效果。非常感谢 mt4j.properties 是扩展classpath的正确位置,即 jvmOption.1=-java.class.path=experts\libraries\mt4jSample.jar;experts\libraries\mylib.jar;c:\mylibs\mylib2.jar cyberflohr 1234 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
你是否使用了正确的获取方法 - getDoubleProperty(jCtx, "DoublePropertyName") ?
我已经用双倍值验证了样本mt4jSAmple.mq4,它可以工作。
setDoubleProperty(jCtx, "DoublePropertySample", DoubleProperty);
if (DoubleProperty != getDoubleProperty(jCtx, "DoublePropertySample")) {
Alert("Double was not set correct: " + getDoubleProperty(jCtx, "DoublePropertySample") );
}
也许是浮动值本身的问题,浮动值是什么?
环境
========
> MT4.00 build 418
> Java运行时间:C:\Program Files (x86)\Java\jre6\bin\client\jvm.dll
java版本 "1.6.0_31"
Java(TM) SE运行环境(构建1.6.0_31-b05)。
Java HotSpot(TM)客户端虚拟机(构建20.6-b01,混合模式,共享)。
包含MT4。
==========
#import "mt4j.dll" (导入)。
double getDoubleProperty(int jctx, stringproperty);
void setDoubleProperty(int jctx, string property, double value)。
#importJava实现。
==============
私有doublePropertySample。
public double getDoublePropertySample() {
返回 this.doublePropertySample;}
public void setDoublePropertySample(double doubleProperty) {
this.doublePropertySample = doubleProperty;
}
以下是运行的代码:
==============
double send_test_double = -8008.12345678912;
setDoubleProperty(pid, "DoublePropertySample",send_test_double);
double received_test_double = getDoubleProperty(pid, "DoublePropertySample");
Print("Double Send (as is) " ,send_test_double);
Print("Double Send Test ",DoubleToStrMorePrecision(send_test_double,16));
Print("Double Received (as is) ",received_test_double);
Print("Double Received Test ",DoubleToStrMorePrecision(received_test_double,16));
Print("Double Comparison Test ", send_test_double == received_test_double) 。
以下是终端日志中的几行。
=======================
2012.05.10 00:55:55 ATT - Java EURUSD,M5: Double Send (as is) -8008.1235
2012.05.10 00:55:55 stdlib EURUSD,M5: 载入成功
2012.05.10 00:55:55 ATT - Java EURUSD,M5: Double Send Test -8008.1234567891197003
2012.05.10 00:55:55 ATT - Java EURUSD,M5: Double Received (as is) -1.#IND
2012.05.10 00:55:55 ATT - Java EURUSD,M5: Double Received Test -1.6627963145224000
2012.05.10 00:55:55 ATT - Java EURUSD,M5: Double Comparison Test 1
希望你能在上面看到一些东西,因为我已经比较过很多次了(也许我忽略了什么)。
环境
========
> MT4.00 build 418
> Java运行时:C:\Program Files (x86)\Java\jre6\bin\client\jvm.dll
java版本 "1.6.0_31"
Java(TM) SE运行时环境(构建1.6.0_31-b05)。
Java HotSpot(TM) Client VM(build 20.6-b01,混合模式,共享)。
MT4包含。
==========
#import "mt4j.dll"
double getDoubleProperty(int jctx, string property)。
void setDoubleProperty(int jctx, string property, double value)。
##进口Java实现:
==============
私有 doublePropertySample;
public double getDoublePropertySample() {
返回 this.doublePropertySample;}
public void setDoublePropertySample(double doubleProperty) {
this.doublePropertySample = doubleProperty。
}
以下是运行的代码:
==============
double send_test_double = -8008.12345678912;
setDoubleProperty(pid, "DoublePropertySample," send_test_double);
double received_test_double = getDoubleProperty(pid, "DoublePropertySample");
Print("Double Send (as is) ",send_test_double);
Print("Double Send Test" ,DoubleToStrMorePrecision(send_test_double,16))。
Print("Double Received (as is) ",received_test_double);
Print("Double Received Test",DoubleToStrMorePrecision(received_test_double,16))。
Print("双倍数比较测试",send_test_double == received_test_double)。
以下是终端日志中的几行。
=======================
2012.05.10 00:55:55 ATT - Java EURUSD,M5: Double Send (as is) -8008.1235
2012.05.10 00:55:55 stdlib EURUSD,M5:加载成功
2012.05.10 00:55:55 ATT - Java EURUSD,M5: Double Send Test -8008.1234567891197003
2012.05.10 00:55:55 ATT - Java EURUSD,M5: Double Received (as is) -1.#IND
2012.05.10 00:55:55 ATT - Java EURUSD,M5: Double Received Test -1.6627963145224000
2012.05.10 00:55:55 ATT - Java EURUSD,M5: 双重比较测试1
希望你能在上面看到一些东西,因为我已经比较过很多次了(也许我忽略了什么)。
嗨,pivotpoint。
我已经用我的MT build 409测试了你的代码,它可以工作。
06:37:18 mt4jSample EURUSD,H4: Double Send (as is) -8008.1235
06:37:18 stdlib EURUSD,H4:加载成功
06:37:18 mt4jSample EURUSD,H4: 双重发送测试 -8008.1234567891197003
06:37:18 mt4jSample EURUSD,H4: Double Received (as is) -8008.1235
06:37:18 mt4jSample EURUSD,H4: Double Received Test -8008.1234567891197003
06:37:18 mt4jSample EURUSD,H4: Double Comparison Test 1
尽管如此,我还是搜索了一下,发现了一个有趣的帖子。似乎你所使用的版本(418)有一些严重的错误。
https://www.mql5.com/en/forum/138657
问候。
尹志强
增加了对noargs void-method的支持。
MT4代码。
//在你的EA类中调用一个noargs void方法。
callNoArgsMethod(jCtx, "doSomething")。
问候。
cyberflohr
你好
根据我的理解,错误126意味着MT4找不到dll文件。假设你用正确的名字调用它,它主要需要在/experts/libraries/文件夹中。它可以放在其他地方,但这是你的最佳位置。
希望这有帮助。
谢谢
布鲁克
你好。
我在MT build 432中遇到以下错误
2012.06.14 00:23:24 2011.09.26 20:00 mt4jSample EURUSD,H4: function 'addNewBar' call from dll 'mt4j.dll'critical error c0000005 at 6D8860FA.
对我来说,这看起来是构建时遇到了api的问题。
如果我们升级到较新的MT版本,会不会再次遇到同样的问题?
谢谢
你好。
我有一个加载mt4jSample.jar的问题。我在SampleEA.java中添加了一些需要外部jar文件的代码,但是在我重新打包了mt4jSample.jar 之后,系统似乎不承认或者找不到这些外部jar文件。
新的SampleEA.java在Eclipse中工作正常,但在MetaTrader 4中却不能工作,如果我删除那些调用外部jar文件的代码并重新打包,mt4jSample.jar就能正常工作。
你能告诉我,我应该在哪里为这些外部jar文件定义或设置类的路径吗?我试过mt4j.properties,但没有用。
非常感谢
你好。
我有一个加载mt4jSample.jar的问题。我在SampleEA.java中添加了一些需要外部jar文件的代码,但是在我重新打包了mt4jSample.jar 之后,系统似乎不承认或者找不到这些外部jar文件。
新的SampleEA.java在Eclipse中工作正常,但在MetaTrader 4中却不能工作,如果我删除那些调用外部jar文件的代码并重新打包,mt4jSample.jar就能正常工作。
你能告诉我,我应该在哪里为这些外部jar文件定义或设置类的路径吗?我试过mt4j.properties,但没有效果。
非常感谢
本论坛是关于mql4编码的 . . .
你好。
我有一个加载mt4jSample.jar的问题。我在SampleEA.java中添加了一些需要外部jar文件的代码,但是在我重新打包了mt4jSample.jar 之后,系统似乎不承认或者找不到这些外部jar文件。
新的SampleEA.java在Eclipse中工作正常,但在MetaTrader 4中却不能工作,如果我删除那些调用外部jar文件的代码并重新打包,mt4jSample.jar就能正常工作。
你能告诉我,我应该在哪里为这些外部jar文件定义或设置类的路径吗?我试过mt4j.properties,但没有效果。
非常感谢
mt4j.properties 是扩展classpath的正确位置,即
jvmOption.1=-java.class.path=experts\libraries\mt4jSample.jar;experts\libraries\mylib.jar;c:\mylibs\mylib2.jar
cyberflohr