Cursos Para Traders Estratégias Trader Guia Definitivo: Topos e Fundos Automáticos no MQL5

Guia Definitivo: Topos e Fundos Automáticos no MQL5

Quem já tentou programar um robô para “comprar no fundo e vender no topo” sabe que o conceito é trivial, mas a implementação em MQL5 vira pesadelo rápido. O ZigZag padrão repinta. O Fractals atrasa três barras. E qualquer loop ingênuo varrendo `High[i]` e `Low[i]` explode o processamento em backtests longos. O objetivo real não é achar o ponto matemático perfeito, mas detectar a estrutura de mercado antes que a vela feche — ou pelo menos no open da próxima — sem consumir 100% do CPU do VPS.

Existe um atalho pragmático que quase ninguém ensina nos cursos: não calcule topos e fundos isolados. Calcule a estrutura de swing (HH, HL, LH, LL) usando buffers duplos e validação de quebra de estrutura (BOS/CHOCH). Isso transforma o problema de “encontrar um número” em “rastrear um estado”. O código resultante roda em `OnCalculate` com complexidade O(1) por tick, pois você só atualiza o último swing ativo e confirma o anterior quando a quebra ocorre.

O segredo está na validação, não na detecção

Todo indicador acha topos. Poucos filtram ruído. O pulo do gato em MQL5 é usar `CopyBuffer` de um ATR ou desvio padrão para definir a “perna mínima” dinamicamente. Se o mercado lateraliza, seu filtro alarga sozinho. Se explode volatilidade, ele aperta. Isso evita o paramêtro mágico `Depth=12` que funciona no EURUSD H1 mas falha no WINJ25 M5.

  • Buffer 0: Preço do swing high/low confirmado.
  • Buffer 1: Timestamp da confirmação (essencial para alinhar com `TimeCurrent()`).
  • Buffer 2: Direção do swing atual (1 = alta, -1 = baixa, 0 = indefinido).

Com essa estrutura, você escreve a lógica de entrada uma única vez. O robô pergunta: “O buffer 2 virou 1 e o preço rompeu o buffer 0 anterior?”. Simples, testável e depurável no Strategy Tester visual.

Onde a abordagem falha (e como contornar)

Gaps de abertura. Notícias de alto impacto. Na madrugada de domingo para segunda, o “fundo” detectado às 18h de sexta pode ser lixo absoluto. A solução não é mais código, é filtro de sessão. Desligue a detecção 15 min antes e 30 min depois de eventos “Vermelhos” no calendário econômico. Use `CalendarValueLast` nativo do MQL5 para automatizar isso. Não tente programar “inteligência” para interpretar notícias; programe “covardia” para sair do caminho delas.

Ponto contra-intuitivo: O melhor código MQL5 para topos/fundos não usa `iHigh`/`iLow` em loops. Usa `CopyRates` uma vez, joga num `double[]` local e processa tudo em memória bruta. O ganho de velocidade é de 10x a 50x em testes de 10 anos.

Quer ver a estrutura de classes pronta (SwingTracker.mqh) que implementa isso com herança para Multi-Timeframe? Está no repositório de utilitários. Copie, compile, herde no seu Expert e pare de reinventar a roda quadrada.

Configuração inicial do ambiente

Antes de rodar qualquer identificador automático, o terminal precisa estar “limpo”. Abra o MetaEditor. Crie um Include dedicado (ex: SwingPoints.mqh). Não misture lógica de cálculo com execução de ordens no mesmo arquivo. Separação de responsabilidades evita dor de cabeça no debug.

Defina as entradas externas (input) logo no topo:

  • Profundidade (Depth): Quantas velas para confirmar o pivô. Padrão 5 a 12.
  • Desvio (Deviation): Filtro de ruído em pontos. Essencial em ativos de alta volatilidade.
  • Backstep: Quantas velas recuar para validar o extremo.

Dica: Use input group "Filtros de Ruído" para organizar o painel de inputs no Strategy Tester. Visualização conta na otimização.

Módulos prioritários: ZigZag vs. Fractais

Dois caminhos nativos. ZigZag (via iZigZag) conecta topos/fundos significativos. É visual, mas “repinta” o último segmento. Fractais (Bill Williams) são rígidos: 5 barras, centro mais alto/baixo. Não repintam, mas geram muito ruído lateral.

A solução profissional? Híbrida. Use Fractais como gatilho bruto e ZigZag como validador de estrutura. Código limpo chama CopyBuffer de ambos, alinha índices por tempo (iTime) e cruza referências.

Workflow operacional: Da detecção ao sinal

Não complique o OnTick. Use OnCalculate se for indicador. O fluxo ideal:

  1. Atualizar buffers de Fractal e ZigZag.
  2. Varredura reversa (do presente para o passado) buscando último topo/fundo confirmado (ZigZag não nulo + Fractal válido).
  3. Armazenar preço, tempo e índice da barra em struct SwingPoint.
  4. Disparar EventChartCustom para o EA consumidor. Desacoplamento total.
ComponenteResponsabilidadeFrequência
Indicador SwingDetecta & Valida Topos/FundosOnCalculate (Tick)
EA EstratégiaConsome Evento & Decide EntradaOnChartEvent
Painel VisualDesenha Linhas / AlertasOnTimer (1s)

Checklist operacional antes de ir ao vivo

  • [ ] Testar em Dados Reais (Tick Data Suite), não apenas 1M modelado.
  • [ ] Verificar latência: GetMicrosecondCount() no loop de varredura < 5ms.
  • [ ] Confirmar alinhamento de Timeframes múltiplos (HTF define estrutura, LTF gatilho).
  • [ ] Validar comportamento em gaps de abertura (Forex domingo/segunda, Bovespa leilão).
  • [ ] Logar todo novo Swing detectado em arquivo CSV para auditoria posterior.

Erros comuns que quebram a automação

O clássico: confiar no buffer 0 do ZigZag no OnTick atual. Ele é zero até o pivô confirmar. Você está operando “fantasmas”. Outro: ignorar SERIES_LASTBAR_DATE para sincronizar velas entre TFs. Velas desalinhadas geram sinais falsos em cruzamentos de médias móveis aplicadas sobre os swings.

Alerta: Otimizar Depth/Deviation no Strategy Tester usando “Genetic Algorithm” costuma overfittar ruído. Prefira Walk Forward Analysis janelado (ex: 6 meses treino / 1 mês teste). Robustez > Lucro no backtest.

Roadmap de evolução do módulo

Semana 1: Indicador standalone desenhando setas nos Fractais validados por ZigZag. Zero trading.
Semana 2: Estrutura SwingPoint + Evento customizado. EA “Dummy” apenas printa no log.
Semana 3: Filtro de contexto: só aceita topo se Close < MA200 (tendência baixa).
Semana 4: Gestão de risco baseada na amplitude do swing detectado (Risk = % * Amplitude).

Entregue valor incremental. Um bloco que funciona sozinho vale mais que um sistema “completo” que não compila.

Veredito: ferramenta cirúrgica, não varinha mágica

Este material serve para quem já entende que estrutura de mercado não se resume a setas coloridas. Se você espera que o indicador ligue o “modo automático” e devolva lucro enquanto dorme, feche a aba. A proposta é técnica: entregar pontos de referência matemáticos — topos e fundos — baseados em critérios objetivos programados em MQL5. Nada de subjetividade visual. Isso elimina o viés do “acho que ali é um topo”. Substitui por “o código confirmou topo aqui”. Diferença brutal.

Perfil de compatibilidade real

  • Quem aproveita: Desenvolvedores de EAs, traders sistemáticos, quant discretos que precisam de anchors confiáveis para entradas, saídas ou trailing stops.
  • Quem sofre: Iniciantes puros, fãs de “price action limpo” sem código, quem não sabe compilar um arquivo .mq5 ou não entende o que é um buffer de indicador.

Não há dashboard bonito. Não há alerta no Telegram nativo. Há dados brutos. Você decide o que fazer com eles. Isso assusta amador. Atrai profissional.

Limitações que a documentação não grita

O algoritmo identifica pivôs *após* a confirmação. Atraso inerente. Em mercados laterais voláteis, o ruído gera sinais falsos em série. Filtro de ATR ajuda? Ajuda. Resolve? Não. Em gaps de abertura ou notícias de alto impacto, a estrutura quebra. O código não lê noticiário. Ele lê preço. Se o preço mente, o indicador repete a mentira.

Outro ponto: performance em MQL5 nativo é excelente. Mas se você enfiar isso dentro de um backtest de 10 anos em todos os pares com timeframe M1, o terminal vai travar. Otimização não é mágica. Teste em amostras representativas. Não em tudo.

“O indicador mostra onde o mercado *foi*. Sua estratégia decide para onde *vai*.”

Checklist final antes de compilar

  • Entende buffers iCustom ou CopyBuffer? Sim → prossiga.
  • Sabe diferenciar pullback de reversão de tendência? Sim → prossiga.
  • Tem gestão de risco matemática (R:R, position sizing)? Sim → prossiga.
  • Quer apenas “saber onde comprar”? Pare. Estude mais.

FAQ contextual (o que ninguém pergunta, mas deveria)

Funciona em cripto 24/7? Funciona. Mas sessões de baixa liquidez (madrugada UTC) geram estruturas frágeis. Filtro de volume ou sessão é obrigatório.

Repinta? Não repinta *após* fechamento do candle sinalizador. Durante a formação do candle, o pivô pode aparecer e desaparecer. Isso é feature, não bug. Não opere candle aberto.

Dá para usar no Strategy Tester visual? Dá. Arrasta pro gráfico no modo visual. Os buffers aparecem. Útil para validação ocular rápida.

Parecer editorial

Código limpo. Lógica sólida. Documentação técnica enxuta — do jeito que dev deve ser. Não é produto de prateleira. É bloco de construção. Valor real está em como você integra: breakout de topo anterior? Pullback em fundo confirmado? Trailing baseado no último pivô válido? As possibilidades escalam com sua competência.

Se você programa, vale o download. Se não programa, contrata quem programa. Tentar “aprender na marra” com esse tipo de ferramenta costuma gerar prejuízo didático caro.

Acessar página oficial do projeto

Deixe uma resposta

Related Post