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

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.
- No OnInit, crie o handle do indicador do tempo maior (por exemplo, iMA com PERIOD_H1) e confira se ele não é INVALID_HANDLE.
- 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.
- Copie os valores com CopyBuffer(handle, 0, 1, 1, buffer). Ela retorna a quantidade de dados copiados, ou -1 se der erro.
- Compare esse valor com o fechamento do tempo maior e defina a direção permitida.
- 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?
- Descreva sua estratégia pelo Termo de Referência do site ou pelo WhatsApp, dizendo qual tempo filtra e qual dá o gatilho.
- A Digital Master12 analisa as regras e combina com você os detalhes que faltam.
- Você recebe o indicador ou robô testado em conta demo, junto com o código-fonte.