Deep Learning: integração MT5 com TensorFlow - página 2

 
ipsec:

Olá Jonathan,

Mas como você chama as funções de dentro de um EA ou de um Service?

Por exemplo:

Meu script pyprint.py contem:

def pyname(name):

  return "Python print " + name

Eu gostaria de chamar de dentro do meu EA assim (dentro do OnInit por exemplo):

string name = "ipsec";

pyname(name);

E ele me retornar o "Python print ipsec".

Se fosse dentro de um service seria melhor ainda.

Obrigado.

Boa noite,

Então, eu ainda não achei uma maneira de fazer isso, mas se descobrir eu falo aqui.

Sei que via script MQL é possivel se comunicar com um EA usando variaveis globais, mas minha intenção é rodar um python como vc descreveu.

Estou vasculhando os fóruns Russos se houver resposta pra isso vai estar por aquelas bandas, rsrsrrs....
Eu estou bem atarefado e meio atrapalhado nas ultimas semanas, assim que me organizar volto a minhas pesquisas. Acredito que haja uma maneira de fazer isso.


Att,

Jonathan

 

Bom dia.... excelente thread.

Muito obrigado.

Estou pesquisando e desenhando uma solução para CopyTrade (Master - MultiSlaves).

Vocês estão trabalhando com vossas soluções de Client/Server (Python - MQL5) na mesma máquina, LAN ou acesso remoto?

Um abraço e sucesso.

 

Jonathan,

Muito obrigado por essa preciosa dica.

Isso torna desnecessário abrir um gráfico inútil a mais só pra hospedar o script python.

Vou experimentar.

 
Jose Siqueira:

Bom dia.... excelente thread.

Muito obrigado.

Estou pesquisando e desenhando uma solução para CopyTrade (Master - MultiSlaves).

Vocês estão trabalhando com vossas soluções de Client/Server (Python - MQL5) na mesma máquina, LAN ou acesso remoto?

Um abraço e sucesso.

Oi José Siqueira,

Eu uso na mesma máquina. Nunca cheguei a testar via LAN ou internet, mas acredito que também funcione.

 
Trader_Patinhas:

Oi ipsec,

Vou te deixar dois links que me ajudaram a chegar na minha implementação atual, usando named pipes sem nenhuma DLL:

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

https://stackoverflow.com/questions/48542644/python-and-windows-named-pipes

O primeiro constrói um exemplo de um cliente MQL5 falando via named pipes com um servidor em C++.

O segundo mostra um exemplo com cliente e servidor ambos em Python.

Bastam algumas pequenas "costuras" pra vc fazer o cliente MQL5 do primeiro exemplo falar com o servidor Python do segundo exemplo.

Obs: até onde estudei, parece que não há jeito de fazer o MQL5 ser o lado "servidor" do named pipe (sem DLL). O lado MQL5 tem que ser o ciente e o lado Python tem que ser o servidor.

Quanto ao Tensorflow, basta fazer como o @Jonathan_Pereira falou acima: salva o teu script python que usa o TensorFlow lá na pasta de scripts, pra que ele apareça no menu do terminal e depois executa ele num gráfico, do mesmo jeito que vc faz com um script MQL5.

Abraços

Boa noite pessoal,


Estou trabalhando na integração de um modelo de DL com tensorflow também, testei sockets, mas não atende por não funcionar no strategy tester, estou tentando seguir esse guia do @Trader_Patinhas , mas sem muito sucesso, criei o server side em python porém a mensagem não está chegando no metatrader, aparentemente os dois lados conectam no pipe, mas a mensagem não chega no metatrader. Agradeço qualquer ajuda ! Se tiver progresso posto aqui também.


Abraços, 

 
Fabio_bz #:

Boa noite pessoal,


Estou trabalhando na integração de um modelo de DL com tensorflow também, testei sockets, mas não atende por não funcionar no strategy tester, estou tentando seguir esse guia do @Trader_Patinhas , mas sem muito sucesso, criei o server side em python porém a mensagem não está chegando no metatrader, aparentemente os dois lados conectam no pipe, mas a mensagem não chega no metatrader. Agradeço qualquer ajuda ! Se tiver progresso posto aqui também.


Abraços, 

Estou engatinhando em tudo Isso..resisti ao máximo para não sair do mql5... Usando as bibliotecas alglib...até achei uma sequência de artigos bastante promissoras..más não tem como comparar a velocidade..facilidade com tensorflow/pandas para Gerar modelos. Então a ideia é essa ..deixar o Meta só para rotear dados e gerenciamento das ordens. 

Socket e bem simples de implementar mas não funciona no testador de estratégia..

Minha dúvida..via a alternativa de namedpipe? É possível usar o módulo de teste para uma visão "prática" do modelo sem precisar rodar em ticks reais?
 
E aí Srs.! Depois de um tempo lendo, relendo e implementando, resolvo postar aqui o que eu já consegui. Talvez vcs já tenham conseguido também. Mas eu usei a comunicação com socket através de muito tempo de busca, no caso uma mensageria para a arquitetura que montei. Cache e rodando no python. Faço os testes, sem ser o otimizador de estratégia do mt5, mas se for para validar se o modelo do tensorflow deu certo, consigo testar sim a estratégia. Eu ainda tenho a necessidade de ter o gráfico aberto e vou tentar, depois que li os seus comentários, que conseguimos deixar funcionando sem ter o gráfico aberto. Mas, tudo que vocês fizeram, achoq eu conseguiram, eu também consegui. Bora marcar uma call aí com toda essa galera e compartilhar pra gente se conhecer e se ajudar! 
 

Boa Tarde pessoal, 

Thread incrivel está ! Também tenho trabalhado com DL porém voltado a previsão de tendencia diária das ações, é muito legal ver como podemos crescer juntos em nossas implementações, seria muito legal um call algum dia ou grupo no wpp oara trocarmos ideias e soluções.

 
Boa noite. 

Voltei aqui pra dar feedback.

Implemtei minha conexão via named pipe pela qual envio sinais gerados pela minha rede neural - que roda no ambiente python- e deixo o gerenciamento de lotes, envio e alterações de ordem tudo dentro do mql5. A conexão funciona inclusive no testador de estratégias. (Em modo otimizador não funciona por óbvio).

Não que não pudesse testar o desempenho da rede  via algoritmo python o que também o faço mesmo que de forma preliminar, mas o testador é muito conveniente para simular stops,  greciamento de lotes, e obter estatísticas e trades (muito completa- o que seria muito trabalhoso chegar em algo próximo.)

O pulo do gato para usar o testador é criar um sinal gatilho do mt5 (uso o time de abertura do candle) enviando-o para o python para disparar os eventos e sincronizar Index de um dataframe de 'ranges' ou de 'ticks', realizar cálculos na rede treinada retornando o sinal by/sell para o advisor.

Após implementado, todo Esforço é Gerar, treinar e avaliar desempenho dos modelos via testador.
 

Muito boa essa discussão aqui na comunidade.

Acredito que o mercado será cada vez mais complexo e somente DL poderemos conseguir obter algum resultado satisfatório.

Eu desenvolvi algumas bibliotecas com redes neurais simples, normalmente algo em torno de 10 neurônios de Input, 2 HL com 5 a 10 neurônios cada e Output com 1 ou 2 neurônios.

Deixo os weights como variáveis e treino no próprio otimizador do MT5.

Tenho conseguido resultados bem legais em contas reais.

Agora quero dar um passo a frente como auto-otimização (auto-trainning), backpropagation e deixar a NN mais complexa, mas não gostaria de sair do ambiente do MQL5.

Me parece que através do OpenCL é possível habilitar multithreading da CPU para o funcionamento do EA, e até mesmo ativação da GPU. Já que o MT5 aloca somente 1 core para cada EA.


Seria muito bom se vocês compartilhassem suas experiências aqui para ajudar toda a comunidade.


Abraço a todos.

Razão: