Pon "Me gusta" y sigue las noticias
Deje un enlace a él, ¡qué los demás también lo valoren!
Evalúe su trabajo en el terminal MetaTrader 5
- Visualizaciones:
- 16
- Ranking:
- Publicado:
-
¿Necesita un robot o indicador basado en este código? Solicítelo en la bolsa freelance Pasar a la bolsa
El EA «Hybrid Microstructure » es un asesor experto avanzado de scalping de alta frecuencia diseñado específicamente para el XAUUSD (oro) en el marco temporal M1. A diferencia de los indicadores tradicionales, que se basan en cálculos matemáticos de OHLC con retraso, este EA opera a partir de la dinámica de la microestructura a nivel de tick, realizando un seguimiento de la velocidad de los ticks, las desviaciones del precio medio ponderado por volumen (VWAP) y los rechazos de barridos de liquidez (caza de stops) ejecutados por las instituciones.
Backtest:
Para salvar la brecha entre las reglas locales deterministas y la inteligencia adaptativa, cuenta con una capa de decisión «AI Bridge» que admite tanto un motor interno de puntuación ponderada como una API de IA local externa compatible con OpenAI (a través de Python/FastAPI) para actuar como filtro final basado en datos antes de la ejecución de las órdenes.
Características principales:
- Motor de microestructura de ticks: elude los indicadores rezagados calculando ventanas de velocidad de ticks en tiempo real y desviaciones del VWAP en el búfer circular.
- Captura de liquidez y protección contra rebotes: Espera a que los stop-loss minoristas sean barridos más allá de las bandas extremas del VWAP y activa las entradas solo tras confirmarse un rebote o rechazo del precio.
- Puente de IA de doble motor: integra una matriz de puntuación local determinista y un punto final web de IA local opcional ( /analyze ) para la validación de decisiones multifactoriales.
- Filtros multisesión y de volatilidad: restringe la ejecución a las sesiones de negociación activas (Asia, Londres, Oriente Medio), evitando al mismo tiempo los peligrosos periodos de renovación de posiciones.
- Gestión avanzada del riesgo y del capital: Admite el dimensionamiento por lote fijo o por porcentaje de riesgo (% del saldo/capital) con protección dinámica mediante ATR/stop-loss fijo, umbral de equilibrio y stop dinámico.
1. Estructura del código y flujo de trabajo:
- OnTick(): el bucle principal que ejecuta comprobaciones de spreads, actualizaciones en tiempo real del búfer de ticks, cálculos del VWAP y máquinas de estados para la obtención de liquidez.
- CalculateTickVWAP(): Calcula dinámicamente el precio medio ponderado por volumen y las bandas de desviación estándar a partir de un búfer circular de 500 ticks.
- AIBridge_Confirm(): La pasarela de decisión que actúa como filtro final evaluando las tendencias en múltiples marcos temporales (H1, M15, M5), la estructura M1 y las métricas de velocidad.
- AIBridge_LocalScore(): Calcula una puntuación ponderada determinista (de 0,0 a 1,0) basada en datos de mercado medidos.
- AIBridge_WebCall(): Empaqueta los datos de mercado en tiempo real en una carga útil JSON estricta y se comunica de forma asíncrona con un servidor local de Python/FastAPI.
- SecureProfits(): Gestiona de forma segura las modificaciones automatizadas del punto de equilibrio y del trailing stop mediante solicitudes TRADE_ACTION_SLTP de MT5.
2. Flujo de trabajo de ejecución:
- Captura y filtrado de ticks: Valida los ticks entrantes en función del spread máximo permitido, el horario de negociación activo y la volatilidad mínima del ATR en M1.
- Seguimiento de la microestructura: Crea continuamente un búfer circular para evaluar la aceleración de la velocidad de los ticks y las amplitudes de la banda VWAP (+/- desviación estándar).
- Activación y validación mediante IA: cuando un barrido de liquidez supera las bandas exteriores y se produce a continuación un rechazo por retroceso, el contexto se envía a la capa de puente de IA.
- Decisión y ejecución: si la puntuación local o el modelo de IA externo aprueban la operación (ALLOW=YES con alta confianza), ExecuteTrade() calcula el tamaño dinámico de los lotes en función del riesgo y envía la orden utilizando los modos de ejecución óptimos (IOC / FOK).
Este EA está diseñado para enviar solicitudes HTTP POST con una carga útil JSON al estilo de OpenAI (que contiene `messages`, `role: system` y `role: user`) y espera una respuesta JSON que contenga `decision`, `confidence` y `reason`.
Para crear una API de IA local (servidor local) capaz de responder a estas solicitudes de MT5 en milisegundos, el lenguaje de programación ideal es Python utilizando el marco FastAPI. FastAPI es ligero, ultrarrápido y perfectamente adecuado para procesar datos de alta frecuencia procedentes de MT5.
A continuación se muestra el código completo del servidor en Python. Más adelante podrás integrar en este motor un modelo real de aprendizaje automático (como TensorFlow, Scikit-Learn o incluso Ollama para un LLM local).
1. Configuración del entorno de Python
Asegúrate de que Python esté instalado en tu ordenador. Abre la Terminal o el Símbolo del sistema e instala estas dos bibliotecas esenciales:
pip install fastapi uvicorn
2. Código de la API de Python (local_ai_bridge.py)
Crea un archivo llamado local_ai_bridge.py en tu ordenador y copia el siguiente código: (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 DATOS (Compatibles con el formato de datos MQL5) --- class Message(BaseModel): role: str content: str class AIRequest(BaseModel): model: str temperature: float response_format: Optional[dict] = None messages: List[Message] # --- PUNTO FINAL 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. Extraer los datos JSON del mensaje «user» enviado por 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. Recopilar datos sobre el 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", {}) N.º 3. IA / ALGORITMO DE TOMA DE DECISIONES (Se puede sustituir más adelante por un modelo de aprendizaje automático) # Este es un ejemplo sencillo de lógica de decisión confidence = 0.0 decision = "WAIT" reason = "" # Evaluar la lógica cuando el EA solicita la confirmación de VENTA if order_type == "SELL": score = 0 # Validar el retroceso y la velocidad if snapback_pips >= min_snapback and high_velocity: score += 0.4 # Comprobar si hay una desviación extrema (situación de sobrecompra) if deviation_z > 2.0: score += 0.3 # Validar la alineación del MTF (al menos H1 o M15 deben mostrar una tendencia bajista) if mtf.get("h1_down") or mtf.get("m15_down"): score += 0.2 # Validar el rechazo de M1 (mecha superior larga) 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" # Evaluar la lógica cuando el EA solicita la confirmación de COMPRA elif order_type == "BUY": score = 0 # Validar el retroceso y la velocidad if snapback_pips >= min_snapback and high_velocity: score += 0.4 # Validar la desviación extrema (la variable «deviation_z» ya está ajustada en cuanto a la dirección en MQL5) if deviation_z > 2.0: score += 0.3 # Validar la alineación del MTF (al menos H1 o M15 deben mostrar una tendencia alcista) if mtf.get("h1_up") or mtf.get("m15_up"): score += 0.2 # Validar el rechazo de M1 (mecha inferior larga) 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" N.º 4. Enviar la respuesta JSON a MT5 return { "decision": decision, "confidence": round(confidence, 2), "reason": reason[:60] # Limita el motivo a un máximo de 60 caracteres para MT5 } if __name__ == "__main__": # Iniciar el servidor local en el puerto 8787, coincidiendo con el parámetro InpAIEndpoint en 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. Cómo ejecutar el servidor y conectarse a MT5
- Abre la Terminal y navega hasta la carpeta donde se encuentra el archivo de Python.
- Ejecuta el comando:
- El servidor se iniciará y estará a la escucha en [http://127.0.0.1:8787](http://127.0.0.1:8787).
- En la plataforma MetaTrader 5, asegúrate de haber añadido la URL [http://127.0.0.1](http://127.0.0.1) a la lista de URL permitidas para WebRequest:
- Ve a Herramientas -> Opciones -> Asesores expertos.
- Marca la casilla «Permitir WebRequest para las URL de la lista».
- Añade la URL [http://127.0.0.1](http://127.0.0.1) a la lista.
- Ejecuta tu EA. El EA enviará ahora datos en tiempo real a la API de Python; Python los analizará en función de los parámetros de la función de Python y enviará comandos de COMPRA/VENTA/ESPERA de vuelta a MT5.
Esta arquitectura de Python es altamente escalable. Si, en el futuro, deseas almacenar este historial de movimientos de precios en una base de datos (para datos de entrenamiento de aprendizaje automático) o conectarlo a un modelo de predicción (como XGBoost o Random Forest), solo tienes que modificar la sección marcada con el comentario n.º 3 — INTELIGENCIA ARTIFICIAL / ALGORITMO DE DECISIÓN—en el código anterior.
Si todo sale bien, Print Expert mostrará lo siguiente:
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.
Si utilizas MetaTrader 5 (que, por lo general, se ejecuta en Windows), estas son las tres formas más sencillas de crear el archivo local_ai_bridge.py:
Método 1: con el Bloc de notas (el más rápido y sin necesidad de instalar aplicaciones adicionales)
Este es el método más rápido en el sistema operativo Windows:
- Abre la aplicación Bloc de notas integrada en Windows.
- Copia todo el código Python de FastAPI que te he facilitado anteriormente (más arriba). [2. Código API de Python (local_ai_bridge.py)]
- Pega el código en un documento en blanco del Bloc de notas.
- Haz clic en el menú Archivo > Guardar como...
- Selecciona la carpeta en la que deseas guardar este archivo (por ejemplo, crea una nueva carpeta llamada AI_MT5 en «Documentos» o en el escritorio).
- MUY IMPORTANTE: En la sección «Guardar como tipo», cambia la configuración de «Documentos de texto (*.txt)» a «Todos los archivos (*.*)».
- En el campo «Nombre de archivo», escribe exactamente: local_ai_bridge.py
- Haz clic en Guardar. ¡Listo!
Consejos adicionales tras crear el archivo:
Para ejecutarlo, asegúrate de abrir el Símbolo del sistema (CMD) en la carpeta donde se encuentra el archivo `local_ai_bridge.py` y, a continuación, escribe el comando para ejecutarlo:
python local_ai_bridge.py
Si se ejecuta correctamente, la ventana del CMD mostrará un mensaje indicando que el servidor Uvicorn/FastAPI está en funcionamiento.
//-------------------------
Para que Python ejecute el archivo `local_ai_bridge.py`, el Terminal debe estar «ubicado» en la misma carpeta que dicho archivo. Estas son las tres formas más sencillas de hacerlo en Windows (elige la que prefieras):
Método 1: Truco de la «barra de direcciones» del Explorador de archivos (el más fácil y rápido)
Este es uno de los trucos favoritos de los programadores porque resulta muy práctico:
- Abre el Explorador de archivos (la pantalla en la que sueles ver los archivos y carpetas).
- Ve a la carpeta donde guardaste antes el archivo `local_ai_bridge.py`.
- Haz clic con el botón izquierdo una vez en la barra de direcciones de la parte superior (el campo largo que muestra la ubicación de la carpeta, p. ej., C:\Usuarios\TuNombre\Documentos\AI_MT5).
- El texto de la dirección se resaltará en azul. Borra el texto y escribe: cmd
- Pulsa la tecla Intro del teclado.
- Se abrirá inmediatamente una pantalla negra (la línea de comandos), situada exactamente dentro de esa carpeta.
Pasos de ejecución (si el terminal ya está abierto en la carpeta correcta)
Una vez que se abra la ventana negra o azul en la carpeta correcta, solo tienes que enviar un comando a Python para iniciar el robot de IA.
- Escribe este comando:
-
python local_ai_bridge.py
- Pulsa Intro.
Si la instalación de las bibliotecas (fastapi y uvicorn) se ha realizado correctamente, aparecerá un mensaje que dice «AI Bridge Server is running on http://127.0.0.1:8787» o un mensaje que indica «Uvicorn running on...»
De la siguiente manera:
El servidor AI Bridge se está ejecutando en http://127.0.0.1:8787
INFO: Se ha iniciado el proceso del servidor [4168]
INFO: Esperando a que se inicie la aplicación.
INFO: Inicio de la aplicación completado.
INFO: Uvicorn se está ejecutando en http://127.0.0.1:8787 (pulsa CTRL+C para salir)
El texto indica que:
- Inicialización correcta: el EA ha detectado correctamente el símbolo XAUUSD con un multiplicador de pips de 10,0 (detectando correctamente un bróker de 3 dígitos/5 dígitos).
- AI Bridge activo: el módulo AIBridge v1.1 se ha cargado correctamente en modo HÍBRIDO, conectado al punto final local [http://127.0.0.1:8787/analyze](http://127.0.0.1:8787/analyze) y ha detectado que no se requiere autorización mediante clave (anónimo), lo cual es adecuado para nuestro servidor local de Python.
- Múltiples marcos temporales y estructura de cierre: Los indicadores de tendencia compatibles (H1, M15, M5) y la estructura de velas cerradas en M1 están listos para supervisar el mercado.
¿Qué significa esto?
Esto significa que el EA y nuestro servidor local de Python ahora funcionan en paralelo y están listos para interactuar. El EA ya no está «a ciegas»: cuenta con un «cerebro local» que filtra cada señal de barrido de liquidez y de velocidad en el marco temporal M1 del oro antes de decidir si ejecutar una orden o esperar (WAIT).
A continuación, solo tiene que observar los movimientos del gráfico o realizar pruebas prospectivas en una cuenta demo o real. Cuando se cumplan las condiciones de barrido y los requisitos de velocidad de ticks, verá aparecer en el diario, en tiempo real, registros de decisiones como `[AI] VENDER HÍBRIDO ... PERMITIR=SÍ` o `NO`.
Visualización en el Strategy Tester:

Traducción del inglés realizada por MetaQuotes Ltd.
Artículo original: https://www.mql5.com/en/code/76331
Wolfe Wave Dashboard
Indicador profesional de MQL5 (ventana independiente) que analiza automáticamente múltiples símbolos y marcos temporales, detecta los patrones Wolfe Wave válidos más recientes (alcistas/bajistas), los muestra en un panel interactivo y permite abrir gráficos con un solo clic, con el dibujo completo del patrón.
Dynamic Session Range Sweep Detector with Liquidity Zone Marking
Realiza un seguimiento de los rangos de las sesiones de Asia, Londres y Nueva York, fija cada uno de ellos al cierre de la sesión y señala los auténticos «sweeps» de liquidez —una mecha que atraviesa un máximo o mínimo fijado y vuelve a cerrar dentro de él— con una señal de flecha y una zona de reacción sombreada. No se actualiza, funciona con cualquier símbolo y marco temporal.
Accumulation/Distribution
El indicador Accumulation/Distribution (Acumulación/Distribución) queda determinado por los cambios que se producen en el precio y en el volumen.
Accelerator Oscillator (AC)
El indicador Acceleration/Deceleration (AC, Aceleración/Desaceleración) mide la aceleración y la desaceleración de la fuerza impulsora del mercado.


