MQL5 EA: fundamentos de um robô no MetaTrader 5

Ú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.

Um Expert Advisor escrito em MQL5 é um pequeno aplicativo que fica sobre um gráfico dentro do MetaTrader 5 e, a cada tick, verifica se o mercado acabou de produzir a condição que você definiu como sua entrada. Se produziu, o EA envia a ordem sozinho — sem pedir permissão. Este artigo explica como um EA é construído por dentro, como ele conversa com a plataforma e com a corretora, e quando faz sentido rodar um. Não é um tutorial de programação.

O que é, de fato, um Expert Advisor em MQL5

MQL5 é uma linguagem próxima do C++ escrita especificamente para a plataforma MetaTrader 5. Um Expert Advisor é um único programa nessa linguagem, compilado para um arquivo binário .ex5 e anexado a um gráfico do mesmo jeito que um indicador. A diferença se resume a permissões: um indicador apenas desenha no gráfico, ao passo que um EA tem autorização para enviar ordens reais contra a sua conta de trading. Essa única linha no modelo de permissões da plataforma separa a exibição passiva da automação autônoma.

Em que um "EA" difere de um "robô de trading" genérico? Apenas no ecossistema. Um robô escrito em Python também é um robô — ele só vive fora do terminal, normalmente conectando-se à corretora por uma API REST ou pelo protocolo FIX. Um EA, por definição, vive dentro do MT5. Para uma visão comparativa, veja nossa seção sobre plataformas de trading e, para o panorama mais amplo da automação, a área de prática e primeiros passos.

Como um EA conversa com a plataforma — o ciclo OnInit, OnTick, OnDeinit

Todo Expert Advisor tem um ritmo de vida ditado por três eventos que a plataforma invoca em seu nome. OnInit dispara exatamente uma vez, quando o EA é anexado a um gráfico ou o terminal reinicia. É o momento em que o EA lê seus parâmetros de entrada, abre handles para quaisquer indicadores dos quais depende e sinaliza que está pronto para receber ticks.

O segundo evento é o mais importante. OnTick é invocado toda vez que uma nova cotação chega da corretora para o símbolo em que o EA está sentado. Num par líquido como EUR/USD durante a sessão de Londres, isso pode acontecer várias dezenas de vezes por segundo. Dentro de OnTick o EA decide se o preço atual atende às condições de entrada, se o stop loss precisa ser movido ou se uma posição aberta deve ser encerrada. Toda a lógica da estratégia vive nessa única função.

O terceiro evento, OnDeinit, é invocado quando o EA é removido do gráfico, o símbolo é trocado ou o MT5 é encerrado. Sua tarefa é a arrumação da casa — liberar handles de indicadores, persistir o estado, fechar arquivos de log. Estou deliberadamente pulando handlers auxiliares como OnTimer e OnTrade, porque eles não mudam o princípio. Todo EA é, no fundo, um programa de tratamento de eventos que responde àquilo que o MT5 lhe entrega.

Como um EA envia ordens — a classe CTrade

A segunda coisa que vale entender sem mergulhar na sintaxe é como um EA se comunica com a corretora. O MT5 não deixa você simplesmente "enviar uma compra" do jeito que um humano clicando na interface faz. Cada ordem é despachada como uma requisição estruturada — uma MqlTradeRequest — e o servidor responde com um resultado contendo um código que diz se a ordem passou, ou se foi rejeitada por motivos como margem insuficiente, níveis de stop inválidos ou desvio (deviation) excedido.

Preencher essas estruturas à mão é tedioso, então a MetaQuotes fornece uma classe chamada CTrade em sua biblioteca padrão, embrulhando tudo em métodos convenientes como Buy, Sell, PositionClose e OrderModify. Tópicos de fórum debatem sem fim as sutilezas — se vale usar Buy(volume, symbol) ou preencher a requisição você mesmo, como lidar com requotes, como reagir ao slippage e outros conceitos de execução em rompimentos rápidos. Para a maioria das estratégias de varejo, a CTrade é mais do que suficiente.

O Strategy Tester, ou como checar que o EA não apenas decorou a história

O Strategy Tester embutido no MT5 é uma ferramenta bem mais séria que sua prima do MT4. Ele alimenta um EA com ticks históricos (gerados a partir de barras ou ticks genuínos do servidor da MetaQuotes), roda milhares de passagens por combinações de parâmetros e produz um relatório com a curva de capital, o drawdown (rebaixamento da conta) e o profit factor.

O problema é que o mesmo tester destinado a verificar o seu trabalho tende a virar uma fábrica de ilusão. Otimizar parâmetros ao longo de toda a história quase sempre produz uma curva lisa como um barbante, e essa curva quase sempre se desfaz assim que o EA encontra dinheiro de verdade. O fenômeno tem nome — curve fitting (sobreajuste) — e é uma certeza matemática, não azar. As contramedidas estão descritas no nosso material sobre como conduzir um backtest honesto: dividir os dados em períodos in-sample e out-of-sample e, idealmente, usar a análise walk-forward por cima.

"Uma estratégia que foi lucrativa em dados históricos não será necessariamente lucrativa no futuro. Dados históricos são uma pequena amostra do universo de estados de mercado possíveis, e otimizar parâmetros contra essa amostra é exatamente o que parece — ajustar-se à amostra." — Ernest P. Chan, 2013

Quando um EA realmente ajuda, e quando atrapalha

Se faz sentido rodar um EA depende muito da estratégia. Três situações em que um EA entrega uma vantagem real: execução consistente de regras que um humano não consegue cumprir psicologicamente (pense em duzentas operações de scalping por mês), monitoramento dos mercados o tempo todo durante as sessões asiáticas, quando o resto do mundo está dormindo, e trading em que a decisão precisa ser tomada numa fração de segundo — terreno em que um humano é simplesmente lento demais.

Um EA se sai mal sempre que se exige julgamento. Operar a divulgação do Non-Farm Payrolls, decidir se a ação de preço atual é uma mudança genuína de regime ou ruído passageiro, interpretar o contexto geopolítico — quase tudo isso desqualifica um EA. A estatística de pesquisas independentes em fóruns de MQL5 é brutal: uma clara maioria dos EAs do Marketplace, apesar dos gráficos de backtest reluzentes, registra prejuízo no trading real durante o primeiro ano. Isso não é má-fé dos vendedores — um backtest bonito é barato, e uma vantagem real é rara. No Brasil, o Forex/CFD de varejo costuma ser acessado por corretoras estrangeiras, e a CVM (Comissão de Valores Mobiliários) alerta repetidamente contra intermediários não autorizados — verifique sempre o registro do regulador antes de depositar qualquer valor.

Vale a pena escrever o seu próprio EA?

Se você entende a estratégia que opera e consegue descrevê-la como regras precisas o bastante para que não reste discricionariedade, construir o seu próprio EA é o melhor investimento de tempo que você pode fazer nesse campo. De três a seis meses com a documentação MQL5, um projeto de teste simples e o Strategy Tester constroem um conhecimento que nenhum pacote de robôs comprado vai lhe dar.

A segunda razão é prática. Um EA roda o tempo todo, cinco dias por semana — mas só se a máquina em que ele vive também rodar o tempo todo. Um desktop doméstico cuja energia depende de um único cabo não basta. É por isso que um VPS cumpre um papel à parte: o mesmo EA pode produzir resultados visivelmente diferentes dependendo da latência entre o servidor da corretora e a máquina em que o EA está sentado.

O que fazer agora

  1. Baixe o MetaTrader 5 do site da sua corretora, abra uma conta demo e vá até a aba Strategy Tester. Carregue um dos EAs de exemplo embutidos (Moving Average ou MACD Sample) em EUR/USD H1, rode uma única passagem e leia o relatório resultante com atenção para ver como as métricas básicas — curva de capital, drawdown, profit factor — se comportam na prática.
  2. Abra a documentação oficial do MQL5 em mql5.com/en/docs e leia apenas três capítulos: OnInit, OnTick e a classe CTrade. Não tente escrever nada ainda — o objetivo é ver como a documentação está organizada e onde encontrar exemplos prontos quando você precisar deles.
  3. Escreva a sua estratégia como regras lógicas no formato "se X e Y, então entrar comprado com stop no nível Z". Se, depois de uma hora, as regras ainda contiverem frases como "dependendo do contexto" ou "intuitivamente", você tem uma estratégia discricionária que a automação não vai salvar — volte a estudar gestão e disciplina na área de gestão de risco antes de escrever qualquer código.
  4. Se as regras saíram inequívocas, planeje um cronograma de aprendizado: cerca de três meses de fundamentos de MQL5 a partir da documentação da MetaQuotes, mais um projeto paralelo de uma semana para construir o EA mais simples possível baseado num cruzamento de médias móveis. Esse único projeto ensina mais que dez robôs comprados.
  5. Antes de rodar qualquer coisa com dinheiro real, comprometa-se com pelo menos um mês de forward testing em demo com cotações atuais. Um backtest não substitui um forward test — o forward test expõe a latência de execução da corretora, que um backtest não enxerga.
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 — OnTick event handler · oficjalna dokumentacja zdarzenia wywoływanego na każdą kwotację www.mql5.com ↗
  2. MetaQuotes MQL5 Standard Library — CTrade class · klasa biblioteki standardowej do składania zleceń przez EA www.mql5.com ↗
  3. MetaQuotes MetaTrader 5 — Strategy Tester documentation · narzędzie do backtestowania i optymalizacji EA www.metatrader5.com ↗

Perguntas frequentes

Em que um EA em MQL5 difere de um "robô" em Python?

Do ponto de vista da lógica, em nada. Ambos se reduzem a um laço que, de tempos em tempos, verifica as condições do mercado e envia ordens. A diferença está no ecossistema. Um EA em MQL5 é filho do MetaTrader: carrega-se sobre um gráfico, usa os indicadores integrados e emprega o Strategy Tester. Um robô em Python vive fora do terminal e se conecta à corretora de forma externa — normalmente por uma API REST ou pelo protocolo FIX. O EA ganha se a sua estratégia se apoia nos indicadores do MT5 e você precisa do tester integrado. Python ganha se você quer usar bibliotecas de aprendizado de máquina, de estatística ou combinar dados de várias fontes.

Preciso saber programar para colocar um EA em funcionamento?

Para se limitar a rodar o EA de outra pessoa, não. Basta arrastar o arquivo .ex5 para o gráfico, ajustar os parâmetros e ativar o AutoTrading. A verdadeira dificuldade começa depois: sem conhecer MQL5 você não consegue verificar o que o robô realmente faz por dentro, como reage ao slippage (derrapagem de preço) ou se usa às escondidas o método Martingale. Os vendedores de EA no MQL5 Market costumam ocultar do usuário os parâmetros mais importantes. Sem a capacidade de abrir o código-fonte (e a maioria dos EAs comerciais é fechada) você está condenado a confiar às cegas. Por isso recomendo investir em aprender os fundamentos da linguagem — algumas semanas de documentação bastam para entender o que você está lendo.

Por que o Strategy Tester mostra resultados excelentes enquanto o trading real mostra prejuízo?

Porque o Strategy Tester é uma ferramenta de otimização, não de previsão. Se você vasculhar todo o histórico de dados em busca dos parâmetros que dão a melhor curva de capital, quase com certeza encontrará uma combinação que produz um resultado ótimo naquela amostra específica — mas só nela. Esse fenômeno se chama curve fitting (sobreajuste) e é uma certeza matemática. O antídoto: dividir os dados em um período de otimização (in-sample, p. ex. 2018–2022) e um período de verificação (out-of-sample, p. ex. 2023–2024), no qual você roda o EA já sem retocar parâmetros. Só um resultado coerente no período de validação torna plausível que você não esteja olhando para um artefato. A análise walk-forward vai um passo além — ela desloca a janela de treino e de teste ao longo de todo o histórico.

Um VPS é realmente indispensável para rodar um EA?

Para uma estratégia que reage numa fração de segundo — sim, sem discussão. Um scalper cujo EA dispara dezenas de ordens por dia perde sua vantagem toda vez que a conexão doméstica tem uma falha ou o computador entra em suspensão. Um VPS situado no mesmo data center que o servidor da corretora pode cortar a latência de cerca de cinquenta milissegundos para uns poucos. Para uma estratégia de posição que faz uma operação por semana, o VPS é um conforto, não uma exigência — um desktop doméstico com um nobreak (UPS) basta. O custo em provedores especializados em MT gira hoje em torno de 15 a 50 EUR por mês. Algumas corretoras oferecem um VPS gratuito a partir de certo limite de depósito ou de volume.

Aprofunde-se · o guia completo