我是 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':
,但我也无法解决这个问题。
如果有人可以将我链接到一个教程,告诉我如何设置它,或者知道如何,我会很高兴。
答案 0 :(得分:0)
虽然您的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规范对于规范爬行总是很危险。
这就是说,在对MT4语言规范进行静默更改后,在调试过程中消耗了无数人*,这些规范可以解除以前的工具+库的负担。为什么?想象一下。前一段时间,MQL4
已停止为MQL4
,并以名称 新 - MQL5
{<}向<{1}}默默转移到MQL4
STRONG>。在编辑中的其他变化中,棺材中有许多小钉子和大钉子 - string
令人惊讶地不再是string
并被隐藏为内部 { {1}} - 哪一个可以猜出所有DLL调用会导致什么。
因此,请注意API蠕变。
没有
通过明智的消息布局设计,MetaTrader Terminal 4行为没有任何不利影响,所有逻辑(包括策略决策)都被置于这个爬行平台之外。
可行的。快速而聪明。如果您的预算允许,也可以使用远程GPU集群处理。
是的,确实如此。
如果有人依靠内置的策略测试程序,那么分布式处理模型仍然适用于那里。性能取决于首选的建模风格,完整的一年,逐个滴答的模拟,相当复杂的AI / ML组件在常见的COTS台式PC系统上花了几天时间(经过多年的Quant R&amp; D,我们根本不在内部使用Strategy Tester,但请求是批量测试y / y tick-data,因此可以在这里进行评论。)