Bot de trading — MQL5 ou Python? Uma comparação honesta e a solução híbrida

Última verificação: · Conteúdo atemporal
Aviso de risco · YMYL Este artigo tem fins exclusivamente educacionais e não constitui aconselhamento de investimento. Operar no mercado Forex envolve alto risco de perda de capital — a ESMA informa que entre 74% e 89% das contas de investidores de varejo perdem dinheiro.

Escolher uma linguagem para automatizar uma estratégia de forex raramente se resume à elegância da sintaxe. Resume-se à rapidez com que o bot chega a uma conta real e ao conforto com que ele vive ali pelos anos seguintes. MQL5 lhe dá isso de imediato, dentro da plataforma que a maioria das corretoras de varejo já oferece. Python custa algumas horas de configuração, mas em troca entrega todo o ecossistema de análise de dados, aprendizado de máquina e trabalho com múltiplas corretoras a partir de um único script. A escolha depende do que você realmente quer construir amanhã, não de qual linguagem é "melhor" no abstrato.

O que estamos de fato comparando

MQL5 é a linguagem embutida no MetaTrader 5 pela MetaQuotes, projetada especificamente para escrever Expert Advisors e indicadores personalizados. Python é uma linguagem de propósito geral que você traz para o trading através de um pacote externo — na maioria das vezes o módulo oficial `MetaTrader5` da MetaQuotes, ou a biblioteca de API de outra corretora. A comparação só faz sentido no contexto do que o bot precisa fazer. Se uma estratégia clássica de tendência ou rompimento precisa rodar em uma conta MT5 e abrir um punhado de operações por dia, MQL5 é o caminho mais curto até um resultado. Se o sinal depende de um modelo estatístico, dados macro, várias corretoras ou um mercado fora da MetaQuotes, o ecossistema do Python torna-se difícil de substituir. O contexto mais amplo está no nosso guia de primeiros passos na prática de trading automatizado, e a mecânica dos EAs vive na seção de plataformas de negociação.

Onde o MQL5 vence sem alarde

A maior vantagem isolada do MQL5 é prosaica e muitas vezes subestimada: a conexão com a corretora é gratuita. Você solta o arquivo do EA na pasta do MetaEditor, compila para `.ex5`, anexa a um gráfico e o bot negocia — sem camada de execução, sem autenticação de API, sem encanamento REST. O maduro Strategy Tester, com seu modo "cada tick baseado em ticks reais", reproduz o histórico de ticks da sua corretora ao longo de vários anos usando os spreads e comissões reais inscritos na especificação do símbolo. A comunidade MQL5.com publica milhares de indicadores e bibliotecas, então copiar um esqueleto de cruzamento de médias móveis ou um módulo de gerenciamento de risco leva minutos em vez de dias. O terminal vem com um depurador embutido, um profiler e um otimizador distribuído que usa a nuvem — nada disso exige instalações extras. Um bom ponto de partida para quem está começando são os conceitos fundamentais de trading, ao lado do passo a passo prático de backtesting no MT4 e no MT5.

Onde o Python justifica sua complexidade

A primeira vantagem são os dados. `pandas`, `numpy` e `statsmodels` são o padrão científico para séries temporais, regressão e teste estatístico — em MQL5 o mesmo cálculo vive dentro de um laço escrito à mão, uma ordem de grandeza mais lento e com mais espaço para erros aritméticos. A segunda é o aprendizado de máquina. Se um sinal precisa de uma random forest, gradient boosting ou uma pequena rede neural, `scikit-learn` e `TensorFlow` resolvem em algumas dezenas de linhas; o MQL5 simplesmente não carrega essa pilha nativamente. A terceira é o backtesting. O teste vetorizado no `vectorbt` de Oleg Polakov, ou o teste orientado a eventos no `backtrader` de Daniel Rodriguez, varre centenas de combinações de parâmetros no tempo que o Strategy Tester precisa para duas rodadas. A quarta é a abstração da corretora. Se você coloca uma fina camada de execução à frente da sua estratégia, o mesmo script consegue conversar com o MT5, com a Interactive Brokers via `ib_insync` e com casas de cripto via `ccxt`. O laço de pesquisa mais amplo e a pilha completa vivem na nossa seção de estratégias de trading.

A solução híbrida em que a maioria dos traders sérios de varejo se acomoda

Na prática, uma terceira opção acaba sendo a mais pragmática, e a menos óbvia a partir do marketing de qualquer um dos lados. Pesquisa, dados históricos e trabalho estatístico migram para o Python; a execução permanece dentro do MT5. A ponte é o pacote oficial `MetaTrader5` da MetaQuotes — instalado via `pip`, seu script se conecta ao terminal em execução, puxa barras e ticks da mesma qualidade que o EA enxerga, e envia ordens através de `order_send` e `position_close`. O ecossistema científico roda em Python enquanto a plataforma amigável à corretora e sua fazenda de VPS permanecem dentro da MetaQuotes. A alternativa, se você prefere não misturar duas camadas em tempo real, é fazer toda a pesquisa em Python e reescrever as regras validadas em MQL5 para a implantação. A escolha entre os dois modos depende de o sinal ao vivo precisar das bibliotecas do Python durante a sessão, ou apenas na fase de projeto.

"Python tornou-se uma poderosa linguagem de programação e um ecossistema para a indústria financeira — de tudo, desde analisar dados financeiros até o trading algorítmico e o gerenciamento de risco." — Yves Hilpisch, 2018

Um exemplo trabalhado — o mesmo rompimento escrito nas duas linguagens

Imagine um rompimento na abertura de Londres no EUR/USD: na primeira hora da sessão de Londres você compra quando o preço imprime acima da máxima da hora asiática anterior, vende no rompimento da mínima dela, o stop fica no ATR de vinte períodos e o take profit ao dobro do stop. Em MQL5 você escreve uma classe `CExpertAdvisor`, duas funções auxiliares para o intervalo asiático e uma única chamada `OrderSend`. O conjunto cabe em um arquivo `.mq5` de aproximadamente 250 linhas, boa parte das quais é tratamento de erros. A implantação leva cinco minutos: compilar, arrastar para o gráfico, ligar o `AutoTrading`. Em Python a mesma ideia parece diferente. Você importa `MetaTrader5`, carrega as barras em `pandas`, calcula o ATR e os níveis de rompimento em uma expressão vetorizada, e então solta a execução em um laço que consulta um novo tick a cada poucos segundos. O arquivo tem comprimento parecido, mas você também paga pelo tratamento de exceções de rede e mantém um olho nas quedas de conexão entre o Python e o terminal. Em troca você ganha um backtest gratuito no `vectorbt` sobre cinco anos de histórico — em MQL5 a mesma varredura pode levar dezenas de minutos dentro do Strategy Tester. Cada número neste exemplo é ilustrativo.

Um veredito honesto

Para um trader de varejo que roda estratégias clássicas em uma única conta MT5, com um ou dois instrumentos, MQL5 é o caminho mais curto até um resultado. Um primeiro bot escrito em MQL5 do zero chega a uma conta demo mais rápido do que um ambiente Python recém-instalado se configura num laptop novo. Para quem busca métodos estatísticos, modelos de aprendizado de máquina, fontes de dados fora da MetaQuotes ou múltiplas contas de corretoras, Python vence no longo prazo — mesmo quando as primeiras semanas parecem menos espetaculares. A solução híbrida Python mais MT5 é o padrão de trabalho para traders com um ou dois anos de prática em qualquer um dos lados, que querem pesquisa honesta sem abandonar a plataforma na qual sua conta real já roda. A pior decisão é escolher uma linguagem com base na força de um tutorial assistido pela manhã; as diferenças são reais, mas pertencem ao objetivo, não à linguagem em si. O ofício mais amplo está no workshop do trader na ForexMechanics.

O que fazer agora

  1. Escreva três frases sobre a estratégia que você de fato quer automatizar — entrada, saída, gestão da posição — e então responda a uma pergunta com honestidade: o sinal precisa de algo além das cotações da corretora (um modelo estatístico, dados macro, um sinal de outro mercado)? Se a resposta for não, comece em MQL5. Se for sim, comece em Python, mesmo que a primeira semana pareça mais lenta do que o MetaEditor.
  2. Instale o MetaEditor com a plataforma MT5 de qualquer corretora de varejo, além do Python 3.11 com os pacotes `MetaTrader5`, `pandas` e `backtrader`, e escreva o mesmo esqueleto mínimo nos dois ambientes: um EA em MQL5 que abre uma compra a mercado de 0,01 lote e a fecha após dois minutos, e um script Python fazendo a mesma coisa através de `order_send`. Esse exercício leva uma noite e revela a diferença real de sensação mais rápido do que dez horas de leitura de documentação.
  3. Rode o Strategy Tester no modo "cada tick baseado em ticks reais" sobre o seu próprio EA ao longo de dois anos de histórico, e compare o relatório com a mesma ideia reescrita em forma vetorizada no `vectorbt`. A diferença entre os dois relatórios lhe diz quanto a sua estratégia de fato perde para o spread real da corretora, e quanto era uma aproximação simpática na versão vetorizada — os dados de que você precisa para decidir qual plataforma segura a conta real.
  4. Se você decidir pela híbrida, reserve um fim de semana para conectar o pacote `MetaTrader5` como a única camada entre pesquisa e execução. O script Python gera o sinal, coloca a ordem através de `order_send` e registra cada passo em um arquivo CSV, enquanto um EA clássico em MQL5 fica em segundo plano como rede de segurança que fecha posições se o elo com o Python cair.
  5. Depois de duas semanas de trabalho na variante escolhida, responda a duas perguntas com honestidade: quanto tempo foi para brigar com a linguagem, e quanto foi para de fato melhorar a estratégia. Se a proporção pender mais de dois para um a favor de lutar com as ferramentas, a escolha está errada para o seu estágio atual e é mais saudável recuar para uma pilha mais simples do que insistir numa pilha que não serve à pesquisa.
Jarosław Wasiński
Sobre o autor

Jarosław Wasiński

Editor-chefe do MyBank.pl · Analista financeiro e de mercados

Analista e profissional independente com mais de 20 anos de experiência no setor financeiro. Fundador e editor-chefe do portal MyBank.pl, em atividade desde 2004. Análise fundamentalista dos mercados de câmbio e macroeconômicos desde 2007. Escreve a partir da perspectiva dos mercados globais, com atenção ao quadro regulatório europeu (ESMA) e brasileiro (CVM).

Fontes e bibliografia

  1. MetaQuotes MQL5 Reference — Python integration (MetaTrader5 package) · oficjalna dokumentacja pakietu MetaTrader5 dla Pythona: instalacja przez pip, połączenie z terminalem, pobieranie OHLC i tików, składanie zleceń przez order_send i zarządzanie pozycjami www.mql5.com ↗
  2. MetaQuotes MQL5 Reference — initialize() for MetaTrader 5 Python integration · oficjalna referencja funkcji initialize() inicjującej połączenie skryptu Pythona z działającym terminalem MetaTrader 5 — wymagany krok przed każdym pobraniem danych lub złożeniem zlecenia www.mql5.com ↗
  3. MetaQuotes MQL5 Reference — Order Properties (OrderSend constants) · enumeracje właściwości zleceń wykorzystywane przez OrderSend w MQL5 oraz odpowiednio przez order_send w pakiecie Pythona — typy zleceń, statusy realizacji, atrybuty wykonania www.mql5.com ↗
  4. Backtrader Backtrader Quickstart — building a strategy in Python · oficjalna ścieżka wprowadzająca event-driven backtesting w Pythonie: klasy Strategy i Cerebro, prowizja, optymalizacja parametrów i ścieżka od pomysłu do raportu www.backtrader.com ↗
  5. O'Reilly Media Yves Hilpisch — Python for Finance, 2nd Edition (2018) · kanoniczna pozycja o zastosowaniach Pythona w analityce finansowej, algorytmice i zarządzaniu ryzykiem — punkt odniesienia dla traderów decydujących się na język w długim okresie www.oreilly.com ↗

Perguntas frequentes

Preciso saber bem Python para começar?

Para o primeiro bot, não. Basta o básico — laços, listas, funções, importar bibliotecas e ler um arquivo CSV — e o pacote MetaTrader5 resolve o resto. O primeiro script que se conecta ao terminal, puxa barras e coloca uma ordem cabe em cinquenta linhas. A parte mais difícil não é a linguagem em si, mas o tratamento de exceções de rede e ficar de olho nas quedas de conexão com o terminal. O ritmo mais saudável é manter dois trilhos em paralelo em vez de esperar até "dominar Python por completo": um curso de fundamentos a uma hora por dia durante quatro a seis semanas, mais o projeto imediato que você está praticando com as cotações reais da sua corretora. A curva de aprendizado é mais suave do que sugerem as comparações de marketing, e a estratégia final raramente precisa de mais de trinta linhas de código lógico de fato.

A solução híbrida Python mais MT5 é estável em conta real?

Sim, desde que você acrescente duas camadas de segurança ausentes na versão ingênua da página do pacote. A primeira trata as quedas de conexão: o script deve repetir mt5.initialize() em um laço com alguns segundos de espera e, se a falha persistir, fechar as posições abertas através de um EA de emergência que permanece anexado ao gráfico o tempo todo. A segunda é um registro CSV para cada operação — sinal gerado, número do ticket, ordem enviada, confirmação da corretora, latência — porque sem esse registro você não consegue reconstruir o que aconteceu quando a conta real de repente diverge do backtest. Com essas duas peças no lugar, a solução híbrida roda tão estável quanto um EA clássico, dando a você ao mesmo tempo acesso a todo o ecossistema do Python durante a sessão.

O MQL5 acompanha a velocidade de execução em estratégias tick a tick?

Sim, com folga de sobra. Um EA escrito em MQL5 reage à função OnTick de forma nativa dentro do terminal MetaTrader 5, então a latência entre a chegada de um novo tick e o envio de uma ordem é medida em milissegundos isolados. O Python vive em um processo separado e conversa com o terminal através da camada entre processos do pacote MetaTrader5 — isso acrescenta de dez a várias dezenas de milissegundos em condições típicas e se torna perceptível em estratégias de scalping que disparam dezenas de ordens por dia. Para estratégias que operam no fechamento de candles H1 ou M15, a diferença é irrelevante; mas para o scalping abaixo de um minuto o MQL5 segue sendo a escolha natural, enquanto o Python convém manter na camada de pesquisa e validação, sem conectá-lo à execução em tempo real.

Como sei que chegou a hora de passar do MQL5 para o Python?

Os sinais são bastante concretos. Primeiro — você quer colocar no sinal um modelo estatístico, uma regressão ou um classificador de aprendizado de máquina, e em MQL5 se vê escrevendo a implementação que o scikit-learn resolve em três linhas. Segundo — você trabalha com dados fora da corretora (publicações macro, sentimento, calendário de eventos, sinais de outro mercado) e colá-los no MetaEditor consome mais tempo do que a própria pesquisa. Terceiro — você tem uma estratégia que deve rodar em várias contas em corretoras diferentes e não quer manter versões paralelas do mesmo EA. Quarto — você desiste cada vez mais de ideias porque o Strategy Tester não termina a varredura de parâmetros em um tempo razoável. Quando dois desses quatro sinais se acendem ao mesmo tempo, o custo de aprender Python se paga em três meses.

Aprofunde-se · o guia completo