Discussão do artigo "Desenvolvimento de ferramentas para análise de Price Action (Parte 36): Acesso direto do Python aos fluxos de dados de mercado do MetaTrader 5"
Aproveite ao máximo o potencial do terminal MetaTrader 5 com o ecossistema Python para análise de dados e a biblioteca cliente oficial MetaTrader 5. Neste artigo, mostramos como realizar a autenticação e armazenar diretamente ticks e barras de um minuto no formato Parquet, aplicar técnicas avançadas de engenharia de atributos com as bibliotecas ta e Prophet e treinar um modelo de gradient boosting que respeite a estrutura temporal dos dados. Em seguida, implementamos um serviço Flask leve que disponibiliza sinais de negociação em tempo real. Seja para desenvolver um sistema híbrido de trading quantitativo ou incorporar recursos de machine learning a um EA, ao final você terá um pipeline completo e confiável para negociação algorítmica orientada por dados.
Esse sistema resolveu três problemas fundamentais da negociação algorítmica:
Fragmentação dos dados. Não é mais necessário copiar e colar arquivos CSV nem lidar com fórmulas complexas em planilhas, pois o gráfico do MetaTrader 5 se comunica diretamente com o Python.
Análises defasadas. A automação da engenharia de atributos e da inferência do modelo permitiu substituir uma abordagem reativa por uma negociação proativa, baseada em dados atualizados e sinais gerados em tempo real.
Inconsistência na gestão de riscos. A incorporação de níveis de SL/TP baseados no ATR, tanto nos testes com dados históricos quanto na negociação em tempo real, garantiu que todas as operações seguissem regras ajustadas à volatilidade, preservando sua vantagem.
Entretanto, o envio de dados ao Python por meio de um EA pode introduzir latência e aumentar a complexidade do sistema. Na nova versão, o próprio Python atua como cliente do MetaTrader 5, utilizando a biblioteca MetaTrader 5 para acessar e atualizar os dados diretamente. Essa abordagem elimina a necessidade de aguardar o acionamento do temporizador do EA: o Python pode buscar dados sob demanda, armazená-los de forma eficiente no formato Parquet e executar tarefas de alto custo computacional de maneira assíncrona.
Com base nessa estrutura, nossa ferramenta aprimorada, uma solução híbrida que combina Python e MQL5, oferece recursos ainda mais avançados:
No Python, a biblioteca nativa MetaTrader 5 permite obter dados de mercado em tempo real, enquanto a engenharia avançada de atributos gera variáveis como escores z associados a picos, variações do histograma do MACD, bandas baseadas no ATR e variações da tendência estimada pelo Prophet. O sistema também conta com um pipeline de gradient boosting que respeita a estrutura temporal dos dados e realiza o retreinamento do modelo em janelas deslizantes. Todos esses recursos ficam disponíveis por meio de uma API Flask leve.
No MQL5, um EA robusto realiza consultas periódicas via REST, com lógica de novas tentativas em caso de falha. Ele também oferece um painel no gráfico com sinais, níveis de confiança e status da conexão, setas de entrada e saída, além da opção de executar ordens automaticamente, seguindo regras rigorosas de gestão de riscos.
Novo artigo Desenvolvimento de ferramentas para análise de Price Action (Parte 36): Acesso direto do Python aos fluxos de dados de mercado do MetaTrader 5 foi publicado:
Esse sistema resolveu três problemas fundamentais da negociação algorítmica:
Entretanto, o envio de dados ao Python por meio de um EA pode introduzir latência e aumentar a complexidade do sistema. Na nova versão, o próprio Python atua como cliente do MetaTrader 5, utilizando a biblioteca MetaTrader 5 para acessar e atualizar os dados diretamente. Essa abordagem elimina a necessidade de aguardar o acionamento do temporizador do EA: o Python pode buscar dados sob demanda, armazená-los de forma eficiente no formato Parquet e executar tarefas de alto custo computacional de maneira assíncrona.
Com base nessa estrutura, nossa ferramenta aprimorada, uma solução híbrida que combina Python e MQL5, oferece recursos ainda mais avançados:
Autor: Christian Benjamin