Доступ к.net DLL из Java

Я новичок в java и DLL-ы

Мне нужно получить доступ к методам DLL из java, Так что будь осторожен со мной.

Я пытался использовать 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:
Error looking up function 'IsStopped':
The specified procedure could not be found.

Я понимаю, что эта ошибка говорит о том, что она не может найти функцию, но я не знаю, как ее исправить.

Я пытаюсь использовать этот API mt4api

и вот метод, я пытаюсь получить доступ MQL4

Может кто-нибудь сказать мне, что я делаю не так?

Я смотрел на другие альтернативы, как jni4net, но я не могу заставить это работать.

Если кто-то может связать меня с учебником, который показывает, как это настроить, или знает, как это сделать, я был бы очень рад.

1 ответ

Решение

Торговая?
Охота на миллисекунды, чтобы сбрить?
Скорее перейдите в распределенную обработку... Определенно безопаснее, чем полагаться на API!

В то время как ваш ОП был направлен на то, как согнуть java Чтобы вызвать.NET DLL-функции, позвольте мне набросать гораздо более безопасное решение.

Используя предикторы AI/ML-регрессии для торговли на FOREX, я охотился в том же лесу. Лучшее решение, найденное за последние около 12 лет, с опытом работы в несколько сотен человек * лет, было настроено следующим образом:

Host A совершает сделки: работает с MetaTrader Terminal 4 и Script, и EA - система распределенной обработки взаимодействует с использованием ZeroMQ система обмена сообщениями / сигнализации с малой задержкой (требуется несколько десятков микросекунд)

Host B выполняет AI / ML обработку прогнозов для торгуемого инструмента (применяется около нескольких сотен микросекунд)

Cluster C выполняет непрерывное повторное обучение предикторов AI / ML и выбор модели HyperParameterSPACE (действительно требуется много CPU-часов, непрерывный процесс самоадаптации модели, работающий 24/7)


Уровень сигнализации / обмена сообщениями с ZeroMQ имеет порты и / или привязки, доступные и готовые для большинства основных и многих нишевых языков программирования, включая java,

Скрытые опасности идти только против опубликованного API:

Хотя усилия по интеграции системы и тестированию огромны, спецификации API всегда опасны для ползучести спецификаций.

Тем не менее, добавьте бесчисленное количество человеко-месяцев, потраченных на отладку после тихого изменения спецификаций языка MT4, которое лишает вас предыдущих инструментов и библиотек. Зачем? Представь. Некоторое время назад, MQL4 перестал быть MQL4 и молча сместился в сторону MQL5, под именем New- MQL4, Среди других изменений в сборнике было много маленьких и больших гвоздей в гробу - string удивительно перестал быть string и был скрыт как внутренний struct - кто бы мог догадаться, что вызовет все вызовы DLL.

Итак, остерегайтесь ползучести API.


Вредит ли решение распределенной обработки?

Нет.

С мудрым дизайном макета сообщения нет никаких неблагоприятных эффектов поведения Терминала 4 MetaTrader, и вся логика (включая стратегическое решение) помещена вне этой бегущей платформы.

Выполнимо. Быстро и умно. Также может использовать обработку удаленного GPU-кластера, если позволяет ваш бюджет.


Это работает даже в тестере стратегий?

Да, это так.

Если у кого-то хватит сил полагаться на встроенный тестер стратегий, модель распределенной обработки все еще работает там. Производительность зависит от предпочтительного стиля моделирования: тиковое моделирование в течение одного года с довольно сложными компонентами AI / ML заняло несколько дней на обычных настольных ПК-системах COTS (после многих лет исследований и разработок Quant мы вообще не использовать тестер стратегий для внутреннего использования, но просьба состояла в том, чтобы тестировать данные тиковых данных г / г, поэтому их можно прокомментировать здесь).

Другие вопросы по тегам