Participe de nossa página de fãs
Coloque um link para ele, e permita que outras pessoas também o avaliem
Avalie seu funcionamento no terminal MetaTrader 5
- Visualizações:
- 18
- Avaliação:
- Publicado:
-
Precisa de um robô ou indicador baseado nesse código? Solicite-o no Freelance Ir para Freelance
O EA Hybrid Microstructure é um Expert Advisor avançado de scalping de alta frequência, projetado especificamente para o XAUUSD (ouro) no período de tempo M1. Ao contrário dos indicadores tradicionais, que se baseiam em cálculos matemáticos de OHLC com defasagem, este EA opera com base na dinâmica da microestrutura no nível de tick— monitorando a velocidade dos ticks, os desvios do preço médio ponderado pelo volume (VWAP) e as rejeições de varredura de liquidez (stop hunts) executadas por instituições.
Backtest:
Para preencher a lacuna entre regras locais determinísticas e inteligência adaptativa, ele conta com uma Camada de Decisão AI Bridge que suporta tanto um mecanismo interno de pontuação ponderada quanto uma API de IA local externa compatível com OpenAI (via Python/FastAPI) para atuar como um filtro factual final antes da execução da ordem. Principais recursos do
:
- Mecanismo de microestrutura de ticks: Contorna indicadores defasados calculando janelas de velocidade de ticks em tempo real e desvios do VWAP no buffer circular.
- Captura de liquidez e proteção contra snapback: Aguarda que os stop-losses de investidores de varejo sejam varridos para além das faixas extremas do VWAP e aciona entradas somente após a confirmação de um snapback/rejeição de preço.
- Ponte de IA com motor duplo: integra uma matriz de pontuação local determinística e um endpoint web de IA local opcional ( /analyze ) para validação de decisões multifatoriais.
- Filtros Multissessão e de Volatilidade: Restringe a execução a sessões de negociação ativas (Ásia, Londres, Oriente Médio), evitando períodos perigosos de rolagem.
- Gerenciamento avançado de risco e capital: Suporta dimensionamento por lote fixo ou porcentagem de risco (% do saldo/patrimônio líquido) com proteção dinâmica por ATR/stop-loss fixo, ponto de equilíbrio e stop móvel.
1. Estrutura do código e fluxo de trabalho:
- OnTick(): O loop principal que executa verificações de spread, atualizações em tempo real do buffer de ticks, cálculos de VWAP e máquinas de estado para obtenção de liquidez.
- CalculateTickVWAP(): Calcula dinamicamente o preço médio ponderado pelo volume e as faixas de desvio padrão a partir de um buffer circular de 500 ticks.
- AIBridge_Confirm(): O gateway de decisão que atua como um filtro final, avaliando tendências em múltiplos intervalos de tempo (H1, M15, M5), a estrutura do M1 e métricas de velocidade.
- AIBridge_LocalScore(): Calcula uma pontuação ponderada determinística (de 0,0 a 1,0) com base em dados de mercado medidos.
- AIBridge_WebCall(): Agrupa dados de mercado em tempo real em uma carga JSON padronizada e se comunica de forma assíncrona com um servidor local Python/FastAPI.
- SecureProfits() : Gerencia com segurança as modificações automatizadas de ponto de equilíbrio (Break-Even) e stop móvel (Trailing Stop) usando solicitações TRADE_ACTION_SLTP do MT5.
2. Fluxo de trabalho de execução:
- Captura e filtragem de ticks: Valida os ticks recebidos em relação ao spread máximo permitido, ao horário de negociação ativo e à volatilidade mínima do ATR em M1.
- Rastreamento de microestrutura: Cria continuamente um buffer circular para avaliar a aceleração da velocidade dos ticks e os desvios da faixa VWAP (+/- Desvio Padrão).
- Acionamento e validação por IA: Quando uma varredura de liquidez excede as faixas externas, seguida por uma rejeição por snapback, o contexto é enviado para a Camada de Ponte de IA.
- Decisão e execução: se a pontuação local ou o modelo de IA externo aprovar a negociação (ALLOW=YES com alta confiança), a função ExecuteTrade() calcula o tamanho dinâmico do lote com base no risco e despacha a ordem usando os modos de preenchimento ideais (IOC/FOK).
Este EA foi projetado para enviar solicitações HTTP POST com uma carga JSON no estilo OpenAI (contendo `messages`, `role: system` e `role: user`) e espera uma resposta JSON contendo `decision`, `confidence` e `reason`.
Para criar uma API de IA local (servidor local) capaz de responder a essas solicitações do MT5 em milissegundos, a linguagem de programação ideal é o Python, utilizando o framework FastAPI. O FastAPI é leve, extremamente rápido e perfeitamente adequado para processar dados de alta frequência do MT5.
Abaixo está o código completo do servidor em Python. Posteriormente, você poderá integrar um modelo real de aprendizado de máquina (como TensorFlow, Scikit-Learn ou até mesmo Ollama para um LLM local) a esse mecanismo.
1. Configuração do ambiente Python
Certifique-se de que o Python esteja instalado no seu computador. Abra o Terminal ou o Prompt de Comando e instale estas duas bibliotecas essenciais:
pip install fastapi uvicorn
2. Código da API em Python (local_ai_bridge.py)
Crie um arquivo chamado local_ai_bridge.py no seu computador e copie o código a seguir: (Python)
from fastapi import FastAPI, Request from pydantic import BaseModel from typing import List, Optional import json import uvicorn app = FastAPI(title="MT5 AI Microstructure Bridge") # --- MODELOS DE DADOS (Compatíveis com o formato de dados MQL5) --- class Message(BaseModel): role: str content: str class AIRequest(BaseModel): model: str temperature: float response_format: Optional[dict] = None messages: List[Message] # --- PONTO DE CONEXÃO PRINCIPAL (/analyze) --- @app.post("/analyze") async def analyze_market(payload: AIRequest): """ This endpoint receives tick and microstructure data from MT5, analyzes the data, and returns a BUY/SELL/WAIT decision. """ # 1. Extrair dados JSON da mensagem “user” enviada pelo MT5 user_content = "{}" for msg in payload.messages: if msg.role == "user": user_content = msg.content break try: facts = json.loads(user_content) except json.JSONDecodeError: return {"decision": "WAIT", "confidence": 0.0, "reason": "Invalid JSON format"} # 2. Extrair dados sobre o mercado order_type = facts.get("order_type", "WAIT") high_velocity = facts.get("high_velocity", False) snapback_pips = facts.get("snapback_pips", 0.0) min_snapback = facts.get("min_snapback_pips", 2.0) deviation_z = facts.get("deviation_z", 0.0) mtf = facts.get("mtf", {}) m1_structure = facts.get("m1_structure", {}) # 3. IA / ALGORITMO DE TOMADA DE DECISÃO (pode ser substituído por um modelo de aprendizado de máquina posteriormente) # Este é um exemplo simples de lógica de decisão confidence = 0.0 decision = "WAIT" reason = "" # Avaliar a lógica quando o EA solicitar a confirmação de VENDA if order_type == "SELL": score = 0 # Validar o snapback e a velocidade if snapback_pips >= min_snapback and high_velocity: score += 0.4 # Validar desvio extremo (condição de sobrecompra) if deviation_z > 2.0: score += 0.3 # Validar o alinhamento do MTF (pelo menos o H1 ou o M15 devem apresentar tendência de baixa) if mtf.get("h1_down") or mtf.get("m15_down"): score += 0.2 # Validar a rejeição do M1 (bomba longa na parte superior) if m1_structure.get("upper_wick_ratio", 0.0) >= 0.2: score += 0.1 confidence = score if confidence >= 0.70: decision = "SELL" reason = "High velocity drop, MTF align, Z-Score high" else: reason = f"Score only {confidence:.2 f}, lacking momentum" # Avaliar a lógica quando o EA solicita a confirmação de COMPRA elif order_type == "BUY": score = 0 # Validar o snapback e a velocidade if snapback_pips >= min_snapback and high_velocity: score += 0.4 # Validar desvio extremo (deviation_z já está ajustado quanto à direção no MQL5) if deviation_z > 2.0: score += 0.3 # Validar o alinhamento do MTF (pelo menos o H1 ou o M15 devem apresentar tendência de alta) if mtf.get("h1_up") or mtf.get("m15_up"): score += 0.2 # Validar a rejeição da M1 (baqueta longa na parte inferior) if m1_structure.get("lower_wick_ratio", 0.0) >= 0.2: score += 0.1 confidence = score if confidence >= 0.70: decision = "BUY" reason = "High velocity bounce, MTF align, Z-Score high" else: reason = f"Score only {confidence:.2 f}, lacking momentum" # 4. Enviar a resposta JSON de volta para o MT5 return { "decision": decision, "confidence": round(confidence, 2), "reason": reason[:60] # Limite o motivo a no máximo 60 caracteres para o MT5 } if __name__ == "__main__": # Inicie o servidor local na porta 8787, de acordo com o parâmetro InpAIEndpoint no MQL5 print("AI Bridge Server is running on http://127.0.0.1:8787") uvicorn.run(app, host="127.0.0.1", port=8787)
3. Como executar o servidor e se conectar ao MT5
- Abra o Terminal e navegue até a pasta onde o arquivo Python está armazenado.
- Execute o comando:
- O servidor será iniciado e ficará à escuta em [http://127.0.0.1:8787](http://127.0.0.1:8787).
- Na plataforma MetaTrader 5, certifique-se de ter adicionado a URL [http://127.0.0.1](http://127.0.0.1) à lista de URLs permitidas para WebRequest:
- Vá para Ferramentas -> Opções -> Consultores Especializados.
- Marque a opção “Permitir WebRequest para URLs listados”.
- Adicione a URL [http://127.0.0.1](http://127.0.0.1) à lista.
- Execute seu EA. O EA agora enviará dados em tempo real para a API do Python; o Python os analisará com base nos parâmetros da função Python e enviará comandos COMPRAR/VENDER/AGUARDAR de volta para o MT5.
Essa arquitetura Python é altamente escalável. Se, no futuro, você desejar armazenar esse histórico de movimentação de preços em um banco de dados (para dados de treinamento de aprendizado de máquina) ou conectá-lo a um modelo de previsão (como XGBoost ou Random Forest), basta modificar a seção marcada com o comentário nº 3 — INTELIGÊNCIA ARTIFICIAL / ALGORITMO DE DECISÃO—no código acima.
Se for bem-sucedido, o Print Expert aparecerá da seguinte forma:
Creating a Python file (.py) is actually very simple. Essentially, a Python file is just a standard text file (like a .txt file) with its extension changed to .py.
Usando o MetaTrader 5 (que geralmente roda no Windows), aqui estão as três maneiras mais fáceis de criar o arquivo local_ai_bridge.py:
Método 1: Usando o Bloco de Notas (mais rápido e sem necessidade de instalar aplicativos adicionais)
Este é o método mais rápido no sistema operacional Windows:
- Abra o aplicativo Bloco de Notas integrado ao Windows.
- Copie todo o código Python do FastAPI que forneci anteriormente (acima). [2. Código da API Python (local_ai_bridge.py)]
- Cole o código em um documento em branco do Bloco de Notas.
- Clique no menu Arquivo > Salvar como...
- Selecione a pasta onde deseja salvar este arquivo (por exemplo, crie uma nova pasta chamada AI_MT5 na pasta “Documentos” ou na Área de Trabalho).
- MUITO IMPORTANTE: Na seção “Salvar como tipo”, altere a configuração de “Documentos de texto (*.txt)” para “Todos os arquivos (*.*)”.
- No campo “Nome do arquivo”, digite exatamente: local_ai_bridge.py
- Clique em Salvar. Pronto!
Dicas adicionais após a criação do arquivo:
Para executá-lo, certifique-se de abrir o Prompt de Comando (CMD) na pasta onde o arquivo `local_ai_bridge.py` está localizado e, em seguida, digite o comando para executá-lo:
python local_ai_bridge.py
Se for bem-sucedido, sua janela do CMD exibirá um texto indicando que o servidor Uvicorn/FastAPI está em execução.
//-------------------------
Para que o Python execute o arquivo `local_ai_bridge.py`, o Terminal deve estar “localizado” na mesma pasta que esse arquivo. Aqui estão as três maneiras mais fáceis de fazer isso no Windows (escolha a que você preferir):
Método 1: Truque da “barra de endereço” do Explorador de Arquivos (o mais fácil e rápido)
Esse é um truque favorito entre programadores por ser muito prático:
- Abra o Explorador de Arquivos (a tela onde você costuma visualizar arquivos e pastas).
- Vá até a pasta onde você salvou o arquivo `local_ai_bridge.py` anteriormente.
- Clique uma vez com o botão esquerdo do mouse na barra de endereço na parte superior (o campo longo que mostra o caminho da pasta, por exemplo, C:\Users\SeuNome\Documentos\AI_MT5).
- O texto do endereço ficará destacado em azul. Apague o texto e digite: cmd
- Pressione Enter no teclado.
- Uma tela preta (Prompt de Comando) será aberta imediatamente, posicionada exatamente dentro dessa pasta.
Etapas de execução (se o terminal já estiver aberto na pasta correta)
Assim que a janela preta ou azul abrir na pasta correta, basta emitir um comando ao Python para iniciar o robô de IA.
- Digite este comando:
-
python local_ai_bridge.py
- Pressione Enter.
Se a instalação das bibliotecas (fastapi e uvicorn) foi bem-sucedida, você verá aparecer o texto “AI Bridge Server is running on http://127.0.0.1:8787” ou uma mensagem indicando “Uvicorn running on...”
Conforme segue:
O servidor AI Bridge está em execução em http://127.0.0.1:8787
INFO: Iniciou-se o processo do servidor [4168]
INFO: Aguardando a inicialização do aplicativo.
INFO: Inicialização do aplicativo concluída.
INFORMAÇÃO: O Uvicorn está em execução em http://127.0.0.1:8787 (Pressione CTRL+C para sair)
O texto indica que:
- Inicialização bem-sucedida: O EA detectou com sucesso o símbolo XAUUSD com um multiplicador de pip de 10,0 (detectando corretamente uma corretora de 3 dígitos/5 dígitos).
- AI Bridge ativa: O módulo AIBridge v1.1 foi carregado com sucesso no modo HYBRID, conectado ao endpoint local [http://127.0.0.1:8787/analyze](http://127.0.0.1:8787/analyze) e detectou que não é necessária autorização por chave (anônimo) — o que é adequado para nosso servidor Python local.
- Múltiplos intervalos de tempo e estrutura bloqueada: Os indicadores de tendência (H1, M15, M5) e a estrutura de velas fechadas em M1 estão prontos para monitorar o mercado.
O que essa indicação significa?
Isso significa que o EA e nosso servidor Python local agora estão funcionando em paralelo e estão prontos para interagir. O EA não está mais “cego” — ele possui um “cérebro local” que filtra todos os sinais de Liquidity Sweep e Velocity no período de tempo M1 do ouro antes de decidir se deve executar uma ordem ou aguardar (WAIT).
Em seguida, basta monitorar os movimentos do gráfico ou realizar testes prospectivos em uma conta demo ou real. Quando as condições de varredura e os requisitos de velocidade de tick forem atendidos, você verá registros de decisão — como `[AI] VENDA HÍBRIDA ... ALLOW=YES` ou `NO` — aparecerem no diário em tempo real.
Visualização no Testador de Estratégias:

Traduzido do inglês pela MetaQuotes Ltd.
Publicação original: https://www.mql5.com/en/code/76331
Wolfe Wave Dashboard
Indicador profissional MQL5 (janela separada) que analisa automaticamente vários símbolos e intervalos de tempo, detecta os padrões Wolfe Wave válidos mais recentes (de alta/de baixa), os exibe em um painel interativo e permite a abertura do gráfico com um clique, com o desenho completo do padrão.
Dynamic Session Range Sweep Detector with Liquidity Zone Marking
Acompanha as faixas de negociação das sessões da Ásia, Londres e Nova York, fixa cada uma delas no fechamento da sessão e sinaliza verdadeiras oscilações de liquidez — uma sombra que ultrapassa uma máxima ou mínima fixada e fecha novamente dentro dela — com um sinal de seta e uma zona de reação sombreada. Não se atualiza retroativamente, funciona em qualquer símbolo e período de tempo.
Accumulation/Distribution
O Indicador Accumulation/Distribution (Acumulação/Distribuição ou A/D) é determinado pelas mudanças de preço e volume.
Accelerator Oscillator (AC)
O Indicador Acceleration/Deceleration (Aceleração/Desaceleração ou AC) mede a aceleração e a desaceleração da força motriz atual do mercado.


