MQL5 EA: fundamentos de un robot en MetaTrader 5
Un Expert Advisor escrito en MQL5 es una pequeña aplicación que vive sobre un gráfico dentro de MetaTrader 5 y que, en cada tick, comprueba si el mercado acaba de producir la condición que tú definiste como tu entrada. Si es así, el Expert Advisor coloca la orden por sí mismo, sin pedir permiso. Este artículo explica cómo está construido un EA por dentro, cómo dialoga con la plataforma y con el bróker, y cuándo tiene sentido de verdad poner uno a funcionar. No es un tutorial de programación.
¿Qué es realmente un Expert Advisor en MQL5?
MQL5 es un lenguaje cercano a C++ creado específicamente para la plataforma MetaTrader 5. Un Expert Advisor es un único programa en ese lenguaje, compilado a un archivo binario .ex5 y adjuntado a un gráfico igual que un indicador. La diferencia se reduce a los permisos: un indicador solo dibuja sobre el gráfico, mientras que un EA tiene permitido colocar órdenes reales contra tu cuenta de trading. Esa única línea en el modelo de permisos de la plataforma separa la visualización pasiva de la automatización autónoma.
¿En qué se diferencia un «EA» de un «robot de trading» genérico? Solo en el ecosistema. Un robot escrito en Python también es un robot: simplemente vive fuera del terminal y suele conectarse con el bróker (broker) a través de una API REST o del protocolo FIX. Un EA, por definición, vive dentro de MT5. Para una visión comparada tienes nuestro artículo complementario sobre los Expert Advisors en MT4 y MT5 dentro de las guías prácticas de la plataforma.
¿Cómo dialoga un EA con la plataforma? El ciclo OnInit, OnTick y OnDeinit
Todo Expert Advisor tiene un ritmo de vida dictado por tres eventos que la plataforma invoca en su nombre. OnInit se dispara exactamente una vez, cuando el EA se adjunta a un gráfico o el terminal se reinicia. Es el momento en que el EA lee sus parámetros de entrada, abre los manejadores de los indicadores en los que se apoya y avisa de que está listo para recibir ticks.
El segundo evento es el más importante. OnTick se invoca cada vez que llega una nueva cotización del bróker para el símbolo sobre el que está el EA. En un par líquido como EUR/USD durante la sesión de Londres esto puede ocurrir varias decenas de veces por segundo. Dentro de OnTick el EA decide si el precio actual cumple las condiciones de entrada, si hay que mover el stop loss (orden de stop) o si conviene cerrar una posición abierta. Toda la lógica de la estrategia vive en esta única función.
El tercer evento, OnDeinit, se invoca cuando el EA se retira del gráfico, se cambia el símbolo o MT5 se cierra. Su trabajo es de mantenimiento: liberar los manejadores de indicadores, guardar el estado, cerrar los archivos de registro. Omito deliberadamente manejadores auxiliares como OnTimer y OnTrade, porque no cambian el principio. Todo EA es, en el fondo, un programa de gestión de eventos que responde a lo que MT5 le entrega.
¿Cómo coloca las órdenes un EA? La clase CTrade
La segunda cosa que vale la pena entender sin meterse en la sintaxis es cómo se comunica un EA con el bróker. MT5 no te deja simplemente «enviar una compra» como hace un humano que pulsa en la interfaz. Cada orden se despacha como una solicitud estructurada, una MqlTradeRequest, y el servidor responde con un resultado que contiene un código que indica si la orden pasó o si fue rechazada por motivos como margen insuficiente, niveles de stop inválidos o una desviación superada.
Rellenar esas estructuras a mano es tedioso, así que MetaQuotes incluye en su biblioteca estándar una clase llamada CTrade, que envuelve todo en métodos cómodos como Buy, Sell, PositionClose y OrderModify. Los hilos de los foros debaten sin fin los matices: si usar Buy(volumen, símbolo) o rellenar la solicitud tú mismo, cómo manejar las recotizaciones, cómo reaccionar al slippage (deslizamiento) en las rupturas rápidas. Si quieres entender ese punto concreto, lo desarrollé entre los conceptos básicos del mercado de divisas. Para la mayoría de las estrategias minoristas, CTrade es más que suficiente.
El Strategy Tester, o cómo comprobar que el EA no se ha limitado a memorizar el pasado
El Strategy Tester integrado en MT5 es una herramienta mucho más seria que su primo de MT4. Alimenta al EA con ticks históricos (generados a partir de barras o ticks genuinos del servidor de MetaQuotes), ejecuta miles de pasadas sobre combinaciones de parámetros y produce un informe con la curva de capital (equity), el drawdown (caída máxima) y el factor de beneficio.
El problema es que ese mismo tester, pensado para verificar tu trabajo, tiende a convertirse en una fábrica de ilusiones. Optimizar los parámetros sobre todo el historial casi siempre produce una curva tan lisa como una cuerda tensa, y esa curva casi siempre se desmorona en cuanto el EA toca dinero real. El fenómeno tiene un nombre, curve fitting (sobreajuste a la muestra), y es una certeza matemática, no mala suerte. Las contramedidas las cubro en cómo hacer un backtesting (prueba retrospectiva) honesto: dividir los datos en un periodo de muestra (in-sample) y un periodo fuera de muestra (out-of-sample), e idealmente añadir encima un análisis walk-forward.
«Una estrategia que ha sido rentable con datos históricos no será necesariamente rentable en el futuro. Los datos históricos son una pequeña muestra del universo de posibles estados del mercado, y optimizar parámetros contra esa muestra es exactamente lo que parece: ajustarse a la muestra.» — Ernest P. Chan, Algorithmic Trading: Winning Strategies and Their Rationale, Wiley, 2013
¿Cuándo ayuda de verdad un EA y cuándo perjudica?
Que tenga sentido poner un EA a funcionar depende mucho de la estrategia. Tres situaciones en las que un EA aporta una ventaja real: la ejecución consistente de reglas que un humano no puede sostener psicológicamente (piensa en doscientas operaciones de scalping al mes), la vigilancia de los mercados las veinticuatro horas durante las sesiones asiáticas cuando el resto del mundo duerme, y la operativa en la que la decisión debe tomarse en una fracción de segundo, terreno en el que un humano es sencillamente demasiado lento.
Un EA rinde mal allí donde se necesita juicio. Operar la publicación de las nóminas no agrícolas (NFP), decidir si la acción del precio actual es un cambio de régimen genuino o ruido pasajero, interpretar el contexto geopolítico: casi todo esto descalifica a un EA. La estadística de las encuestas independientes en los foros de MQL5 es brutal: una clara mayoría de los EA del Marketplace, pese a sus relucientes gráficos de backtest, registran pérdidas en el trading real durante su primer año. No es mala fe por parte de los vendedores: un backtest bonito es barato y una ventaja real es escasa.
¿Merece la pena escribir tu propio EA?
Si entiendes la estrategia que operas y puedes describirla con reglas lo bastante precisas como para que no quede margen de discreción, construir tu propio EA es la mejor inversión de tiempo que puedes hacer en este terreno. De tres a seis meses con la documentación de MQL5, un proyecto de prueba sencillo y el Strategy Tester construyen un conocimiento que ningún paquete de robots comprados te dará.
La segunda razón es práctica. Un EA funciona las veinticuatro horas cinco días a la semana, pero solo si la máquina en la que vive también funciona sin interrupción. Un ordenador de sobremesa en casa cuya corriente depende de un único cable no basta. Por eso un VPS desempeña un papel aparte: el mismo EA puede dar resultados notablemente distintos según la latencia entre el servidor del bróker y la máquina donde se aloja. Antes de codificar nada conviene tener la regla de entrada bien definida, algo que repaso en las estrategias de trading.
Recuerda además el marco regulatorio: en la Unión Europea, la ESMA (Autoridad Europea de Valores y Mercados) fija los límites de apalancamiento (leverage) y la protección frente a saldo negativo para el cliente minorista, y en España es la CNMV (Comisión Nacional del Mercado de Valores) quien aplica esas directivas; un EA no te exime de operar dentro de esas reglas. Si operas desde Latinoamérica, consulta tu regulador local — CNBV (México), CNV (Argentina), CMF (Chile), SBS (Perú) u otro organismo competente en tu país.
¿Qué hacer mañana?
- Descarga MetaTrader 5 desde la web de tu bróker, abre una cuenta demo y entra en la pestaña Strategy Tester. Carga uno de los EA de ejemplo integrados (Moving Average o MACD Sample) sobre EUR/USD H1, ejecuta una sola pasada y lee con calma el informe resultante para ver cómo se comportan en la práctica las métricas básicas: curva de capital, drawdown y factor de beneficio.
- Abre la documentación oficial de MQL5 en mql5.com/en/docs y lee solo tres capítulos: OnInit, OnTick y la clase CTrade. No intentes escribir nada todavía; el objetivo es ver cómo se organiza la documentación y dónde encontrar ejemplos resueltos cuando los necesites.
- Escribe tu estrategia como reglas lógicas del tipo «si X e Y, entonces abre una posición larga en el par con stop en el nivel Z». Si al cabo de una hora las reglas todavía contienen frases como «según el contexto» o «intuitivamente», tienes una estrategia discrecional que la automatización no salvará, y conviene volver a tus listas de control antes de escribir una sola línea de código.
- Si las reglas salieron inequívocas, planifica un calendario de aprendizaje: unos tres meses de fundamentos de MQL5 a partir de la documentación de MetaQuotes, más un proyecto paralelo de una semana para construir el EA más simple posible basado en un cruce de medias móviles. Ese único proyecto te enseña más que diez robots comprados.
- Antes de ejecutar nada con dinero real, comprométete a un mes mínimo de forward testing (prueba prospectiva) en demo con cotizaciones actuales. Un backtest no puede sustituir a un forward test: el forward test revela la latencia de ejecución del bróker, que un backtest no llega a ver.
Fuentes y bibliografía
-
MetaQuotes MQL5 Reference — OnTick event handler · oficjalna dokumentacja zdarzenia wywoływanego na każdą kwotację www.mql5.com ↗
-
MetaQuotes MQL5 Standard Library — CTrade class · klasa biblioteki standardowej do składania zleceń przez EA www.mql5.com ↗
-
MetaQuotes MetaTrader 5 — Strategy Tester documentation · narzędzie do backtestowania i optymalizacji EA www.metatrader5.com ↗
Preguntas frecuentes
¿En qué se diferencia un EA en MQL5 de un «robot» en Python?
Desde el punto de vista de la lógica, en nada. Ambos se reducen a un bucle que cada cierto tiempo comprueba las condiciones del mercado y envía órdenes. La diferencia está en el ecosistema. Un EA en MQL5 es hijo de MetaTrader: se carga sobre un gráfico, usa los indicadores integrados y emplea el Strategy Tester. Un robot en Python vive fuera del terminal y se conecta con el bróker de forma externa, normalmente a través de una API REST o del protocolo FIX. El EA gana si tu estrategia se apoya en los indicadores de MT5 y necesitas el tester integrado. Python gana si quieres usar bibliotecas de aprendizaje automático, de estadística o combinar datos de varias fuentes.
¿Necesito saber programar para poner en marcha un EA?
Para limitarte a ejecutar el EA de otra persona, no. Basta con arrastrar el archivo .ex5 al gráfico, fijar los parámetros y activar el AutoTrading. La verdadera dificultad empieza después: sin conocer MQL5 no puedes verificar qué hace de verdad el robot por dentro, cómo reacciona al slippage (deslizamiento) o si emplea a escondidas el método Martingala. Los vendedores de EA en el MQL5 Market suelen ocultar al usuario los parámetros más importantes. Sin la capacidad de abrir el código fuente (y la mayoría de los EA comerciales son cerrados) estás condenado a confiar a ciegas. Por eso recomiendo invertir en aprender los fundamentos del lenguaje: unas pocas semanas de documentación bastan para entender lo que estás leyendo.
¿Por qué el Strategy Tester muestra resultados sobresalientes y el trading real muestra pérdidas?
Porque el Strategy Tester es una herramienta de optimización, no de predicción. Si peinas todo el historial de datos en busca de los parámetros que dan la mejor curva de capital, casi con seguridad encontrarás una combinación que produce un resultado estupendo en esa muestra concreta, pero solo en ella. Ese fenómeno se llama curve fitting (sobreajuste) y es una certeza matemática. El antídoto: dividir los datos en un periodo de optimización (in-sample, p. ej. 2018–2022) y un periodo de verificación (out-of-sample, p. ej. 2023–2024), en el que ejecutas el EA ya sin retocar parámetros. Solo un resultado coherente en el periodo de validación hace plausible que no estés mirando un artefacto. El análisis walk-forward va un paso más allá: desplaza la ventana de entrenamiento y de prueba a lo largo de todo el historial.
¿Es imprescindible un VPS para un EA?
Para una estrategia que reacciona en una fracción de segundo, sí, sin discusión. Un scalper cuyo EA dispara varias decenas de órdenes al día pierde su ventaja cada vez que la conexión doméstica tiene un corte o el ordenador entra en suspensión. Un VPS situado en el mismo centro de datos que el servidor del bróker puede recortar la latencia de unos cincuenta milisegundos a unos pocos. Para una estrategia de posición que hace una operación a la semana, el VPS es una comodidad, no un requisito: basta con un ordenador de sobremesa en casa con un SAI. El coste en proveedores especializados en MT ronda hoy los 15 a 50 EUR al mes. Algunos brókeres ofrecen un VPS gratuito a partir de cierto umbral de depósito o de volumen.