Мило. Спасибо. Однако я не могу найти https://forum.mql4.com/270509 - он выдает ошибку. Также, не могли бы вы опубликовать ваш код. Java и mt4 - это то, что я хочу использовать, но мне нужно увидеть код.
Я исправил ссылку: https://www.mql5.com/en/forum/121466.
Код MQL и Java вы можете найти в ZIP-файле.
это отличный инструмент
почему-то я не могу заставить его работать. не могли бы вы мне помочь.
Когда я запускаю советника, он разбивает МТ4.
Я использую windows 7 64bit, Java 7.0.1, MT4 ver4.00 build 409 25 oct 2011
java установлена здесь C:\jre\bin\client\jvm.dll
mt4 установлен здесь C:\MT4\
windows выдает следующее сообщение об ошибке
Подпись проблемы:
Имя события проблемы: BEX
Имя приложения: terminal.exe
Версия приложения: 4.0.0.409
Временная метка приложения: 0028f000
Имя проблемного модуля: MSVCR100.dll
Версия модуля сбоя: 10.0.30319.1
Временная метка модуля сбоя: 4ba1dbbe
Смещение исключения: 0008ae6e
Код исключения: c0000417
Данные исключения: 00000000
Версия ОС: 6.1.7601.2.1.0.256.1
Идентификатор локали: 2057
Дополнительная информация 1: a0db
Дополнительная информация 2: a0db43c64a51ee21486e76f538ab825d
Дополнительная информация 3: 5a50
Дополнительная информация 4: 5a50e927a493324cabb3491f7239cdd1
Ознакомьтесь с нашим заявлением о конфиденциальности в Интернете:
http://go.microsoft.com/fwlink/?linkid=104288&clcid=0x0409
Если заявление о конфиденциальности в Интернете недоступно, пожалуйста, прочитайте наше заявление о конфиденциальности в автономном режиме:
C:\Windows\system32\en-US\erofflps.txt
Существует две возможные причины сбоя вашего терминала MT4
1. Вы используете 64-битную JVM.
Это не сработает, потому что MT4 является 32-битным приложением. Вы должны установить 32-битную JVM на вашу Win7-64bit, которая может быть использована вместе с MT4.
Проверка версии JVM не должна показывать "64 бит"
C:\jre\bin\java -version
Java(TM) SE Runtime Environment (build 1.6.0_30-b12)
Java HotSpot(TM) 64-Bit Server VM (build 20.5-b03, mixed mode).
До сих пор я тестировал свою программу только с Java6. Возможно, в Java7 есть какие-то изменения, которые вызывают сбой.
Доступна новая версия 0.2, в которой исправлено вышеуказанное падение терминала.
Привет, Киберфлор,
Я новичок в MT, но имею некоторый опыт работы с Java, поэтому мост является очень интересным инструментом для меня. Я выполнил все указанные вами шаги по установке, но не смог запустить пример. В журнале экспертов я получил следующее:
20:53:13 mt4jSample EURUSD,H4: загружен успешно
20:53:13 mt4jSample EURUSD,H4 inputs: IntProperty=99; BoolProperty=true; DoubleProperty=1.23; StringProperty="helloWorld";
20:53:17 mt4jSample EURUSD,H4: cannot load library 'mt4j.dll'(error 126)
20:53:17 mt4jSample EURUSD,H4: эксперт остановлен
20:53:17 mt4jSample EURUSD,H4: инициализация
20:54:27 mt4jSample EURUSD,H4: успешно загружен
20:54:27 mt4jSample EURUSD,H4: не удается загрузить библиотеку 'mt4j.dll' (ошибка 126)
20:54:27 mt4jSample EURUSD,H4: эксперт остановлен
20:54:27 mt4jSample EURUSD,H4: деинициализация
20:54:27 mt4jSample EURUSD,H4: причина деинициализации 1
20:54:27 mt4jSample EURUSD,H4: removed
В чем может быть причина проблемы?
Здравствуйте, cyberflohr,
20:53:17 mt4jSample EURUSD,H4: cannot load library 'mt4j.dll' (error 126)
В чем может быть причина проблемы?
Здравствуйте
Ошибка 126, насколько я понимаю, означает, что MT4 не может найти файл dll. Предполагая, что вы называете его правильным именем, он должен находиться в папке /experts/libraries/. Он может находиться и в другом месте, но это лучшее место.
Надеюсь, это поможет.
Будь здоров
Brooky
Здравствуйте, Киберфлор,
Я выполнил вашу инструкцию по установке mt4jv0.2 и не получил никаких сообщений об ошибках в платформе MT4. Однако в SampleEA.java я обнаружил, что есть метод, который, похоже, запускается при инициализации советника в соответствии с описанием в MT4BasicClient.java
код в SampleEA.java:
@Override
public void init() {
System.out.println("init()");
}
описание в MT4BasicClient.java:
/**
* Вызывается клиентом MT4 во время фазы init.
*/
Из этого кода я думаю, что должно быть что-то выведено при инициализации, но я не видел, чтобы сообщение "init()" было выведено в платформе MT4. Правильно ли я понимаю код?
Кроме того, не могли бы вы дать еще одну демонстрацию для размещения ордера?
Спасибо большое, я очень ценю ваш код. :D
Здравствуйте
Ошибка 126, насколько я понимаю, означает, что MT4 не может найти файл dll. Предполагая, что вы называете его правильным именем, он должен находиться в папке /experts/libraries/. Он может находиться и в другом месте, но это лучшее место.
Надеюсь, это поможет.
Будь здоров
Brooky
Правильно - mt4j.dll не находится в папке libraries.
Т.е.: если папка установки metatrader - c:\program files\metatrader, то файлы для моста mt4j должны находиться в следующих местах.
c:\program files\metatrader\experts\mt4jSample.ex4
c:\program files\metatrader\experts\mt4jSample.mq4
c:\program files\metatrader\experts\libraries\mt4j.dll
c:\program files\metatrader\experts\libraries\mt4j.свойства
c:\program files\metatrader\experts\libraries\mt4jSample.jar
PS: проверьте лог-файл моста для получения дополнительной информации об ошибке
c:\program files\metatrader\experts\files\mt4j.log
Здравствуйте, Киберфлор,
Я выполнил вашу инструкцию по установке mt4jv0.2 и не получил никаких сообщений об ошибках в платформе MT4. Однако в SampleEA.java я обнаружил, что есть метод, который, похоже, запускается при инициализации советника в соответствии с описанием в MT4BasicClient.java
код в SampleEA.java:
@Override
public void init() {
System.out.println("init()");
}
описание в MT4BasicClient.java:
/**
* Вызывается клиентом MT4 во время фазы init.
*/
Из этого кода я думаю, что должно быть что-то выведено при инициализации, но я не видел, чтобы сообщение "init()" было выведено в платформе MT4. Правильно ли я понимаю код?
Кроме того, не могли бы вы дать еще одну демонстрацию для размещения ордера?
Спасибо большое, я очень ценю ваш код. :D
Я подготовлю более сложный пример, который сделает несколько сделок в ближайшие несколько дней.
с уважением,
cyberflohr
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Я программист JAVA и использую MT4 с одного года. Хотя MQL очень прост и легок в изучении, некоторые вещи на этом языке писать очень тяжело. Несколько недель назад я задумался о простой интеграции логического кода, написанного на Java, в мой советник metatrader. Я искал решение в интернете и на этом форуме и нашел несколько интересных инструментов (MT4-Java API https://forum.mql4.com/27050, Java Class to DLL converter, ...). ) Но все они имеют свои плюсы и минусы, поэтому я решил написать свою собственную интеграцию MT4-Java.
У меня были следующие четыре требования MUST HAVE для моего решения:
1. Простая установка2. Возможность отладки JAVA-кода
3. Скорость
4. Отсутствие сетевого взаимодействия между MT-Terminal и другим процессом
Одна вещь, которая не была важна для меня, это необходимость вызова функций MT4 (индикатор, торговые функции) из моего Java кода. Для технического анализа я использую библиотеку с открытым исходным кодом www.ta-lib.org, а обработка ордеров по-прежнему осуществляется в MQL-коде. Javacode просто информирует MQL-код, когда наступает время ПОКУПАТЬ или ПРОДАВАТЬ.
Все, что вам нужно, это MetaTrader, установленная JVM (1.6) и прилагаемый ZIP-файл, который содержит код MQL и DLL для контейнера JVM.Скопируйте файлы из ZIP в каталог установки MT (сохраните структуру каталогов), отредактируйте файл mt4j.properties и измените путь к файлу jvm.dll. Это все для запуска советника mt4Sample.
Реализация Sample ничего не делает. Это просто скелет, чтобы показать вам, что возможно. Прочитайте комментарии внутри файлов MT4BasicClient.java и SampleEA.java. Исходные тексты JAVA вы можете найти в файле mt4jSample.jar. Ваш собственный класс должен реализовывать интерфейс MT4BasicClient или расширять класс AbstractBasicClient. Не забудьте добавить каталог или JAR-файл с вашими собственными классами в classpath (см. mt4j.properties).
Ваши Java-классы загружаются и выполняются JVM, которая работает внутри терминального процесса. Это обеспечит вам оптимальную производительность. Я провел несколько тестов производительности и подсчитал, как часто выполнялся processTick() во время бэктеста MT. Среднее количество вызовов в секунду составило 400.000 вызовов в секунду, что, на мой взгляд, достаточно быстро для моих нужд.
JVM была настроена на создание отладочного порта 8001, так что вы можете использовать вашу любимую IDE и отлаживать ваши компоненты.Все ресурсы для опробования моего маленького моста MT4-Java прикреплены к этому сообщению.
Веселитесь :-)Cyberflohr