Discussão sobre "Como escrever uma DLL para MQL5 e trocar dados em 10 minutos". - página 9

 
Renat:

Deverá melhorar o seu nível técnico.

Para programas de 64 bits, são necessárias bibliotecas de 64 bits e não há forma razoável de ligar bibliotecas de 32 bits. Para instalar a versão de 32 bits, o instalador deve ser executado com o interruptor /32

Reescreverei o artigo e acrescentarei características fixes que há muito têm sido implementadas no MetaEditor e nas plataformas MT4 e MT5. Muitos criadores não estão a par das novas características.

Obrigado Renat pela sua resposta. Hoje em dia os mercados são bastante complicados, e o comércio leva-o quase a perder a profundidade e quase não há tempo para melhorar na área técnica. Realmente não compreendo a diferença entre programas de 32-bit e 64-bit. Só posso ver que cria alguns problemas desnecessários para os utilizadores. Todos estão a conduzir algures e a Microsoft inclusive, querem ser mais rápidos e mais abruptos, mas os utilizadores só encontram problemas. Não vejo qualquer diferença na velocidade entre 64-bit e 32-bit. No entanto, o meu processador é i7-4 - a mais recente Intel, talvez por causa disto. Vejo também que a Microsoft está a comprimir C++. Até removeram a opção de trabalhar com formas C++ no último compilador. E quando eu perguntei porquê? A resposta é porque não experimenta o novo e mais perfeito C++. Por isso, se estiver a olhar para o futuro, deve também tê-lo em conta.
 
ANG3110:


E vejo que a Microsoft começou a comprimir C++. No mais recente compilador até removeram a capacidade de trabalhar com formulários em C++. E quando eu perguntei porquê? A resposta é porque não tenta o novo e melhorado C+++. Portanto, se olharmos para o futuro, devemos também tê-lo em conta.

Bem, a Microsoft é um famoso assassino tecnológico, e ultimamente tem vindo a cavar a sua própria sepultura atrás de sepultura.

Porquê interferir com ela - deixá-la cair no seu próprio buraco. É tão figurativamente, não perder tempo com pormenores técnicos. Quem quer detalhes - há milhares deles na Internet. Depois de "melhor C#" não tenho outras palavras.

 
:)
 
Colegas, como ligo as bibliotecas de MT em VS? para que o meu estúdio não sublinhe corda, datatime...
 
Renat Fatkhullin:

Deverá melhorar o seu nível técnico.

Para programas de 64 bits precisa de bibliotecas de 64 bits e não há maneira de ligar bibliotecas de 32 bits de uma forma razoável. Para instalar a versão de 32 bits é necessário executar o instalador com o interruptor /32.

Reescreverei o artigo e acrescentarei características fixes que foram implementadas há muito tempo no MetaEditor e nas plataformas MT4 e MT5. Muitos criadores não estão a par das novas funcionalidades.

Existe um exemplo para criar uma dll de 64 bits para a versão de 64 bits do terminal? E sobre "coisas fixes" é interessante saber)
 

Acabou por ser fácil!

Instalou a Comunidade Visual Studio 2015 gratuita (exactamente Comunidade, pois tem x64 de apoio, ao contrário do Express) As versões pagas também têm x64, claro, mas eu estava a olhar para as opções gratuitas. O Web Installer deu-me um erro, por isso instalei a partir da imagem ISO. Ao instalar, seleccionar instalação "Personalizada" e verificar C++ (não está instalado por defeito).

Depois fiz tudo como descrito no artigo, ou seja, criei um projecto Win32. Fez uma montagem, que o terminal x64 se recusou a aceitar (como esperado).

Depois no separador "Build" -> "Configuration Manager" mudei a plataforma para x64, (também pode mudar a "Active Solution Platform" para x64)


Construiu-o novamente. A nova dll acabou por estar na pasta \x64 (a compilação final será em x64), esse terminal x64 processado sem problemas e devolvido a seguinte saída:

19:29:01.883 dll_test (EURUSD.e,H1) Tempo 16 msec, int: -752584127 duplo: 17247836076609.0
19:29:01.883 dll_test (EURUSD.e,H1) Array: 0 1 2 3 4 5 6 7 8 9
19:29:01.883 dll_test (EURUSD.e,H1) Substituir: Um gato castanho rápido salta sobre o cão preguiçoso
19:29:01.886 dll_test (EURUSD.e,H1) Violação de acesso a 0x000007FEFB0F176F escreva para 0x00000000000000000000 em '...\MQL5\Libraries\ConsoleApplication1.dll
e descrição adicional do erro interceptado
Isto é, tudo funciona!!!

Downloads | Visual Studio
Downloads | Visual Studio
  • www.visualstudio.com
Visual Studio Community 2015 with Update 1 - Free Visual Studio Community 2015 with Update 1 is a free, fully featured, and extensible IDE for individual developers, open source projects, academic research, education, and small professional teams. Create applications for Windows, Android, and iOS as well as web applications and cloud services...
 

Nota:

Ao transferir a DLL para outro computador, recusou-se a trabalhar porque estava a utilizar componentes da própria VS. O problema é resolvido em Projecto -> Propriedades -> Usar MFC, definido para "Usar MFC na biblioteca estática". Depois disso, reconstruir e recompilar a DLL

Encontrei-o no fórum:

É possível optimizar EAs com DLLs não só no computador local, mas também numa rede local. Para o fazer em computadores de rede, adicionar /dlls chave ao registo para agentes de teste. Chamada ao editor do registo: regedit

Renat Fatkhullin:

Para agentes instalados existentes, os comandos de arranque só podem ser alterados através do registo nas filiais HKEY_LOCAL_MACHINE_SYSTEM

Basta clicar em cada parâmetro ImagePath e adicionar /dlls ao final da linha


 

Estou no processo de ligação do ZeroMQ ao MT4 via DLL.

É muito mau, de alguma forma. O terminal está sempre a cair ao iniciar o indicador ou ao descarregar. E não aparece em modo de depuração, por isso não sei o que se passa.

 

Boa tarde.

Por alguma razão, quando executo o exemplo de teste, o guião trava na primeira chamada para a função importada

2016.07.30 23:30:14.088 Scripts script mql5dll_test (EURUSD,H1) removido

O que é que estou a fazer mal?

 
EsEr:

Boa tarde.

Por alguma razão, quando executo o exemplo de teste, o guião trava na primeira chamada para a função importada

2016.07.30 23:30:14.088 Scripts script mql5dll_test (EURUSD,H1) removido

O que é que estou a fazer mal?

este artigo tem 6 anos de idade, algo deve ter mudado.

O que é o código de erro?

Razão: