Discussão do artigo "Como trocar dados: Um DLL para o MQL5 em 10 minutos" - página 2

 
LEHayes:

...

É muito bom que você fale sobre o assunto, mas não adianta ninguém reclamar se não estiver disposto a apresentar soluções ou mesmo sugestões sobre como atingir a meta.

...

Na verdade, é bom que a pfx tenha trazido e reclamado sobre isso, e a MetaQuotes deve resolver esse problema, porque eles conhecem o MetaTrader melhor do que todos nós (aliás, Renat Fatkhullin, o autor deste artigo, também é CEO da MetaQuotes). O fato de alguém ter mencionado isso não significa que ele tenha uma solução para o problema.

E eu concordo que não faz sentido dizer"É melhor fazer chamadas pouco frequentes", quando o .dll está sendo chamado a cada tick. E é bom ouvir isso do CEO da MetaQuotes, a honestidade é boa para uma mudança nos dias de hoje.

@ pfx, parece que eles mudaram o parágrafo que você citou ...

5. Chamadas de DLL e perda de velocidade nas chamadas

Como já foi descrito acima, toda chamada de funções de DLL é envolvida em um invólucro especial para garantir a segurança.

Essa vinculação mascara o código básico, substitui a pilha, oferece suporte a acordos stdcall/cdecl e monitora exceções nas funções chamadas.

Esse trabalho inevitavelmente leva ao atraso da função de chamada.

Portanto, não é recomendável executar chamadas de função de DLL muito frequentes (centenas ou milhares de vezes por segundo) para operações pequenas.

É melhor fazer chamadas pouco frequentes.

... a esta ...

5. Envoltório de chamadas de DLL e perda de velocidade nas chamadas

Como já foi descrito acima, toda chamada de funções de DLL é envolvida em um invólucro especial para garantir a segurança. Essa associação mascara o código básico, substitui a pilha, oferece suporte a acordos stdcall/cdecl e monitora exceções dentro das funções chamadas.

Esse volume de trabalho não leva a um atraso significativo na chamada da função.

Espero que eles realmente resolvam esse problema de perda de velocidade de chamada de .dll, e não apenas alterem algum parágrafo do artigo para evitar dúvidas.

Por falar em perguntas, espero que Renat Fatkhullin responda à pergunta do pfx: " Quero dizer, sério, que tipo de declaração é essa ", pois Renat escreveu na última linha do artigo: "Obrigado por seu interesse! Estou pronto para responder a qualquer pergunta", ou pelo menos a mudança de parágrafo.

Também estamos interessados em ouvir sua resposta :).

Escreverei mais sobre isso quando tiver tempo.

 

Não sei quando Renat escreveu esse artigo, mas a Microsoft não está mais oferecendo o Visual Studio 2005. Eles estão oferecendo o Visual Studio 2010 e 2011 beta e parece que estão prestes a abandonar o 2008.

Clique aqui para o Microsoft Visual Studio 2010 e clique aqui para o 2008. O instalador é um instalador da Web, o que é irritante se você tiver uma conexão lenta com a Internet. Eles oferecem um instalador off-line como imagem ISO, mas que também contém o Visual Studio C# e o Visual Basic. Após a instalação, ambos os Studio exigem algumas atualizações que também são grandes em tamanho de MB.

Para aqueles que não gostam de instalar o Visual Studio, há outras alternativas que podem ser consultadas em https://en.wikipedia.org/wiki/Comparison_of_integrated_development_environments. Meus favoritos são o NetBeans e o Code::Block. O NetBeans é suportado pela Oracle e é a base do Oracle Solaris Studio. No entanto, o NetBeans não vem com compilador, portanto, você tem que usar o compilador Cygwin ou MinGW, o que pode ser irritante para um novato. A última versão estável do famoso DevC++ foi lançada há 7 anos, agora seu site está cheio de links mortos, parece que ninguém mais está cuidando dele, portanto, não o recomendo.

No entanto, é melhor usar o Visual Studio, pois há muitas opções com as quais você pode brincar, se souber como.

Download Overview
  • www.microsoft.com
Download free 90-day trials of Visual Studio products, free Visual Studio Express products, and additional Visual Studio software.
 
onewithzachy:

Por falar em perguntas, espero que Renat Fatkhullin queira responder à pergunta do pfx: " Quero dizer, seriamente, que tipo de declaração é essa ", porque Renat escreveu na última linha do artigo: "Obrigado por seu interesse! Estou pronto para responder a qualquer pergunta", ou pelo menos a mudança de parágrafo.
Não há desaceleração nas chamadas de DLL.
 
Alguém sabe como criar uma DLL de 64 bits ou permitir que o MQL5 carregue uma DLL de 32 bits? O MQ5 não está carregando meu script de teste porque minha DLL "não é de 64 bits". Obrigado.
 
É bom, obrigado
 

Muito bom o tutorial!

Preciso criar arquivos de referência?

 

Preciso modificar o Fann2MQl.dll (documentado em http://fann2mql.wordpress.com) porque ele não está funcionando no MT5. O motivo é que no MT5 não é possível abrir arquivos onde você quiser. Eles precisam ser abertos em dois locais padrão (para o modo avançado e o modo de teste).

Portanto, a pergunta é: qual função invocar em vez de fopen e qual arquivo de cabeçalho incluir? Porque parece que os arquivos precisam ser abertos de dentro do MT5. Qualquer tentativa de abrir um arquivo ignorando o terminal.exe (como acontece ao usar o fopen de uma dll) é automaticamente encaminhada para o diretório de instalação ou para a área de trabalho, de acordo com o modo de inicialização do terminal.exe empregado (clicando no ícone ou na linha de comando com o parâmetro /portable).

Esse encaminhamento é ainda mais bizarro, pois o nome resultante do arquivo está apenas na primeira letra do caminho para ele.

About
  • fann2mql.wordpress.com
Fann2MQL is a Neural Network processing package for MetaTrader4. It enables you to write your own Expert Adviser or Indicator taking advantage of Fast Artificial Neural Network Library. It’s very simple and efficient. You can use up to 1024 network simultaneously without recompiling it and in case you need more power it lets you perform...
 
RyanLeland:

Alguém sabe como criar uma DLL de 64 bits ou permitir que o MQL5 carregue uma DLL de 32 bits? O MQ5 não está carregando meu script de teste porque minha DLL "não é de 64 bits". Obrigado.

Isso pode ser corrigido; veja as instruções aqui: Solution Explorer -> Clique com o botão direito do mouse em Solution -> Configuration Manager -> menu suspenso Active solution platform -> selecione x64 -> clique em Close -> Rebuild Solution

Espero que isso ajude.

Boa sorte.

 

Olá,

Isso não funciona com a DLL produzida pelo Microsoft Visual Studio 2013 Express edition, veja em anexo.

Parece que ele não encontra a biblioteca MSVCR120D_APP.DLL e também há um problema com KERNEL_32.

Alguém teve um problema semelhante? Como posso contornar esse problema, por favor?

Obrigado, senhor

 

O mql5 suporta a importação de dll que inclui funções de retorno de chamada?

Por exemplo:

Há uma dll chamada tclient.dll, que inclui a função abaixo:

typedef TCLIENT_API void(*call_back)(Tick* p);

TCLIENT_API int sub_tick(CTX ctx, const char* insId, call_back f);

Então, como devo declarar e chamar o sub_tick no mql5?

#importar "tclient.dll"

//como declarar a função "sub_tick"

#importar

void ontick(Tick &ticks[])

{}

int OnInit()

{

//como chamar a função "sub_tick"?

}