Executar script python como serviço - página 2

 
Trader_Patinhas:

Os dados do book são acessados pela função MarketBookGet(). Aparentemente não há nada parecido na integração com Python.

Mas ainda não entendi como vc consegue rodar o python desvinculado da janela gráfica. Como vc faz isso?

Vc roda fora do Metatrader? Só se for isso!

isso eu rodo no ambiente python mesmo, eu uso um ambiente virtual onde tenho as bibliotecas instaladas, lá eu rodo meu código, porem é como eu te falei, no momento que vc faz um  mt5.initialize() para coletar dados da plataforma ela automaticamente abre, inclusive se vc fecha-la antes do processo acabar vai dar falha, por isso eu digo que vira um "serviço" pois há a necessidade da plataforma estar aberta porem sem gráfico aberto.

 
Jonathan Pereira:

isso eu rodo no ambiente python mesmo, eu uso um ambiente virtual onde tenho as bibliotecas instaladas, lá eu rodo meu código, porem é como eu te falei, no momento que vc faz um  mt5.initialize() para coletar dados da plataforma ela automaticamente abre, inclusive se vc fecha-la antes do processo acabar vai dar falha, por isso eu digo que vira um "serviço" pois há a necessidade da plataforma estar aberta porem sem gráfico aberto.

Entendi. Testei seu código acima (faltou só o import do pandas) e aconteceu isso mesmo. Ele abriu o terminal sozinho. Obrigado pela dica!
 
Trader_Patinhas:
Entendi. Testei seu código acima (faltou só o import do pandas) e aconteceu isso mesmo. Ele abriu o terminal sozinho. Obrigado pela dica!

@Trader_Patinhas

https://www.mql5.com/ru/forum/306688/page35#comment_14763377

MetaTrader 5 Python User Group - как использовать Python в Метатрейдере
MetaTrader 5 Python User Group - как использовать Python в Метатрейдере
  • 2020.01.29
  • www.mql5.com
Мы готовим модуль MetaTrader 5 для Python...
 
Rapaz, o meu russo não é muito bom não, kkk! Pelo que entendi eles pretendem possibilitar a compilação de C++ gerando executável ex5 !
 
Vc já descobriu algum jeito de iniciar a execução de um script python de dentro do MQL5 ?
 
Trader_Patinhas:
Rapaz, o meu russo não é muito bom não, kkk! Pelo que entendi eles pretendem possibilitar a compilação de C++ gerando executável ex5 !
Kkkkkkkk, o meu tbm não é lá essas coisas!
Então, achei essa discussão boa. Fiquei intrigado com o tal do #module, eu entendi que seria pra chamar algum módulo que possivelmente poderia ser um Python, mas ficou mais na interpretação mesmo 😅 

Vc já descobriu algum jeito de iniciar a execução de um script python de dentro do MQL5 ?

Ainda não, mas sigo na luta. Se encontrar algo mando uma atualização.



 

O contrário também me satisfaria: iniciar um script ou EA mq5 a partir de um script python

Eu queria iniciar um conjunto de EA's e scripts Python por meio de 1 único script (este último tanto faz ser mql5 ou python).

Por enquanto, o único jeito que encontrei de fazer isso foi assim:

  1. Gravei "chart templates" (arquivos *.tpl) dos gráficos com os respectivos scripts e EA's em funcionamento, usando ChartSaveTemplate().
  2. Criei um script mq5 que abre os gráficos desejados com ChartOpen() e aplica os respectivos templates a cada um, usando ChartApplyTemplate().

Com isso eu consigo iniciar a parafernalha toda com um único duplo-clique. Funciona direitinho.

Mas essa solução me incomoda.

Primeiro porque é gambiarra demais para o meu estilo pessoal apurado de arquitetura de software, kkk!

Segundo porque é uma solução frágil: e se um dia a Metaquotes decidir alterar o layout desses arquivos *.tpl sem preservar a compatibilidade com o formato anterior?

 
Trader_Patinhas:

O contrário também me satisfaria: iniciar um script ou EA mq5 a partir de um script python

Eu queria iniciar um conjunto de EA's e scripts Python por meio de 1 único script (este último tanto faz ser mql5 ou python).

Por enquanto, o único jeito que encontrei de fazer isso foi assim:

  1. Gravei "chart templates" (arquivos *.tpl) dos gráficos com os respectivos scripts e EA's em funcionamento, usando ChartSaveTemplate().
  2. Criei um script mq5 que abre os gráficos desejados com ChartOpen() e aplica os respectivos templates a cada um, usando ChartApplyTemplate().

Com isso eu consigo iniciar a parafernalha toda com um único duplo-clique. Funciona direitinho.

Mas essa solução me incomoda.

Primeiro porque é gambiarra demais para o meu estilo pessoal apurado de arquitetura de software, kkk!

Segundo porque é uma solução frágil: e se um dia a Metaquotes decidir alterar o layout desses arquivos *.tpl sem preservar a compatibilidade com o formato anterior?

Acompanhei a discussão de vocês e eu estou no mesmo gargalo. A primeira é rodar os scripts em Python sem a plataforma estar ativa. E o segundo é Como simular o OnTick sem fazer um loop cagado no Python?

 
lbulegon:

Acompanhei a discussão de vocês e eu estou no mesmo gargalo. A primeira é rodar os scripts em Python sem a plataforma estar ativa. E o segundo é Como simular o OnTick sem fazer um loop cagado no Python?

O que seria um loop cagado??


Você pode criar um timer, a própria linguagem MQL5 dispõem de tal recurso.

Você tbm pode construir um EA que se comunica com o python mandando os novos ticks, ate ai não é uma solução zoada, na minha opinião, apenas muito cuidado para não perder ticks se a solução for fazer calculos demorados.

Fazer um EA usando socketes e ou pipes nomeados, para se comunicar com o Python, pode não ser uma solução simples de implementar e manter mas é uma ótima solução, mas se vc realmente não conseguir se virar no python, como é o caso do patinhas que usa informações de book(não disponível no python), mas de resto da pra manter tudo dentro do próprio python.

 

@Jonathan Pereira preciso de uma solução que se inicia com a formação de um gráfico atemporal chamado UniRenkoBarsType. Posteriormente, tenho a formação de 3 indicadores (sendo um deles de tape reading) para me indicar entradas e saídas.

Para que eu não precise obter os ticks no Python, por conta do que chamaram de "loop cagado" ou qualquer outro nome... kkkkk

O que preciso construir dentro do MT5 (EA, Indicador, Serviço...) para implementar a lógica do UniRenkoBarsType? (Não encontro nenhuma referência sobre Serviço!)

Qual é o "segredo" para substituir o parâmetro período dentro de um indicador nativo do MT5 pela personalização UniRenkoBarsType?

Razão: