Bloco 3 - Análise Técnica

O Bloco 3 corresponde à etapa em que o robô de negociação em MQL5 passa a realizar a análise técnica do mercado, transformando dados em insumos estratégicos para a tomada de decisão automatizada. Trata-se de um momento importante da construção, pois é aqui que os elementos básicos já estruturados se convertem em informações interpretadas de forma objetiva e sistemática.

Inicialmente, o robô realiza a extração de informações de candles em múltiplos períodos de tempo, o que lhe permite acompanhar a dinâmica do preço tanto em horizontes curtos quanto em prazos mais longos. Esse mapeamento multitemporal é essencial para oferecer ao algoritmo uma visão abrangente do comportamento do ativo, reduzindo vieses que poderiam ocorrer caso fosse utilizado apenas um único timeframe.

Na sequência, são inicializados e atualizados os indicadores técnicos, ferramentas fundamentais para mensurar tendências, volatilidade e força do movimento de preços. Esse processo garante que os cálculos estejam permanentemente sincronizados com as condições atuais do mercado, evitando defasagens e permitindo que os sinais gerados sejam mais precisos e consistentes.

Com os dados estruturados e os indicadores em funcionamento, o robô passa a aplicar condições específicas de análise, verificando padrões, confirmando tendências e avaliando cenários que possam representar oportunidades de compra ou venda. Tais verificações não são aleatórias, mas sim codificadas em regras objetivas, o que assegura maior disciplina e imparcialidade no processo decisório.

Dessa forma, o Bloco 3 consolida a transição do robô de um simples executor de ordens para um sistema de interpretação do mercado, capaz de filtrar informações, identificar contextos relevantes e agir com base em critérios técnicos previamente definidos pelo programador.

Estrutura:

Bloco 3. Análise Técnica
             ├── 3.1 Informacoes_Candles( )
             ├── 3.2 OnInit( )
             ├── 3.3 Atualizar_Indicadores( )
             ├── 3.4 Estrategia_1( )
             └── 3.5 Estrategia_2( )

3.1 Informacoes_Candles ( ) - Informações de Candlesticks

A função Informacoes_Candles() tem como objetivo extrair e organizar dados de candles em diferentes intervalos de tempo, permitindo que o robô de negociação em MQL5 trabalhe com uma visão abrangente do mercado. Trata-se de uma função essencial para qualquer estratégia que dependa da análise técnica, pois oferece ao algoritmo acesso direto a informações estruturadas sobre o comportamento do preço.

Entre as informações extraídas de cada candle estão elementos importantes da análise técnica, como:

  • Preço de abertura (Open): valor do ativo no início do período;

  • Preço de fechamento (Close): valor final ao término do período;

  • Máxima (High): maior valor alcançado pelo ativo durante o candle;

  • Mínima (Low): menor valor atingido no intervalo;

  • Volume: quantidade negociada naquele período.

Esses dados são obtidos de forma simultânea em múltiplos timeframes, como 1min (M1), 5min (M5), 15min (M15), 1h (H1), 4h (H4), diário (D1), mensal (W1) e até mensal (MN). Essa capacidade multitemporal é um diferencial importante, pois permite ao robô analisar tanto movimentos de curto prazo quanto tendências de médio e longo prazo. Assim, o robô pode combinar informações de diferentes horizontes para gerar sinais mais consistentes e alinhados à realidade do mercado.

Além disso, a função permite especificar quantidades diferentes de candles para cada período. Dessa forma, há possibilidade de definir, por exemplo, a coleta de 300 candles no gráfico de 1 minuto (M1) e apenas 9 candles no gráfico mensal, ajustando a profundidade da análise de acordo com a estratégia desejada.

Outro ponto relevante é o parâmetro verbose, que, quando ativado, gera relatórios detalhados no log do MetaTrader, informando quantos candles foram copiados em cada timeframe e alertando em caso de falha. Isso facilita a depuração e garante maior confiabilidade na execução da função.

Em resumo, Informacoes_candles() é uma função projetada contribuir com a análise de mercado de um robô em MQL5. Ela centraliza a coleta de informações de candles, organiza os dados em múltiplos horizontes temporais e fornece ao robô as condições necessárias para transformar essas informações em sinais de decisão.

3.2 OnInit ( ) - Inicialização

A função OnInit() é um dos eventos especiais da linguagem MQL5, utilizada no desenvolvimento de indicadores, scripts e robôs de negociação (Expert Advisors). Como o próprio nome sugere, sua função principal é realizar a etapa de inicialização do programa, sendo chamada automaticamente pelo terminal MetaTrader 5 assim que o robô ou indicador é carregado no gráfico.

No exemplo apresentado, a OnInit() é responsável por configurar e validar os indicadores de Média Móvel Simples (SMA) em diferentes períodos gráficos, que vão do M1 (1 minuto) até o MN1 (1 mês). Essa configuração multi–timeframe permite que o robô tenha uma visão ampla do mercado, cruzando informações de vários tempos gráficos.

Durante sua execução, a função OnInit() cria os handles das médias móveis através da função iMA(), atribuindo parâmetros como o ativo em análise, o período gráfico, o número de períodos da média e o preço de fechamento utilizado como base de cálculo. Após essa etapa, o programa realiza uma verificação de segurança, assegurando que todos os handles tenham sido gerados corretamente. Caso algum deles seja inválido, um alerta é emitido e a inicialização é interrompida, evitando que o robô opere de maneira incorreta. Em seguida, os arrays que armazenam os valores das médias móveis são configurados no formato de séries temporais, de modo que o índice zero corresponda sempre ao candle mais recente, o que facilita o acesso às informações e torna o processamento dos dados mais ágil.

Se todo o processo ocorre sem falhas, a função conclui sua execução imprimindo uma mensagem de sucesso e retornando o código INIT_SUCCEEDED. Dessa forma, pode-se afirmar que a OnInit() atua como a porta de entrada do robô em MQL5, pois é responsável por garantir que os recursos essenciais estejam devidamente carregados e organizados antes que qualquer lógica de negociação seja aplicada. Sua importância reside justamente em preparar o ambiente de forma estruturada, validando a integridade dos indicadores e assegurando que o sistema esteja pronto para analisar o mercado e executar estratégias de negociação com confiabilidade.

3.3 Atualizar_Indicadores( ) - Atualização de indicadores

A função Atualizar_Indicadores() desempenha um papel importante no funcionamento de um robô de negociação em MQL5, pois é responsável por atualizar, em tempo real, os valores dos indicadores técnicos previamente inicializados. Enquanto a função OnInit() cria e configura os handles das Médias Móveis em múltiplos períodos de tempo, a AtualizarIndicadores() garante que esses indicadores sejam constantemente alimentados com os dados mais recentes do mercado. Dessa forma, ela estabelece a ponte entre a configuração inicial e a análise contínua, permitindo que o robô trabalhe sempre com informações atualizadas.

No código apresentado, a função realiza a atualização das Médias Móveis Simples (SMA) em oito diferentes tempos gráficos. Essa diversidade de horizontes temporais possibilita ao robô capturar sinais de diversos prazos, ao mesmo tempo em que considera movimentos mais amplos do mercado, característicos de prazos maiores. Para isso, o comando CopyBuffer() é utilizado, extraindo os últimos doze valores calculados para cada Média Móvel e armazenando-os em seus respectivos buffers.

Um aspecto importante da função é a sua camada de verificação de segurança. Após cada tentativa de atualização, o código confere se ao menos 12 valores foram carregados corretamente. Caso contrário, uma mensagem de erro é exibida no console, informando o tempo gráfico em que houve a falha. Esse mecanismo de validação evita que o robô utilize dados incompletos ou inconsistentes, reforçando a confiabilidade das análises que serão feitas a seguir.

Ao manter os buffers sempre atualizados, a função Atualizar_Indicadores() assegura que a lógica de negociação do robô - seja ela baseada em cruzamento de médias, filtragem de tendência ou identificação de pontos de entrada e saída - opere sobre dados corretos e recentes. Assim, pode-se dizer que sua função é vital para a dinamicidade e precisão do sistema, garantindo que cada decisão tomada esteja fundamentada nas condições reais do mercado naquele exato momento.

Em resumo, enquanto a OnInit() prepara a estrutura inicial do robô, a Atualizar_Indicadores() é a engrenagem que mantém o fluxo de informações em movimento, permitindo que o sistema funcione de forma contínua, confiável e em sintonia com a dinâmica do mercado financeiro.

3.4 Estrategia_1 ( )

A função Estratégia 1, desenvolvida em MQL5, tem como fundamento a lógica da análise top down. Esse tipo de análise parte do horizonte temporal mais amplo, no qual se busca compreender a tendência principal do mercado, e vai gradualmente se aprofundando nos períodos menores, que servem para confirmar o cenário e identificar pontos de entrada mais precisos.

A execução da estratégia começa com a verificação do contexto atual de operações, garantindo que não existam posições abertas que conflitem com o Magic Number associado. Em seguida, as informações de candles são atualizadas, de modo a oferecer um retrato fiel das últimas movimentações de preços. Na sequência, o sistema obtém as cotações de compra (Ask) e venda (Bid), abortando a execução caso ocorra algum erro na leitura. Essa etapa inicial assegura que a análise só prossiga quando as condições técnicas de mercado estiverem devidamente atendidas.

No aspecto operacional, a estratégia utiliza como filtros os diferentes prazos gráficos: semanal, diário, horário, 15 minutos, 5 minutos e 1 minuto. O movimento de compra é validado apenas quando existe coerência entre todos esses níveis. No cenário semanal e diário, é exigida a confirmação de uma tendência de alta, refletida em médias móveis ascendentes e no preço atual acima da abertura do candle diário. No horizonte horário, busca-se não apenas a continuidade, mas também a aceleração do movimento, mostrando que a tendência está se fortalecendo. Os períodos de 15 e 5 minutos funcionam como validação intermediária, enquanto o gráfico de 1 minuto atua como gatilho final, confirmando tanto a força quanto o rompimento do preço em relação ao comportamento anterior.

O movimento de venda, por sua vez, adota uma leitura assimétrica. Embora exija que os prazos maiores mantenham um viés de alta, o sinal é construído sobre evidências de enfraquecimento no médio prazo e correção/reversão no curto prazo. No gráfico diário, por exemplo, a venda é considerada apenas quando o preço atual está abaixo da abertura, sinalizando perda de força compradora no intraday. No horizonte horário, procura-se a redução da aceleração ascendente, o que caracteriza um mercado em desaceleração. Já nos períodos de 15 e 5 minutos, a queda das médias móveis reforça o viés vendedor, sendo o gráfico de 1 minuto novamente responsável por confirmar o rompimento para baixo.

Além da análise multitemporal, a função incorpora mecanismos de segurança que aumentam sua rconsistência operacional. Entre eles estão a contagem de posições abertas, que evita duplicidade de ordens; o bloqueio temporário de Magic Numbers, que impede operações consecutivas sem intervalo adequado; a checagem de horários restritos, que evita entradas em momentos de maior risco; e a validação de preços de mercado, que protege contra falhas no fornecimento de dados.

Dessa forma, a Estratégia 1 representa um modelo de decisão que une consistência analítica e disciplina operacional. Sua lógica prioriza a convergência entre tendências de longo prazo e confirmações de curto prazo, respeitando ao mesmo tempo limites de segurança que reduzem riscos de execução. Trata-se, portanto, de um componente estratégico voltado à criação de sistemas automatizados mais consistentes, com uma abordagem criteriosa e alinhada à metodologia de análise top down.

3.5 Estrategia_2 ( )

A Estratégia_2() foi concebida como um bloco de construção independente dentro do Expert Advisor em MQL5. Ela utiliza um Magic Number próprio e exclusivo, o que significa que sua execução não interfere nos sinais gerados pela Estratégia_1() ou por qualquer outro módulo ativo. Essa separação garante organização e clareza na gestão das ordens, permitindo que diferentes estratégias coexistam dentro do mesmo robô sem risco de conflito.

Um dos principais diferenciais da Estratégia 2 é que ela foi pensada para ser aberta ao desenvolvimento dos usuários. Cada pessoa pode configurá-la de acordo com suas preferências, explorando médias móveis em qualquer período disponível - desde o gráfico mensal (MN1) até o gráfico de 1 minuto (M1). Além disso, é possível trabalhar diretamente com informações de candles, como preços de abertura (open), fechamento (close), máxima (high), mínima (low) e volume. Essa flexibilidade amplia as possibilidades de personalização, tornando a função uma ferramenta prática para aprendizado, experimentação e adaptação de metodologias individuais.

Embora ofereça liberdade de criação, a Estratégia_2 pode ser facilmente integrada ao mesmo raciocínio top down apresentado no modelo da Estratégia_1. Isso significa que o usuário pode organizar sua lógica de análise em forma de funil: começar avaliando os movimentos de longo prazo em prazos mais altos, como o mensal ou o semanal, descer gradualmente para períodos médios como o diário e o horário, e finalizar a decisão de entrada em prazos curtos, como 5 minutos ou 1 minuto. Dessa forma, a estratégia mantém consistência entre a tendência macro e o momento de execução micro.

Outro ponto importante é que a Estratégia_2 também pode herdar os filtros de segurança já estruturados na Estratégia_1. Entre eles, destacam-se: a contagem de posições abertas, que impede a duplicidade de ordens; o bloqueio temporário de Magic Numbers, evitando operações consecutivas sem intervalo mínimo; a checagem de horários restritos, que reduz riscos de operar em momentos de instabilidade; e a validação de preços de mercado, que protege contra falhas na transmissão de dados. Esses mecanismos aumentam a robustez e a confiabilidade da função, mesmo quando adaptada a diferentes lógicas de operação.

Em síntese, a Estratégia_2 funciona como um espaço de liberdade criativa dentro do robô. Enquanto a Estratégia_1 serve como modelo didático de aplicação de análise top down, a Estratégia 2 abre a possibilidade para que cada usuário explore suas próprias ideias, aplique indicadores conforme sua metodologia e, ao mesmo tempo, mantenha a disciplina e a segurança necessárias para negociar no mercado automatizado. Trata-se, portanto, de um recurso essencial para quem deseja aprender, experimentar e evoluir no desenvolvimento de Expert Advisors em MQL5.

Integração do Bloco 3

O Bloco 3 reúne as funções responsáveis pela Análise Técnica do Expert Advisor, formando a base lógica sobre a qual o sistema toma suas decisões. Cada função desempenha um papel específico, mas todas se integram para oferecer consistência e confiabilidade ao processo de negociação.

A função Informacoes_Candles() coleta e organiza os dados essenciais dos candles, como abertura, fechamento, máxima, mínima e volume, que servem de insumo para as demais rotinas. Em seguida, a OnInit() realiza as inicializações necessárias, garantindo que os indicadores e variáveis do bloco estejam corretamente configurados antes do início das operações.

Com isso, a função Atualizar_Indicadores() mantém atualizados os cálculos técnicos, como médias móveis e outros buffers, assegurando que a análise seja feita sempre com informações recentes do mercado. A partir desses dados, entram em ação as estratégias. A Estrategia_1() apresenta um modelo pronto, baseado na metodologia top down em múltiplos tempos gráficos, com filtros de segurança que asseguram disciplina operacional. Já a Estrategia_2() abre espaço para a personalização do usuário, permitindo que cada pessoa configure sua própria lógica com indicadores, informações de candles e filtros herdados do exemplo da Estratégia 1.

Dessa forma, o Bloco 3 funciona como um conjunto integrado de análise e decisão, no qual coleta de dados, atualização de indicadores e execução de estratégias trabalham em sinergia, oferecendo ao Robô, Expert Advisor, uma estrutura modular, flexível e confiável para a negociação automatizada.

A seguir o todo o trecho de código que compõe o Bloco 3 do nosso exemplo:

Para avançar ou retornar para revisar módulos do código, você pode utilizar os botões a seguir: