简单的MT4 - Java桥 - 页 2 1234 新评论 limk0032 2012.02.18 03:30 #11 谢谢cyberflohr的回答。我还有一个问题。 在SampleEA中定义了一些预定义的方法,这些方法通过mt4j.dll与MT4相连。这些方法通过mt4j.dll链接到MT4。如果我想在SampleEA.java中添加我自己的方法,并希望它在MT4中被调用,我应该怎么做? 修改mt4j.dll? cyberflohr: 不幸的是,写到System.out/System.err不会在MT终端显示信息。你必须把信息写到文件中(使用java.io)或使用java日志框架如log4j或slf4j。 我将在未来几天准备一个更复杂的例子,做一些交易。 问候。 cyberflohr [删除] 2012.02.21 06:37 #12 你可以在你的类中添加你自己的set/get方法,例如:void setBuyPrice(double price), double getPrice(),但是添加带有可变参数 列表的方法是不可能的。 PS:如果你愿意,我可以添加对noargs方法的支持,这意味着你首先调用你的setter方法来准备你的实例对象的数据,然后调用noargs方法来开始处理--无论你想要什么。 pivotpoint 2012.04.03 20:23 #13 对noargs方法(void someMethod())的支持将是非常方便的。因为这将改善传输数据和控制 运行数据的分离。 请注意。 tjozsa 2012.04.10 08:31 #14 嗨,cyberflohr。 很好的工具。我有一个问题。 如果我想公开我自己的公共java api以从MT4调用,我如何重新生成mt4j.dll? 谢谢。 谢谢! Regards, 塔玛斯 Jesus Tovar 2012.04.23 18:17 #15 你好,CyberFlohr,非常感谢你的MT4 Java桥。我对MT4J.dll实现内容的一些特征很感兴趣,我想为我开发自己的DLL提供一个起点,因为我想在API中添加一些可用的技术功能。 谢谢。 耶稣 [删除] 2012.04.26 11:58 #16 你好,Cyberflohr。 我按照您的指示安装了mt4jv0.2,在MT4平台上没有得到任何错误报告。然而,从SampleEA.java中我发现,根据MT4BasicClient.java中的描述,有一个方法似乎在EA初始化时运行 SampleEA.java中的代码。 @Override public void init() { System.out.println("init()")。 } MT4BasicClient.java中的描述。Beats by Dr. Dre Solo /** * 在初始阶段由MT4客户端调用。 */ 从这些代码中,我认为在初始化时应该有一些东西被打印出来。但我没有看到 "init() "信息被打印在MT4平台上。我对这段代码的理解是否正确? 此外,你能给另一个演示来下单吗? 非常感谢你,我非常欣赏你的代码。 pivotpoint 2012.05.03 19:10 #17 有没有人在发送双倍值时做过一些严格的测试? 我尝试了几种方法来发送一个双倍值,然后再接收同样的值,但都没有成功。发送到Java环境中是成功的(因为我已经在java端调试了接收的值),但在MT环境中接收相同的值却失败。 在打印收到的值时,显示出如下的输出。 2012.05.03 22:57:32 ATT - Java EURUSD,M5: Double rec : -1.#IND 有人遇到过同样的情况吗?似乎进行实际传输的dll没有正确处理双倍类型的传输。 提前感谢。 [删除] 2012.05.08 13:05 #18 pivotpoint: 有没有人在发送双倍值时做过一些严格的测试? 我尝试了几种方法来发送一个双倍值,然后再接收同样的值,但没有任何成功。发送到Java环境中是成功的(因为我已经在java端调试了接收的值),但在MT环境中接收相同的值却失败了。 在打印收到的值时,显示出如下的输出。 2012.05.03 22:57:32 ATT - Java EURUSD,M5: Double rec : -1.#IND 有人遇到过同样的情况吗?好像是做实际传输的dll没有正确处理双倍类型的传输。 提前感谢。 你是否使用了正确的getter方法 - getDoubleProperty(jCtx, "DoublePropertyName") ? 我已经用双倍值验证了样本mt4jSAmple.mq4,它可以工作。 setDoubleProperty(jCtx, "DoublePropertySample", DoubleProperty)。 如果(DoubleProperty != getDoubleProperty(jCtx, "DoublePropertySample") ) { Alert("Double wasn't set correct: " + getDoubleProperty(jCtx, "DoublePropertySample"))。 } 也许是浮动值本身的问题,浮动值是什么? [删除] 2012.05.09 02:45 #19 fasdfwesdgwe: 你好,Cyberflohr。 我按照您的指示安装了mt4jv0.2,在MT4平台上没有得到任何错误报告。然而,从SampleEA.java中我发现,根据MT4BasicClient.java中的描述,有一个方法似乎在EA初始化时运行 SampleEA.java中的代码。 @Override public void init() { System.out.println("init()")。 } MT4BasicClient.java中的描述。Beats by Dr. Dre Solo /** * 在初始阶段由MT4客户端调用。 */ 从这些代码中,我认为在初始化时应该有一些东西被打印出来。但我没有看到 "init() "信息被打印在MT4平台上。我对这段代码的理解是否正确? 此外,你能给另一个演示来下单吗? 非常感谢你,我非常欣赏你的代码。 我在之前的帖子中已经写过,没有办法将写到System.out/err的信息重定向到MT4平台上。请使用日志框架(log4j,slfj)将你的信息写入文件中。 要将写入System.out的消息重定向到文件,只需在MT4BasicClient.java类中添加以下静态初始化代码。 static { try { System.setOut(new PrintStream(new FileOutputStream("c:\temp\mt4j.log",true))。 } catch (FileNotFoundException e) { e.printStackTrace()。 } } pivotpoint 2012.05.09 20:46 #20 cyberflohr: 我在之前的文章中已经写过,没有办法将写到System.out/err的信息重定向到MT4平台。请使用日志框架(log4j,slfj)将信息写入文件。 要将写入System.out的消息重定向到文件,只需在MT4BasicClient.java类中添加以下静态初始化代码。 static { try { System.setOut(new PrintStream(new FileOutputStream("c:\temp\mt4j.log",true))。 } catch (FileNotFoundException e) { e.printStackTrace()。 } } 下面是另一个重定向的例子。 String out_filename = String.format("%s%s.log", "experts/logs/",this.getClass().getSimpleName() )。 String err_filename = String.format("%s%s_error.log", "experts/logs/",this.getClass().getSimpleName() )。 System.setOut(new PrintStream(out_filename))。 System.setErr(new PrintStream(err_filename))。 这将很好地记录你所有的控制台和错误记录。 1234 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
谢谢cyberflohr的回答。我还有一个问题。
在SampleEA中定义了一些预定义的方法,这些方法通过mt4j.dll与MT4相连。这些方法通过mt4j.dll链接到MT4。如果我想在SampleEA.java中添加我自己的方法,并希望它在MT4中被调用,我应该怎么做? 修改mt4j.dll?
不幸的是,写到System.out/System.err不会在MT终端显示信息。你必须把信息写到文件中(使用java.io)或使用java日志框架如log4j或slf4j。
我将在未来几天准备一个更复杂的例子,做一些交易。
问候。
cyberflohr
你可以在你的类中添加你自己的set/get方法,例如:void setBuyPrice(double price), double getPrice(),但是添加带有可变参数 列表的方法是不可能的。
PS:如果你愿意,我可以添加对noargs方法的支持,这意味着你首先调用你的setter方法来准备你的实例对象的数据,然后调用noargs方法来开始处理--无论你想要什么。
对noargs方法(void someMethod())的支持将是非常方便的。因为这将改善传输数据和控制 运行数据的分离。
请注意。
嗨,cyberflohr。
很好的工具。我有一个问题。
如果我想公开我自己的公共java api以从MT4调用,我如何重新生成mt4j.dll?
谢谢。
谢谢!
Regards,
塔玛斯
你好,CyberFlohr,非常感谢你的MT4 Java桥。我对MT4J.dll实现内容的一些特征很感兴趣,我想为我开发自己的DLL提供一个起点,因为我想在API中添加一些可用的技术功能。
谢谢。
耶稣
你好,Cyberflohr。
我按照您的指示安装了mt4jv0.2,在MT4平台上没有得到任何错误报告。然而,从SampleEA.java中我发现,根据MT4BasicClient.java中的描述,有一个方法似乎在EA初始化时运行
SampleEA.java中的代码。
@Override
public void init() {
System.out.println("init()")。
}
MT4BasicClient.java中的描述。Beats by Dr. Dre Solo
/**
* 在初始阶段由MT4客户端调用。
*/
从这些代码中,我认为在初始化时应该有一些东西被打印出来。但我没有看到 "init() "信息被打印在MT4平台上。我对这段代码的理解是否正确?
此外,你能给另一个演示来下单吗?
非常感谢你,我非常欣赏你的代码。
有没有人在发送双倍值时做过一些严格的测试?
我尝试了几种方法来发送一个双倍值,然后再接收同样的值,但都没有成功。发送到Java环境中是成功的(因为我已经在java端调试了接收的值),但在MT环境中接收相同的值却失败。
在打印收到的值时,显示出如下的输出。
2012.05.03 22:57:32 ATT - Java EURUSD,M5: Double rec : -1.#IND
有人遇到过同样的情况吗?似乎进行实际传输的dll没有正确处理双倍类型的传输。
提前感谢。
有没有人在发送双倍值时做过一些严格的测试?
我尝试了几种方法来发送一个双倍值,然后再接收同样的值,但没有任何成功。发送到Java环境中是成功的(因为我已经在java端调试了接收的值),但在MT环境中接收相同的值却失败了。
在打印收到的值时,显示出如下的输出。
2012.05.03 22:57:32 ATT - Java EURUSD,M5: Double rec : -1.#IND
有人遇到过同样的情况吗?好像是做实际传输的dll没有正确处理双倍类型的传输。
提前感谢。
我已经用双倍值验证了样本mt4jSAmple.mq4,它可以工作。
setDoubleProperty(jCtx, "DoublePropertySample", DoubleProperty)。
如果(DoubleProperty != getDoubleProperty(jCtx, "DoublePropertySample") ) {
Alert("Double wasn't set correct: " + getDoubleProperty(jCtx, "DoublePropertySample"))。
}
也许是浮动值本身的问题,浮动值是什么?
你好,Cyberflohr。
我按照您的指示安装了mt4jv0.2,在MT4平台上没有得到任何错误报告。然而,从SampleEA.java中我发现,根据MT4BasicClient.java中的描述,有一个方法似乎在EA初始化时运行
SampleEA.java中的代码。
@Override
public void init() {
System.out.println("init()")。
}
MT4BasicClient.java中的描述。Beats by Dr. Dre Solo
/**
* 在初始阶段由MT4客户端调用。
*/
从这些代码中,我认为在初始化时应该有一些东西被打印出来。但我没有看到 "init() "信息被打印在MT4平台上。我对这段代码的理解是否正确?
此外,你能给另一个演示来下单吗?
非常感谢你,我非常欣赏你的代码。
要将写入System.out的消息重定向到文件,只需在MT4BasicClient.java类中添加以下静态初始化代码。
static {
try {
System.setOut(new PrintStream(new FileOutputStream("c:\temp\mt4j.log",true))。
} catch (FileNotFoundException e) {
e.printStackTrace()。
}
}
我在之前的文章中已经写过,没有办法将写到System.out/err的信息重定向到MT4平台。请使用日志框架(log4j,slfj)将信息写入文件。
要将写入System.out的消息重定向到文件,只需在MT4BasicClient.java类中添加以下静态初始化代码。
static {
try {
System.setOut(new PrintStream(new FileOutputStream("c:\temp\mt4j.log",true))。
} catch (FileNotFoundException e) {
e.printStackTrace()。
}
}
下面是另一个重定向的例子。
String out_filename = String.format("%s%s.log", "experts/logs/",this.getClass().getSimpleName() )。
String err_filename = String.format("%s%s_error.log", "experts/logs/",this.getClass().getSimpleName() )。
System.setOut(new PrintStream(out_filename))。
System.setErr(new PrintStream(err_filename))。
这将很好地记录你所有的控制台和错误记录。