Início > Blog > Por que EAs que usam só candles fechados não repintam

MQL5Design de EAsBacktest

Por que EAs que usam só candles fechados não repintam

Publicado: 2026-11-01Leitura: cerca de 3 min
⏱ Este artigo reflete as informações na data de publicação. Os números de desempenho dos EAs (PF, DD, retorno anual) mudam com a operação real e com a revalidação — confira os mais recentes nas páginas dos EAs. Ver os resultados mais recentes dos EAs →

Indo direto à conclusão: o sinal de um EA que decide apenas com candles fechados muda pouco porque os dados usados na decisão já pararam de se mover naquele momento. Em um candle em formação, o fechamento, a máxima e a mínima podem mudar no tick seguinte. Já os quatro preços (OHLC) de um candle fechado, em geral, não se alteram depois do fechamento.

Ainda assim, ler candles fechados não garante segurança total. Dependendo do cálculo do indicador e de como os timeframes superiores são tratados, valores do futuro podem se misturar à análise mesmo quando você acredita estar usando só candles fechados.

Por que o candle em formação é perigoso

No MQL5, o shift 0 é o candle em formação e o shift 1 é o último candle fechado. O fechamento do shift 0 é apenas "o preço de agora". Usá-lo na decisão traz os seguintes problemas:

  • A condição aparece e desaparece a cada tick, e o motivo que justificou uma entrada pode sumir depois
  • A ordem pode ser executada por um sinal momentâneo que não fica registrado no gráfico depois que o candle fecha
  • No testador, o resultado tende a variar conforme o método de geração de ticks, e se o movimento dentro do candle diferir do real, essa diferença afeta diretamente o desempenho
ItemCandle em formação (shift 0)Candle fechado (shift 1 em diante)
Valor usado na decisãoMuda até o fechamentoNormalmente não muda
Reprodutibilidade do sinalBaixaAlta
Velocidade da entradaRápidaMais lenta, pois espera o fechamento
Influência do modo de ticks do testadorA própria decisão pode mudarPouca influência na decisão (permanece na saída)

Usar o candle em formação nem sempre é um erro. Existem estratégias projetadas para capturar rompimentos de forma imediata. Nesse caso, é preciso admitir que a estratégia depende do movimento dentro do candle e dar mais peso à validação com ticks reais.

Comparação de corretoras recomendadas →

🎁 Baixar EA grátis

📧 Curso gratuito por e-mail (8 e-mails) + pacote com 13 indicadores MT5 exclusivo para inscritos

Logo após a inscrição, você recebe um link para baixar um pacote exclusivo com nossos 13 indicadores MT5: arquivos compilados (.ex5), código-fonte e um guia de instalação. Depois, 8 e-mails sobre os fundamentos do trading automatizado, como ler um backtest corretamente e como escolher a corretora (um por dia nos primeiros 5 dias e depois 7, 14 e 30 dias após a inscrição). Você também é avisado antes de cada aumento de preço das versões vendidas no MQL5 Market (preço de lançamento que sobe em etapas conforme as vendas). Neste site, nossos EAs são gratuitos com uma conta real em uma corretora parceira.

* Privacidade rigorosamente protegida. Você pode cancelar a inscrição a qualquer momento.

Projetando a confirmação do sinal

CopyRates: indique explicitamente a posição inicial e a ordem

No primeiro tick de cada novo candle, leia o candle fechado uma única vez.

datetime g_lastBar = 0;

void OnTick()
{
   datetime t = iTime(_Symbol, _Period, 0);
   if(t == 0 || t == g_lastBar) return;

   MqlRates r[];
   ArraySetAsSeries(r, true);
   if(CopyRates(_Symbol, _Period, 1, 2, r) != 2) return;

   g_lastBar = t;
   // r[0] é o último candle fechado, r[1] é o anterior a ele
}

Há três pontos principais: usar 1 como posição inicial para deixar o candle em formação fora do intervalo copiado; definir a ordem com ArraySetAsSeries; e, se a cópia falhar, não atualizar g_lastBar e tentar de novo no próximo tick. Se você esquecer de definir a ordem, o primeiro elemento do array será o candle mais antigo.

iBarShift é uma armadilha nos timeframes superiores

Ao consultar um timeframe superior, iBarShift retorna "o candle que contém aquele horário". Se você passar o horário atual, normalmente receberá o candle superior ainda em formação.

int s = iBarShift(_Symbol, PERIOD_H1, TimeCurrent(), false);
if(s < 0) return;
double closedH1 = iClose(_Symbol, PERIOD_H1, s + 1);

Para obter o candle superior já fechado, indique o candle imediatamente anterior, como no exemplo acima.

A repintura típica ocorre em indicadores que desenham, no gráfico de um timeframe menor, valores do timeframe maior. Se cada candle antigo do timeframe menor recebe o fechamento do candle superior que contém o mesmo horário, o gráfico passa a mostrar no passado um valor final que ainda não existia naquele momento. No gráfico parece que acertou, mas em tempo real não é possível tomar a mesma decisão.

Quando o quarto argumento, exact, é false, a função devolve o candle mais próximo se o candle exato não existir. Isso dificulta perceber dados faltantes, então é mais seguro conferir também o horário do candle obtido. Dados de outros símbolos ou timeframes podem demorar para atualizar, por isso confirme que o candle tem o horário esperado antes de decidir.

Evite decisão duplicada ao reiniciar

O g_lastBar do código acima volta ao valor inicial quando o EA é reiniciado. Para não avaliar de novo o mesmo candle fechado e abrir uma entrada duplicada, o projeto precisa verificar também as posições abertas e o horário da última execução.

O que o usuário pode verificar

Mesmo sem ler o código-fonte, é possível ter uma ideia razoável com estes métodos:

  1. Observar no modo visual: no modo visual do testador, veja se os horários de entrada se concentram perto do início dos candles. Se as ordens são executadas com frequência no meio do candle, o EA pode estar usando o candle em formação (a saída é outra questão).
  2. Comparar com modelagens diferentes: teste o mesmo período e as mesmas configurações com "apenas preços de abertura", "todos os ticks" e "todos os ticks com base em ticks reais". Se o número ou o horário das entradas mudar muito, suspeite de dependência do movimento dentro do candle.
  3. Registrar as setas do indicador: guarde, por captura de tela, o horário em que a seta apareceu e compare com os candles seguintes. Se a posição mudar ou a seta sumir, o indicador repinta.
  4. Perguntar a quem distribui: pergunte se a decisão usa candles fechados e como os timeframes superiores são tratados.

Tudo isso são indícios, e nenhum deles prova sozinho que "não há repintura". Se for testar indicadores, pratique o procedimento com os indicadores gratuitos e, para instalar um EA, consulte o guia de configuração de EAs.

Limites e cuidados

Decidir com candles fechados também tem desvantagens.

  • A entrada atrasa: enquanto você espera o fechamento, o preço avança e a entrada pode acontecer numa posição desfavorável. Em movimentos bruscos de alta ou de queda, essa diferença pode ser grande.
  • Custo do início do candle: em projetos que concentram ordens no primeiro tick de um novo candle, o spread alto em certos horários e os gaps de abertura podem pesar.
  • Não protege contra indicadores que olham o futuro: indicadores como o ZigZag, cuja forma muda depois, ou que precisam de candles posteriores para se confirmar, podem mudar de valor mesmo em candles fechados, dependendo da posição lida.
  • Candles fechados também variam entre corretoras: se o horário do servidor ou o feed de preços forem diferentes, os quatro preços mudam, e o mesmo EA pode decidir de outra forma em outra corretora. Também não se pode descartar que o histórico seja corrigido depois.
  • A saída acontece dentro do candle: mesmo que a decisão de entrada use o candle fechado, stop loss e take profit são executados no meio do candle. Essa parte continua dependendo da qualidade dos ticks.

E o ponto mais importante: não repintar é diferente de dar lucro. Entre os nossos EAs há os que vão bem em testes com dados históricos, mas estão no negativo no forward test em conta demo. Usar candles fechados é uma das premissas para confiar no resultado do teste, e não indica desempenho futuro. Além disso, o uso de candles fechados varia conforme o projeto de cada EA; por isso, ao escolher um EA, confirme caso a caso e avalie junto com os números do ranking de desempenho real. Reunimos as ideias sobre validação em Conhecimentos sobre EAs e MT5.

Resumo

  • O valor do candle em formação se move até o fechamento, então o sinal pode sumir ou mudar
  • Decidir com candles fechados fixa os dados de decisão e reduz a influência do método de geração de ticks
  • Em CopyRates, indique a posição inicial e a ordem, e tente de novo se a cópia falhar
  • iBarShift tende a retornar o timeframe superior ainda em formação, então desloque o shift para ler o candle fechado
  • Desenhar valores de timeframe superior e indicadores que olham o futuro são exemplos típicos de repintura
  • Candles fechados trazem atraso e custo, e não prometem lucro

📧 Curso gratuito por e-mail (8 e-mails) + pacote com 13 indicadores MT5 exclusivo para inscritos

Logo após a inscrição, você recebe um link para baixar um pacote exclusivo com nossos 13 indicadores MT5: arquivos compilados (.ex5), código-fonte e um guia de instalação. Depois, 8 e-mails sobre os fundamentos do trading automatizado, como ler um backtest corretamente e como escolher a corretora (um por dia nos primeiros 5 dias e depois 7, 14 e 30 dias após a inscrição). Você também é avisado antes de cada aumento de preço das versões vendidas no MQL5 Market (preço de lançamento que sobe em etapas conforme as vendas). Neste site, nossos EAs são gratuitos com uma conta real em uma corretora parceira.

* Privacidade rigorosamente protegida. Você pode cancelar a inscrição a qualquer momento.

Tem alguma dúvida sobre EAs ou Forex?

Você pode publicá-la no fórum de trading da Nattzy (cadastro gratuito). Dúvidas além deste artigo também são bem-vindas — configuração de EAs, escolha de corretora e mais.

Perguntar na Nattzy ↗

Comentários e perguntas