Segui suas instruções cuidadosamente, mas não consigo fazer isso funcionar com o Matlab 2007b. Continuo recebendo esses erros ao tentar usar seus exemplos pré-construídos com o Terminal MT5.
2010.08.29 10:33:30 TestMLEngine (EURUSD,H1) Não é possível abrir 'C:\Users\QuantFX\AppData\Roaming\MetaQuotes\Terminal\216E2BD2BB8CE60176A41ADF6AC1C76D\MQL5\Libraries\LibMlEngine.dll' (126)
2010.08.29 10:33:47 TestDllMatlab (EURUSD,H1) Não é possível abrir 'C:\Users\QuantFX\AppData\Roaming\MetaQuotes\Terminal\216E2BD2BB8CE60176A41ADF6AC1C76D\MQL5\Libraries\nnSMA.dll' (126)
Não sei bem o que pensar sobre isso, pois consigo obter o projeto mencionado no artigo"How to Exchange Data: Uma DLL para MQL5 em 10 minutos " encontrado aqui https://www.mql5.com/en/articles/18 funcionando sem problemas.
2010.08.29 10:44:16 MQL5DLL_Test (EURUSD,H1) Violação de acesso à gravação em 0x00000000 em 'C:\Users\QuantFX\AppData\Roaming\MetaQuotes\Terminal\216E2BD2BB8CE60176A41ADF6AC1C76D\MQL5\Libraries\MQL5DLLSamples.dll'
2010.08.29 10:44:16 MQL5DLL_Test (EURUSD,H1) Replace: Um gato marrom rápido pula sobre o cachorro preguiçoso
2010.08.29 10:44:16 MQL5DLL_Test (EURUSD,H1) Array: 0 1 2 3 4 5 6 7 8 9
2010.08.29 10:44:16 MQL5DLL_Test (EURUSD,H1) Time 297 msec, int: -752584127 double: 17247836076609
Portanto, o terminal obviamente não tem problemas com violações de acesso à pasta \Libraries, e tenho certeza de que as "Opções" do Expert Advisor permitem a importação de dll e a negociação automática... Qualquer ajuda seria muito bem-vinda, pois estou perplexo com isso desde que li este artigo pela primeira vez. Desde já, obrigado
- 2010.01.27
- MetaQuotes Software Corp.
- www.mql5.com
Finalmente consegui fazer isso funcionar... Excelente artigo, devo dizer. Não tenho muita experiência com o Visual Studio e sou novato na programação do Metatrader. Portanto, isso pareceu um desafio com todos os erros que eu estava recebendo. Embora seja muito fácil a longo prazo para todas as versões do Matlab e do Visual Studio.Para quem estiver fazendo suas primeiras tentativas de conectar o Metatrader e o Matlab, sugiro que faça o seguinte para ter uma ideia, caso nunca tenha trabalhado com o mecanismo do matlab ou com as bibliotecas externas do Metatrader. 1. Crie o projeto que vem com o matlab, encontrado em matlabroot\externs\examples\eng_mat\engwindemo.c seguindo este artigo. http://www.mathworks.com/support/solutions/en/data/1-78077S/index.html?product=ML&solution=1-78077S Compile-o e, se tiver problemas, como arquivos dll ausentes, use o dependency walker, encontrado aqui http://www.dependencywalker.com/para determinar quais arquivos ausentes precisam ser colocados na pasta C:\Windows\System 32 para que a versão do mecanismo matlab que você está usando funcione. Talvez seja bom observar que você pode acabar tendo que colocar muitos arquivos na pasta system 32 ou saber os locais certos para vinculá-los em seu projeto. Embora a maioria das dlls seja encontrada na pasta matlabroot\bin\win(32 ou 64), depois de colocar os primeiros arquivos dll necessários, volte e tente criar o projeto novamente. Talvez você descubra que não precisa fazer tudo o que o dependency walker sugere. Se você conseguir compilar e executar o projeto, então está quase pronto... 2. Compile o projeto sugerido no artigo How to Exchange Data: A DLL for MQL5 in 10 Minutes https://www.mql5.com/en/articles/18 . Se esse projeto funcionar, lembre-se de que, ao criar o projeto acima, você estará combinando os dois. Lembre-se de todas as etapas que você seguiu e, quando estiver pronto para compilar esse projeto, certifique-se de que "stdafx.h" seja o primeiro cabeçalho #include em DLLUnit.cpp e que você tenha desativado os cabeçalhos pré-compilados antes da compilação. O uso dos arquivos acima como estão pode gerar alguns avisos que podem ser facilmente corrigidos, mas o projeto deve funcionar sem problemas. Meus dois centavos adicionados aqui podem parecer o guia do idiota para esse projeto, mas fazer essas coisas pode economizar algumas horas do seu tempo livre se você precisar construir esse projeto com outra versão do matlab ou usar o visual studio.
Abraços
Se não me engano, o tipo de matrizes do Matlab na Tabela 1 está incorreto. A letra u está faltando. Ou seja, por exemplo, o tipo uint16 é responsável pelo intervalo de 0 a 65535, não o tipo int16. E assim por diante...
Classe | Intervalo de valores | Função de conversão |
|---|---|---|
Inteiro de 8 bits com sinal | -27 a27-1 | int8 |
Inteiro de 16 bits com sinal | -215 a215-1 | int16 |
Inteiro de 32 bits com sinal | -231 a231-1 | int32 |
Inteiro de 64 bits com sinal | -263 a263-1 | int64 |
Inteiro de 8 bits sem sinal | 0 a28-1 | uint8 |
Número inteiro sem sinal de 16 bits | 0 a216-1 | uint16 |
Número inteiro de 32 bits sem sinal | 0 a232-1 | uint32 |
Número inteiro sem sinal de 64 bits | 0 a264-1 | uint64 |
Boa tarde, obrigado pelo excelente artigo, muito útil!
No entanto, surgiu um problema. Talvez alguém já tenha se deparado com ele.
Ao fechar um Expert Advisor, o MT5 trava completamente quando eu o fecho. Eu uso o MS Visual Studio 2010 + Matlab r2011a.
O que você acha que pode ser o motivo? Desde já, obrigado!
Boa tarde, fiz tudo como no artigo, mas ao executar o script TestMlEngine, apareceu um erro:
2011.12.17 15:55:23 TestMLEngine(EURUSD,H1) Não é possível abrir 'C:\Users\H_F_M\AppData\Roaming\MetaQuotes\Terminal\DEA4AAFB99C996D79821EC8BDBADDC3C\MQL5\Libraries\LibMlEngine.dll' (126)
e depois imediatamente:
2011.12.17 15:55:23 TestMLEngine (EURUSD,H1) Não é possível encontrar 'mlxGetSizeOfName' em 'LibMlEngine.dll'
2011.12.17 15:55:23 TestMLEngine (EURUSD,H1) Não é possível encontrar 'mlxGetLogical' em 'LibMlEngine.dll'
2011.12.17 15:55:23 TestMLEngine (EURUSD,H1) Não é possível encontrar 'mlxGetInt' em 'LibMlEngine.dll'
2011.12.17 15:55:23 TestMLEngine (EURUSD,H1) Não é possível encontrar 'mlxGetDouble' em 'LibMlEngine.dll'
2011.12.17 15:55:23 TestMLEngine (EURUSD,H1) Não é possível encontrar 'mlxInputLogical' em 'LibMlEngine.dll'
2011.12.17 15:55:23 TestMLEngine (EURUSD,H1) Não é possível encontrar 'mlxInputInt' em 'LibMlEngine.dll'
2011.12.17 15:55:23 TestMLEngine (EURUSD,H1) Não é possível encontrar 'mlxInputDouble' em 'LibMlEngine.dll'
2011.12.17 15:55:23 TestMLEngine (EURUSD,H1) Não é possível encontrar 'mlxInputChar' em 'LibMlEngine.dll'
2011.12.17 15:55:23 TestMLEngine (EURUSD,H1) Não é possível encontrar 'mlxOpen' em 'LibMlEngine.dll'
2011.12.17 15:55:23 TestMLEngine (EURUSD,H1) Não é possível encontrar 'mlxClose' em 'LibMlEngine.dll'
Em algum lugar do fórum, descobri que isso se deve à falta de dlls. Com a ajuda do depends.exe, descobri o que estava faltando, coloquei-o na mesma pasta, o que ajudou, mas não totalmente:
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).
e a lista continua com "Cannot find...". Você pode me dizer qual é o problema? Já estou lutando há uma semana...
Sim, tenho o Win7 + Matlab R2011a + VS201.
.
Boa tarde, fiz tudo como no artigo, mas ao executar o script TestMlEngine, apareceu um erro:
2011.12.17 15:55:23 TestMLEngine (EURUSD,H1) Não é possível abrir 'C:\Users\H_F_M\AppData\Roaming\MetaQuotes\Terminal\DEA4AAFB99C996D79821EC8BDBADDC3C\MQL5\Libraries\LibMlEngine.dll' (126)
e depois imediatamente:
2011.12.17 15:55:23 TestMLEngine (EURUSD,H1) Não é possível encontrar 'mlxGetSizeOfName' em 'LibMlEngine.dll'
2011.12.17 15:55:23 TestMLEngine (EURUSD,H1) Não é possível encontrar 'mlxGetLogical' em 'LibMlEngine.dll'
2011.12.17 15:55:23 TestMLEngine (EURUSD,H1) Não é possível encontrar 'mlxGetInt' em 'LibMlEngine.dll'
2011.12.17 15:55:23 TestMLEngine (EURUSD,H1) Não é possível encontrar 'mlxGetDouble' em 'LibMlEngine.dll'
2011.12.17 15:55:23 TestMLEngine (EURUSD,H1) Não é possível encontrar 'mlxInputLogical' em 'LibMlEngine.dll'
2011.12.17 15:55:23 TestMLEngine (EURUSD,H1) Não é possível encontrar 'mlxInputInt' em 'LibMlEngine.dll'
2011.12.17 15:55:23 TestMLEngine (EURUSD,H1) Não é possível encontrar 'mlxInputDouble' em 'LibMlEngine.dll'
2011.12.17 15:55:23 TestMLEngine (EURUSD,H1) Não é possível encontrar 'mlxInputChar' em 'LibMlEngine.dll'
2011.12.17 15:55:23 TestMLEngine (EURUSD,H1) Não é possível encontrar 'mlxOpen' em 'LibMlEngine.dll'
2011.12.17 15:55:23 TestMLEngine (EURUSD,H1) Não é possível encontrar 'mlxClose' em 'LibMlEngine.dll'
Em algum lugar do fórum, descobri que isso se deve à falta de dlls. Com a ajuda do depends.exe, descobri o que estava faltando, coloquei-o na mesma pasta, o que ajudou, mas não totalmente:
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).
e a lista continua com "Cannot find...". Você pode me dizer qual é o problema? Já estou lutando há uma semana...
Sim, tenho o Win7 + Matlab R2011a + VS201.
Quando instalei o Matlab, o caminho do sistema era apenas "C:\Program Files\MATLAB\R2011b\bin". Eu adicionei "C:\Program Files\MATLAB\R2011b\bin\win32". As Dlls do diretório Matlab ficaram visíveis e o Matlab Engine foi iniciado. Antes disso, escrevi que não conseguia ver as dlls.
Bom dia) Estou com outro problema - por algum motivo, o catálogo "Borland" não é encontrado na pasta <MATLAB>\extern\lib\win32\, embora o Borland C++ Builder 6 esteja instalado. Dessa forma, os arquivos libeng.lib e libmx.lib também não podem ser conectados ao projeto. Far fornece o seguinte no comando "implib libeng libeng.lib libeng.dll":
)
E a pasta Borland não estava lá e ainda não está... Alguém pode me dizer como lidar com esse problema? Ou, pelo menos, como lançar esses dois arquivos?:-)
Em geral, por favor, me ajude, pois não entendo algo....
Para a pureza do experimento, instalei o VMware, onde instalei 2 sistemas - XP e 7.
Em seguida, instalei o Matlab R2011b, instalei o MCR, instalei a versão mais recente do MT5. A partir do arquivo anexado ao artigo, todos os arquivos foram espalhados em pastas, conforme escrito nas instruções do arquivo. Compilei os arquivos mq5 em ex5 (ou seja, excluí os arquivos ex5 existentes no arquivo e coloquei os recém-compilados em seu lugar). Iniciei o MT5, iniciei o Matlab (tentei não iniciá-lo - o resultado é o mesmo), no terminal, cliquei em TestMlEngine e ele me deu:
TestMLEngine (EURUSD,H1) 13:44:58 Não é possível abrir 'C:\Users\User\AppData\Roaming\MetaQuotes\Terminal\DEA4AAFB99C996D79821EC8BDBADDC3C\MQL5\Libraries\LibMlEngine.dll' (126)
TestMLEngine (EURUSD,H1) 13:44:58 Não é possível encontrar 'mlxClose' em 'LibMlEngine.dll'
TestMLEngine (EURUSD,H1) 13:44:58 Não é possível encontrar 'mlxOpen' em 'LibMlEngine.dll'
TestMLEngine (EURUSD,H1) 13:44:58 Não é possível encontrar 'mlxInputChar' em 'LibMlEngine.dll'
TestMLEngine (EURUSD,H1) 13:44:58 Não é possível encontrar 'mlxInputDouble' em 'LibMlEngine.dll'
TestMLEngine (EURUSD,H1) 13:44:58 Não é possível encontrar 'mlxInputInt' em 'LibMlEngine.dll'
TestMLEngine (EURUSD,H1) 13:44:58 Não é possível encontrar 'mlxInputLogical' em 'LibMlEngine.dll'
TestMLEngine (EURUSD,H1) 13:44:58 Não é possível encontrar 'mlxGetDouble' em 'LibMlEngine.dll'
TestMLEngine (EURUSD,H1) 13:44:58 Não é possível encontrar 'mlxGetInt' em 'LibMlEngine.dll'
TestMLEngine (EURUSD,H1) 13:44:58 Não é possível encontrar 'mlxGetLogical' em 'LibMlEngine.dll'
TestMLEngine (EURUSD,H1) 13:44:58 Não é possível encontrar 'mlxGetSizeOfName' em 'LibMlEngine.dll'.
Não sei o que fazer. Tentei tudo o que pude. Experimentei a DLL do artigo "Como escrever uma biblioteca DLL para MQL5 e trocar dados em 10 minutos?(https://www.mql5.com/ru/articles/18)- ela funciona sem problemas.
Alguém pode me dizer de que outra forma posso acessá-la? O que estou fazendo de errado?
Desde já agradeço.
- 2010.01.27
- MetaQuotes Software Corp.
- www.mql5.com
Quando instalei o Matlab, o caminho do sistema era apenas "C:C:\Program Files\MATLAB\R2011b\bin". Adicionei "C:\Program Files\MATLAB\R2011b\bin\win32". As Dlls do diretório Matlab ficaram visíveis e o Matlab Engine foi iniciado. Antes disso, escrevi que não conseguia ver as dlls.
Se você se refere à variável de ambiente Path, adicionei "C:\Program Files\MATLAB\R2011b\bin\win32" a ela, mas a situação não mudou :-(
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso
Novo artigo Interação entre o MetaTrader 5 e MATLAB foi publicado:
Este artigo cobre os detalhes da interação entre o MetaTrader 5 e o pacote matemático MatLab. Ele mostra o mecanismo da conversão de dados, o processo de desenvolvimento de uma biblioteca universal para interagir com o desktop MatLab. Ele também cobre o uso do DLL gerado pelo ambiente MatLab. Este artigo é destinado a leitores experientes que conhecem C++ e MQL5.
Autor: Andrey Emelyanov