Discussão do artigo "Uma solução livre de DLL para comunicação entre os terminais MetaTrader utilizando pipes nomeados" - página 3

 
Levando em conta o fato de que o mql4/5 não tem a possibilidade de multithreading, criar um servidor no mql4/5 é como assistir a uma TV de tubo (parece funcionar, mas a sensação não é a mesma). É por isso que é melhor escrever um servidor separado e usá-lo para transferir dados entre programas mql.
 
Olá, esse produto ainda está funcionando? Caso contrário, ele pode ser atualizado para funcionar com a versão mais recente do MT5? No momento, ele está gerando uma "Violação de acesso
 

Também enfrentei erros de violação de acesso ao chamar os métodos writeTick, readTick... e assim por diante. Veja o arquivo CNamedPipes corrigido em anexo.

Também adicionei o método WriteDouble à classeCNamedPipe :

#import "kernel32.dll"
...
int WriteFile(ulong fileHandle,double &var,int bytes,int &numOfBytes,ulong overlapped);
...
#import

...

bool CNamedPipe::WriteDouble(double data)
  {
   int data_size = sizeof(data);
//--- verificar parâmetros
   if(!data || data_size<1) return(false);

//--- enviar dados
   int written;
   if(!WriteFile(hPipe,data,data_size,written,NULL) || written!=data_size)
      return(false);
//--- ok
   return(true);
  }


Nota: Para ler/gravar no lado do cliente (por exemplo, de outro terminal Metatrader), usei apenas a biblioteca FilePipe padrão MQL5. Exemplos de como usá-los podem ser baixados aqui:


https://www.mql5.com/pt/articles/503

Communicating With MetaTrader 5 Using Named Pipes Without Using DLLs
Communicating With MetaTrader 5 Using Named Pipes Without Using DLLs
  • www.mql5.com
Many developers face the same problem - how to get to the trading terminal sandbox without using unsafe DLLs. One of the easiest and safest method is to use standard Named Pipes that work as normal file operations. They allow you to organize interprocessor client-server communication between programs. Take a look at practical examples in C++ and MQL5 that include server, client, data exchange between them and performance benchmark.
Arquivos anexados:
 
trabalho fantástico
 
Já faz algum tempo que não há uma atualização aqui... Estou vendo o erro "Access Violation" quando anexo o indicador ao gráfico. Acho que não há como fazer isso funcionar.