Discussão do artigo "Como exportar cotações do MetaTrader5 para aplicações .NET usando serviços WCF"

 

Novo artigo Como exportar cotações do MetaTrader5 para aplicações .NET usando serviços WCF foi publicado:

Quer organizar a exportação de cotas do MetaTrader 5 para sua própria aplicação? A junção MQL5-DLL permite criar essas soluções! Este artigo mostrará a você um dos meios de exportação de cotas do MetaTrader 5 para aplicações escritas no .NET. Para mim, é mais interessante, racional e fácil implementar a exportação de cotas usando esta mesma plataforma. Infelizmente, a versão 5 ainda não suporta .NET, então, como antigamente, usaremos o win32 dll com suporte .NET como intercamada.

Autor: Alexander

 

Muito bem! Não posso dizer mais nada. Infelizmente, a conexão MQL5 - .NET ainda requer um intermediário, o que torna toda a construção muito complicada.

 
Itso:

Infelizmente, a comunicação MQL5 - .NET ainda requer um intermediário, o que torna toda a construção muito complicada.

Eu concordo. A propósito, para interações simples, existe uma coisa ótima - Inverse P/Invoke - interação sem intermediários.

Também tentei usar o ILMerge para mesclar todos os três assemblies no QExportWrapper.dll - não funcionou, ou melhor, funcionou, mas após a mesclagem do mql5 ele não vê as funções exportadas

 

Hi!

Copiei seus arquivos de origem e os recompilei para execução.

Mas tive um travamento do MT5.

Como posso depurar / solucionar esse problema?

Obrigado!

 

1. Primeiro, tente usar os arquivos compilados, localizados no arquivo bin.rar

Por exemplo, o diretório do terminal do cliente MetaTrader5 é "C:\Program Files\MetaTrader 5\"

Vamos criar uma nova pasta para o expert QExporter.mq5, por exemplo,"QE", na pasta "C:\Program Files\MetaTrader 5\MQL5\Experts\"

C:\Program Files\MetaTrader 5\MQL5\Experts\QE\QExporter.mq5 (1615 bytes)
C:\Program Files\MetaTrader 5\MQL5\Experts\QE\QService.mqh (4380 bytes)

C:\Program Files\MetaTrader 5\MQL5\Libraries\QExport.dll (5632 bytes)
C:\Program Files\MetaTrader 5\MQL5\Libraries\QExport.Service.dll (7168 bytes)
C:\Program Files\MetaTrader 5\MQL5\Libraries\QExportWrapper.dll (27648 bytes)

C:\Program Files\MetaTrader 5\WindowsClient\QExport.Client.dll (6656 bytes)
C:\Program Files\MetaTrader 5\WindowsClient\QExport.dll (5632 bytes)
C:\Program Files\MetaTrader 5\WindowsClient\WindowsClient.exe (12288 bytes)

Então, após a compilação do QExporter.mq5, o arquivo compilado QExporter.ex5 aparecerá no diretório:

C:\Program Files\MetaTrader 5\MQL5\Experts\QE\QExporter.ex5 (6706 bytes)

Depois de anexá-lo ao gráfico EURUSD,H1 e executar o WindowsClient.exe, obtive a seguinte imagem:

Eu o testei no buld 249 (18 de fevereiro).

 
sgfxtrader:

Copiei seus arquivos de origem e os recompilei para execução.

Mas tive um travamento do MT5.

Como posso depurar / solucionar esse problema?

Olá,

Em primeiro lugar, eu tentaria depurar os códigos-fonte do MT5 para encontrar a função que causa o erro - configure pontos de interrupção antes da chamada de todas as funções da dll. Infelizmente, não consegui anexar a dll ao terminal.exe para depuração porque o terminal travou. Talvez em novas versões seja possível

Também gostaria de saber qual sistema operacional você usa. Eu tenho um sistema operacional de 32 bits e, portanto, não pude verificá-lo em sistemas de 64 bits.

E você já tentou executar arquivos compilados?

E mais uma coisa, tente executar o ConsoleService e o ConsoleClient na solução. Talvez o problema não esteja relacionado ao mql ou à biblioteca wrapper.

Por fim, suponho que você tenha se esquecido de criar (ou copiar) o arquivo terminal.exe.config. Tente fazer isso.

 

Essa é uma boa notícia, pois a MQL5 pode usar a wrap dll do NET.

Por que o Mql4 não pode usar esse modo para se comunicar com a DLL envolvida do Net?

 
DxdCn posted # :

Essa é uma boa notícia, pois a MQL5 pode usar a wrap dll do NET.

Por que o Mql4 não pode usar esse modo para se comunicar com a DLL envolvida do Net?

É possível usar a dll híbrida no mt4, o problema é que o mql4 não tem estruturas. Mas isso não é um grande problema, você pode passar alguns parâmetros em vez de uma estrutura.
 
sgfxtrader:

Hi!

Copiei seus arquivos de origem e os recompilei para execução.

Mas tive um travamento do MT5.

Como posso depurar / solucionar esse problema?

Obrigado!


Estou com o mesmo problema.

2010.07.27 12:11:09 Especialistas Falha na inicialização do QExporter(EURUSD,H1)

 

Muito obrigado pelo exemplo postado. Há uma semana (à noite) estou lutando para criar uma biblioteca para troca de dados entre o.net e o mql5.

Não sou bom em C++ e essa postagem foi muito útil para mim.

Só há um problema. Após a compilação em x64, a inicialização do serviço apresenta um erro.

ExportService^ service = gcnew ExportService(serverName); // <- ServiceManaged.cpp 

O processo simplesmente "sai" sem nenhuma explicação.

Como posso enviar esse erro para o log para análise posterior? Ou talvez você já tenha se deparado com esse problema e haja uma solução ????.

 

Consegui fazer com que isso funcionasse com o MT5 de 32 bits e, depois de recompilar para x64, consegui fazer com que funcionasse com o MT5 de 64 bits....no entanto, quando tento executar o EA no testador de estratégias, ambos travam espetacularmente.

Gostaria de usá-lo para exportar alguns dados de preços e indicadores para uma tabela de banco de dados, a fim de fazer algumas análises com software externo...... Alguma ideia do que poderia estar causando esse travamento? Este é o mais próximo que cheguei de uma solução funcional até agora.


Joe