← Todos os artigos

Indicador multi-timeframe no MT5: tendência no gráfico maior, gatilho no menor

Por Jackson Jordão · 24 de outubro de 2026 · 6 min

Tela com índices de mercado e gráfico de linha vermelha numa plataforma escura
Foto: Anne Nygård/Unsplash

Um indicador multi-timeframe lê a tendência num gráfico maior, como o H1, e procura o gatilho de entrada num gráfico menor, como o M5. No MetaTrader 5 isso é feito criando o indicador com um período diferente do gráfico (por exemplo, iMA com PERIOD_H1) e lendo os valores com CopyBuffer, usando sempre a barra já fechada do tempo maior.

A ideia parece simples, mas é onde mais aparecem erros: indicadores que "repintam", sinais que somem depois e backtests bonitos demais. Neste artigo você vê como a lógica funciona, quais funções do MQL5 entram e como evitar o erro que mais engana quem testa.

A ideia: tendência no maior, gatilho no menor

Muitos traders olham o gráfico de uma hora para saber o lado do mercado e só depois descem para o de cinco minutos para escolher o momento da entrada. A regra é um filtro: se a tendência do tempo maior é de alta, o gatilho do tempo menor só vale para compras.

  • Tempo maior (filtro): uma média móvel, o ADX ou a posição do preço em relação a uma região de suporte e resistência.
  • Tempo menor (gatilho): cruzamento de médias, rompimento de uma máxima, retorno ao nível de uma média ou um padrão de candle.
  • Resultado: o robô ou o indicador só sinaliza no sentido que o tempo maior permite.

Esse tipo de filtro tende a reduzir sinais contra a direção principal, mas não garante resultado. Ele muda o tipo de operação que a estratégia aceita, e só o teste com o seu ativo mostra se isso ajuda.

Como ler outro período no MQL5

As funções de indicador do MQL5 aceitam o símbolo e o período como parâmetros. Assim, num gráfico de M5, você pode criar um handle de média móvel do H1 chamando iMA com _Symbol, PERIOD_H1 e os demais parâmetros. O handle é criado uma vez, no OnInit, e liberado com IndicatorRelease no OnDeinit.

  1. No OnInit, crie o handle do indicador do tempo maior (por exemplo, iMA com PERIOD_H1) e confira se ele não é INVALID_HANDLE.
  2. Antes de usar os dados, verifique BarsCalculated(handle). Segundo a documentação do MQL5, a função retorna -1 em caso de erro, quando os dados ainda não foram calculados.
  3. Copie os valores com CopyBuffer(handle, 0, 1, 1, buffer). Ela retorna a quantidade de dados copiados, ou -1 se der erro.
  4. Compare esse valor com o fechamento do tempo maior e defina a direção permitida.
  5. No tempo do gráfico atual, aplique a regra do gatilho só na direção permitida.

Dica: Na primeira vez que o robô pede dados de um período que o terminal ainda não carregou, o CopyBuffer pode falhar ou devolver menos dados que o pedido. Trate isso: se a cópia não trouxer o que você precisa, saia do OnTick e tente de novo no tick seguinte, em vez de operar com um valor vazio.

O erro que mais engana: usar a barra que ainda está se formando

A barra atual do H1 muda a cada tick até fechar. Se o indicador usa o valor dela (posição 0), a tendência pode estar de alta num momento e de baixa dois minutos depois. No gráfico ao vivo isso gera sinais que aparecem e desaparecem. O leitor vê o resultado final já "limpo" e conclui que o indicador acertou tudo.

A solução é ler a barra fechada do tempo maior, a de índice 1. No CopyBuffer isso é o parâmetro start_pos igual a 1. O custo é um pequeno atraso na informação do tempo maior, mas o sinal deixa de mudar depois de emitido.

  • Posição 0 do tempo maior: valor provisório, muda até a barra fechar.
  • Posição 1 do tempo maior: valor definitivo, serve para filtro de robô.
  • Se o filtro usar o valor provisório, o backtest e a operação real podem se comportar de forma diferente.

Desenhando o tempo maior no gráfico menor

Se a ideia é um indicador visual, como uma linha do H1 desenhada sobre o gráfico M5, é preciso ligar cada barra do M5 à barra do H1 correspondente. A função iBarShift faz isso: ela recebe símbolo, período e horário e devolve o índice da barra. Segundo a documentação, com exact=false ela retorna a barra mais próxima, e -1 quando não encontra nenhuma.

Há um cuidado de lógica. Se a barra de M5 das 10h05 usar o H1 das 10h00, que só fecha às 11h00, o indicador estaria usando um dado que ainda não existia naquele momento. O correto é usar o H1 anterior ao que contém a barra, ou seja, a última barra do tempo maior já fechada. É a mesma regra do robô, aplicada ao desenho.

Dica: O horário de abertura da barra do tempo maior pode ser lido com iTime, e a duração de cada período em segundos com PeriodSeconds. Com os dois você confere se a barra do M5 está dentro da barra do H1 que você escolheu.

Multi-timeframe no backtest

O testador de estratégias do MetaTrader 5 também gera os outros períodos a partir dos dados do ativo, então um robô multi-timeframe pode ser testado. Para o resultado fazer sentido, valem as mesmas regras de qualquer backtest: modelo de ticks adequado, histórico completo e custos realistas. Veja o passo a passo no artigo sobre backtest, em /blog/como-fazer-backtest-metatrader-5.

Quanto mais filtros e períodos você combina, mais parâmetros o robô tem, e maior o risco de ajustar demais a estratégia ao passado. Vale ler o artigo sobre otimização sem overfitting, em /blog/otimizacao-mt5-overfitting-walk-forward, antes de ajustar os períodos.

Indicador, robô ou os dois?

Se você só quer enxergar a tendência do tempo maior enquanto opera à mão, um indicador personalizado resolve, e ele ainda pode avisar no celular quando o gatilho aparecer (veja /blog/alerta-no-celular-metatrader-5). Se quer que a decisão seja automática, o mesmo filtro entra no robô, junto com stop, tamanho de lote e limite de perda. Para entender quando faz sentido encomendar um indicador, leia /blog/indicador-personalizado-metatrader-5.

Resumo

  • Multi-timeframe é usar um tempo maior como filtro de direção e um menor como gatilho.
  • No MQL5, crie o indicador com o período desejado e leia com CopyBuffer, conferindo BarsCalculated.
  • Use a barra fechada do tempo maior (posição 1) para o sinal não mudar depois de emitido.
  • Num indicador visual, ligue as barras com iBarShift e evite usar dados do futuro.
  • Teste com histórico de qualidade e cuidado com excesso de parâmetros; nenhum filtro garante resultado.

Quer um indicador ou robô multi-timeframe no seu MetaTrader?

  1. Descreva sua estratégia pelo Termo de Referência do site ou pelo WhatsApp, dizendo qual tempo filtra e qual dá o gatilho.
  2. A Digital Master12 analisa as regras e combina com você os detalhes que faltam.
  3. Você recebe o indicador ou robô testado em conta demo, junto com o código-fonte.

Orçamento pelo WhatsApp: (84) 99652-3661

Leia também