Я тщательно следовал вашим указаниям, но мне не удается заставить это работать в Matlab 2007b. Я постоянно получаю эти ошибки, когда пытаюсь использовать ваши готовые примеры в терминале MT5.
2010.08.29 10:33:30 TestMLEngine (EURUSD,H1) Cannot open 'C:\Users\QuantFX\AppData\Roaming\MetaQuotes\Terminal\216E2BD2BB8CE60176A41ADF6AC1C76D\MQL5\Libraries\LibMlEngine.dll' (126)
2010.08.29 10:33:47 TestDllMatlab (EURUSD,H1) Cannot open 'C:\Users\QuantFX\AppData\Roaming\MetaQuotes\Terminal\216E2BD2BB8CE60176A41ADF6AC1C76D\MQL5\Libraries\nnSMA.dll' (126)
Я не знаю, что думать об этом, потому что я могу получить проект, упомянутый в статье"Как обмениваться данными: A DLL for MQL5 in 10 Minutes ", найденный здесь https://www.mql5.com/en/articles/18, работает без проблем.
2010.08.29 10:44:16 MQL5DLL_Test (EURUSD,H1) Access violation write to 0x000000 in 'C:\Users\QuantFX\AppData\Roaming\MetaQuotes\Terminal\216E2BD2BB8CE60176A41ADF6AC1C76D\MQL5\Libraries\MQL5DLLSamples.dll'
2010.08.29 10:44:16 MQL5DLL_Test (EURUSD,H1) Replace: Быстрая коричневая кошка перепрыгивает через ленивую собаку
2010.08.29 10:44:16 MQL5DLL_Test (EURUSD,H1) Массив: 0 1 2 3 4 5 6 7 8 9
2010.08.29 10:44:16 MQL5DLL_Test (EURUSD,H1) Время 297 мсек, int: -752584127 double: 17247836076609
Так что терминал, очевидно, не имеет проблем с нарушением доступа к папке \Libraries, и я уверен, что советник "Options" позволяет импортировать dll и автоторговлю... Любая помощь была бы очень признательна, потому что я был в тупике с момента прочтения этой статьи. Заранее спасибо
- 2010.01.27
- MetaQuotes Software Corp.
- www.mql5.com
Наконец-то у меня получилось... Отличная статья, должен сказать. У меня нет большого опыта работы с Visual Studio, и я новичок в программировании metatrader. Так что эта задача показалась мне несколько сложной из-за всех ошибок, которые я получал. Хотя в конечном итоге она очень проста для всех версий matlab и visual studio.Всем, кто делает первые попытки соединить Metatrader и Matlab, я предлагаю сделать следующее, чтобы получить представление, если вы никогда не работали с движком matlab или внешними библиотеками metatrader. 1. Создайте проект, который поставляется с matlab и находится в matlabroot\externs\examples\eng_mat\engwindemo.c, следуя этой статье. http://www.mathworks.com/support/solutions/en/data/1-78077S/index.html?product=ML&solution=1-78077S Скомпилируйте его, и если у вас возникнут проблемы, например, с отсутствующими dll-файлами, используйте программу dependency walker, найденную здесь http://www.dependencywalker.com/, чтобы определить, какие недостающие файлы необходимо поместить в папку C:\Windows\System 32, чтобы используемая вами версия движка matlab заработала. Возможно, вам придется поместить множество файлов в папку system 32, или узнать, в каких местах проекта их нужно связать. Хотя большинство dll находятся в папке matlabroot\bin\win(32 или 64). После того как вы поместите первые несколько необходимых dll-файлов, вернитесь и попробуйте собрать проект снова. Возможно, вы обнаружите, что вам не нужно делать все, что предлагает dependency walker. Если проект скомпилируется и запустится, значит, вы почти закончили... 2. Соберите проект, предложенный в статье How to Exchange Data: DLL для MQL5 за 10 минут https://www.mql5.com/en/articles/18 . Если этот проект работает, помните, что при создании вышеуказанного проекта вы объединяете два проекта. Запомните все шаги, которые вы выполнили, и когда вы будете готовы скомпилировать этот проект, убедитесь, что "stdafx.h" является первым #include-заголовком в DLLUnit.cpp, и вы отключили прекомпилированные заголовки, непосредственно перед сборкой. Использование вышеуказанных файлов как есть может дать несколько предупреждений, которые легко исправить, но проект должен работать без проблем. Мои два цента здесь могут показаться руководством для чайников, но выполнение этих действий может сэкономить вам пару часов вашего свободного времени, если вам понадобится собрать этот проект с другой версией matlab или использовать visual studio.
Будьте здоровы
Если не ошибаюсь, то некорректно указан тип матлабовских матриц в Таблице 1. Пропущена буква u. Т.е., например, тип uint16 отвечает за диапазон от 0 до 65535, а не тип int16. И так далее...
Class | Range of Values | Conversion Function |
|---|---|---|
Signed 8-bit integer | -27 to 27-1 | int8 |
Signed 16-bit integer | -215 to 215-1 | int16 |
Signed 32-bit integer | -231 to 231-1 | int32 |
Signed 64-bit integer | -263 to 263-1 | int64 |
Unsigned 8-bit integer | 0 to 28-1 | uint8 |
Unsigned 16-bit integer | 0 to 216-1 | uint16 |
Unsigned 32-bit integer | 0 to 232-1 | uint32 |
Unsigned 64-bit integer | 0 to 264-1 | uint64 |
Добрый день, спасибо за отличную статью, очень помогла!
Однако возникла проблема. Может, кто-нибудь сталкивался.
У меня при закрытии советника наглухо виснет MT5. Использую MS Visual Studio2010 + Matlab r2011a.
Как думаете, в чем может быть причина? Заранее спасибо!
Добрый день.Сделал вроде все как в статье, однако при запуске скрипта TestMlEngine выскакивала ошибка:
2011.12.17 15:55:23 TestMLEngine (EURUSD,H1) Cannot open 'C:\Users\H_F_M\AppData\Roaming\MetaQuotes\Terminal\DEA4AAFB99C996D79821EC8BDBADDC3C\MQL5\Libraries\LibMlEngine.dll' (126)
и потом сразу:
2011.12.17 15:55:23 TestMLEngine (EURUSD,H1) Cannot find 'mlxGetSizeOfName' in 'LibMlEngine.dll'
2011.12.17 15:55:23 TestMLEngine (EURUSD,H1) Cannot find 'mlxGetLogical' in 'LibMlEngine.dll'
2011.12.17 15:55:23 TestMLEngine (EURUSD,H1) Cannot find 'mlxGetInt' in 'LibMlEngine.dll'
2011.12.17 15:55:23 TestMLEngine (EURUSD,H1) Cannot find 'mlxGetDouble' in 'LibMlEngine.dll'
2011.12.17 15:55:23 TestMLEngine (EURUSD,H1) Cannot find 'mlxInputLogical' in 'LibMlEngine.dll'
2011.12.17 15:55:23 TestMLEngine (EURUSD,H1) Cannot find 'mlxInputInt' in 'LibMlEngine.dll'
2011.12.17 15:55:23 TestMLEngine (EURUSD,H1) Cannot find 'mlxInputDouble' in 'LibMlEngine.dll'
2011.12.17 15:55:23 TestMLEngine (EURUSD,H1) Cannot find 'mlxInputChar' in 'LibMlEngine.dll'
2011.12.17 15:55:23 TestMLEngine (EURUSD,H1) Cannot find 'mlxOpen' in 'LibMlEngine.dll'
2011.12.17 15:55:23 TestMLEngine (EURUSD,H1) Cannot find 'mlxClose' in 'LibMlEngine.dll'
Где-то на форуме нашел, что это из-за недостачи dll-ок, с помощью depends.exe нашел что ему не доставало, закинул в ту же папку, помогло, но не совсем.Теперь выдает:
2011.12.17 15:57:59 TestMLEngine (EURUSD,H1) Cannot open 'C:\Users\H_F_M\AppData\Roaming\MetaQuotes\Terminal\DEA4AAFB99C996D79821EC8BDBADDC3C\MQL5\Libraries\LibMlEngine.dll' (127)
и дальше посписку все "Cannot find...". Подскажите, в чем проблема? Уже неделю бьюсь...
Да, у меня Win7 + Matlab R2011a + VS201.
Добрый день.Сделал вроде все как в статье, однако при запуске скрипта TestMlEngine выскакивала ошибка:
2011.12.17 15:55:23 TestMLEngine (EURUSD,H1) Cannot open 'C:\Users\H_F_M\AppData\Roaming\MetaQuotes\Terminal\DEA4AAFB99C996D79821EC8BDBADDC3C\MQL5\Libraries\LibMlEngine.dll' (126)
и потом сразу:
2011.12.17 15:55:23 TestMLEngine (EURUSD,H1) Cannot find 'mlxGetSizeOfName' in 'LibMlEngine.dll'
2011.12.17 15:55:23 TestMLEngine (EURUSD,H1) Cannot find 'mlxGetLogical' in 'LibMlEngine.dll'
2011.12.17 15:55:23 TestMLEngine (EURUSD,H1) Cannot find 'mlxGetInt' in 'LibMlEngine.dll'
2011.12.17 15:55:23 TestMLEngine (EURUSD,H1) Cannot find 'mlxGetDouble' in 'LibMlEngine.dll'
2011.12.17 15:55:23 TestMLEngine (EURUSD,H1) Cannot find 'mlxInputLogical' in 'LibMlEngine.dll'
2011.12.17 15:55:23 TestMLEngine (EURUSD,H1) Cannot find 'mlxInputInt' in 'LibMlEngine.dll'
2011.12.17 15:55:23 TestMLEngine (EURUSD,H1) Cannot find 'mlxInputDouble' in 'LibMlEngine.dll'
2011.12.17 15:55:23 TestMLEngine (EURUSD,H1) Cannot find 'mlxInputChar' in 'LibMlEngine.dll'
2011.12.17 15:55:23 TestMLEngine (EURUSD,H1) Cannot find 'mlxOpen' in 'LibMlEngine.dll'
2011.12.17 15:55:23 TestMLEngine (EURUSD,H1) Cannot find 'mlxClose' in 'LibMlEngine.dll'
Где-то на форуме нашел, что это из-за недостачи dll-ок, с помощью depends.exe нашел что ему не доставало, закинул в ту же папку, помогло, но не совсем.Теперь выдает:
2011.12.17 15:57:59 TestMLEngine (EURUSD,H1) Cannot open 'C:\Users\H_F_M\AppData\Roaming\MetaQuotes\Terminal\DEA4AAFB99C996D79821EC8BDBADDC3C\MQL5\Libraries\LibMlEngine.dll' (127)
и дальше посписку все "Cannot find...". Подскажите, в чем проблема? Уже неделю бьюсь...
Да, у меня Win7 + Matlab R2011a + VS201.
У меня при установке Матлаба в System path прописалось только: "C:\Program Files\MATLAB\R2011b\bin". Я добавил "C:\Program Files\MATLAB\R2011b\bin\win32". Dll из матлабовской директории стали видны и Matlab Engine запустился. До этого писал, что не видит dll.
Доброго дня) У меня возникла еще проблема - в папке<MATLAB>\extern\lib\win32\ почему-то не обнаруживается каталога "Borland", хотя стоит Borland C++ Builder 6. Соответственно файлы libeng.lib и libmx.lib покдлючить к проекту тоже не получается. На команду "implib libeng.lib libeng.dll" Far выдает следующее:
)
А папки Borland как не было, так и нет... Может кто подскжет, как с это бедой бороться? Или хотя бы эти два файлика скинет?:-)
Вобщем прошу помощи, ибо вобще не понимаю чего-то...
Для чистоты эксперимента поставил VMware, куда установил 2 системы - ХР и 7ку.
Далее ставил Matlab R2011b, устанавливал MCR, ставил последний билд МТ5. Из архива, приложенного к статье, все файлы раскидал по папкам, как написано в инструкции, расположенной в архиве. Файлы mq5 компилировал в ex5 (т.е. имеющиеся в архиве ex5 удалял, а на их место ставил вновь скомпилированные). Запускаю MT5, запускаю Matlab (пробовал и не запускать его - результат тот же), в терминале тыкаю на TestMlEngine, и он мне выдает:
TestMLEngine (EURUSD,H1) 13:44:58 Cannot open 'C:\Users\User\AppData\Roaming\MetaQuotes\Terminal\DEA4AAFB99C996D79821EC8BDBADDC3C\MQL5\Libraries\LibMlEngine.dll' (126)
TestMLEngine (EURUSD,H1) 13:44:58 Cannot find 'mlxClose' in 'LibMlEngine.dll'
TestMLEngine (EURUSD,H1) 13:44:58 Cannot find 'mlxOpen' in 'LibMlEngine.dll'
TestMLEngine (EURUSD,H1) 13:44:58 Cannot find 'mlxInputChar' in 'LibMlEngine.dll'
TestMLEngine (EURUSD,H1) 13:44:58 Cannot find 'mlxInputDouble' in 'LibMlEngine.dll'
TestMLEngine (EURUSD,H1) 13:44:58 Cannot find 'mlxInputInt' in 'LibMlEngine.dll'
TestMLEngine (EURUSD,H1) 13:44:58 Cannot find 'mlxInputLogical' in 'LibMlEngine.dll'
TestMLEngine (EURUSD,H1) 13:44:58 Cannot find 'mlxGetDouble' in 'LibMlEngine.dll'
TestMLEngine (EURUSD,H1) 13:44:58 Cannot find 'mlxGetInt' in 'LibMlEngine.dll'
TestMLEngine (EURUSD,H1) 13:44:58 Cannot find 'mlxGetLogical' in 'LibMlEngine.dll'
TestMLEngine (EURUSD,H1) 13:44:58 Cannot find 'mlxGetSizeOfName' in 'LibMlEngine.dll'
Что делатьуже не знаю. Перепробовал все что можно было. Пробовал Dllку из статьи "Как за 10 минут написать DLL библиотеку для MQL5 и обмениваться данными?" (https://www.mql5.com/ru/articles/18) - работает без проблем.
Может кто подскажет как еще к ней подобраться? Что я не так делаю?
Зараннее спасибо.
- 2010.01.27
- MetaQuotes Software Corp.
- www.mql5.com
У меня при установке Матлаба в System path прописалось только: "C:\Program Files\MATLAB\R2011b\bin". Я добавил "C:\Program Files\MATLAB\R2011b\bin\win32". Dll из матлабовской директории стали видны и Matlab Engine запустился. До этого писал, что не видит dll.
Если имеется в виду переменная среды Path, то я добавил туда "C:\Program Files\MATLAB\R2011b\bin\win32", однако ситуация не изменилась :-(
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Опубликована статья Взаимодействие MetaTrader 5 и MATLAB:
Автор: Andrey Emelyanov