从Java访问.net DLL

时间:2016-09-07 17:22:42

标签: java .net dll jna metatrader4

我是 java 和DLL-s

的新手

我需要从java访问DLL的方法。所以对我很轻松。

我尝试过使用JNA访问DLL就是我所做的。

import com.sun.jna.Library;

public class mapper {

  public interface mtApi extends Library {
        public boolean IsStopped();
  }

  public static void main(String []args){
     mtApi lib = (mtApi) Native.loadLibrary("MtApi", mtApi.class);
     boolean test = lib.IsStopped();
     System.out.println(test);

  }
}

当我运行代码时,我收到以下错误:

  

Exception in thread "main" java.lang.UnsatisfiedLinkError: {
{1}} {
{1}}

据我所知,这个错误说它无法找到该功能,但我不知道如何修复它。

我正在尝试使用此API mt4api

这是方法,我试图访问MQL4

谁能告诉我我做错了什么?

我已经查看了其他替代方案,例如Error looking up function 'IsStopped':,但我也无法解决这个问题。

如果有人可以将我链接到一个教程,告诉我如何设置它,或者知道如何,我会很高兴。

1 个答案:

答案 0 :(得分:0)

交易?
狩猎几毫秒来削减?
转入分布式处理... 绝对比依赖API更安全!

虽然您的OP指向如何弯曲java来调用.NET DLL函数, 让我勾勒出一个更加安全的解决方案

使用基于AI / ML回归的外汇交易预测器,我在同一片森林里打猎。在过去大约12年中发现的最佳解决方案,花了大约几百人*多年的经验,按以下方式设置:

Host A 执行交易:运行MetaTrader Terminal 4,脚本和EA --- distributed-processing system communicates with with a use of ZeroMQ low-latency messaging/signalling framework(需要几十微秒)

Host B 对交易工具执行AI / ML处理预测(约适用几百微秒)

Cluster C 执行连续的AI / ML预测器重新训练和HyperParameterSPACE模型选择(确实需要很多CPU小时,连续模型自适应过程全天候运行)

带有ZeroMQ的信令/消息传递层具有端口和/或绑定,可用于大多数主流和许多小众编程语言,包括java

仅针对已发布的API进行隐藏的危险:

虽然系统集成和测试的努力是巨大的,但API规范对于规范爬行总是很危险。

这就是说,在对MT4语言规范进行静默更改后,在调试过程中消耗了无数人*,这些规范可以解除以前的工具+库的负担。为什么?想象一下。前一段时间,MQL4已停止为MQL4,并以名称 - MQL5 MQL4 STRONG>。在编辑中的其他变化中,棺材中有许多小钉子和大钉子 - string 令人惊讶地不再是string并被隐藏为内部 { {1}} - 哪一个可以猜出所有DLL调用会导致什么。

因此,请注意API蠕变。

是否会损害分布式处理解决方案?

没有

通过明智的消息布局设计,MetaTrader Terminal 4行为没有任何不利影响,所有逻辑(包括策略决策)都被置于这个爬行平台之外。

可行的。快速而聪明。如果您的预算允许,也可以使用远程GPU集群处理。

即使在策略测试程序中它也能正常工作吗?

是的,确实如此。

如果有人依靠内置的策略测试程序,那么分布式处理模型仍然适用于那里。性能取决于首选的建模风格,完整的一年,逐个滴答的模拟,相当复杂的AI / ML组件在常见的COTS台式PC系统上花了几天时间(经过多年的Quant R& D,我们根本不在内部使用Strategy Tester,但请求是批量测试y / y tick-data,因此可以在这里进行评论。)