Programa tu Ventaja: Crea tu Primer EA para MT5
Deja que las emociones y las oportunidades perdidas dejen de mermar tus ganancias. Aprende a crear tu primer Asesor Experto en MT5 con nuestra guía MQL5 paso a paso para traders intermedios. Convierte tu estrategia manual en una potente herramienta automatizada y disciplinada que opera por ti 24/5.
Raj Krishnamurthy
Director de Investigación

Imagina un sistema de trading que nunca duerme, nunca se emociona y ejecuta operaciones con una disciplina perfecta, 24/5. Para los traders intermedios, el salto de una estrategia manual a la ejecución automatizada puede parecer abrumador, pero es la clave para desbloquear una consistencia y eficiencia sin igual.
El trading manual, aunque valioso, a menudo es víctima de errores humanos, oportunidades perdidas o decisiones emocionales que merman las ganancias. ¿Y si pudieras potenciar tus estrategias para que se ejecuten sin fallos, adhiriéndose a tus reglas sin excepción? Esta guía no trata solo de aprender a programar; trata de transformar tu enfoque del trading. Te guiaremos a través de los conceptos básicos de MQL5, permitiéndote construir tu primer Asesor Experto funcional para MetaTrader 5, convirtiendo tus conocimientos estratégicos en potentes herramientas automatizadas.
Desbloquea la Eficiencia en el Trading: Por Qué MQL5 y los EAs son Importantes
Entonces, tienes una estrategia de trading que funciona. Has identificado tus reglas de entrada, salida y gestión de riesgos. ¿El problema? Eres humano. Necesitas dormir, te distraes y, a veces, seamos honestos, dudas o te precipitas. Aquí es donde la automatización se convierte en tu mayor aliada.
¿Qué es MQL5 y por qué automatizar?
MQL5 son las siglas de MetaQuotes Language 5. Piénsalo como el lenguaje nativo de la plataforma MetaTrader 5 (MT5). Es un lenguaje de programación de alto nivel que te permite crear tus propios robots de trading, indicadores técnicos y scripts. Estos robots de trading son lo que llamamos Asesores Expertos (EAs).
Un EA es simplemente un programa que se ejecuta en tu gráfico de MT5, analizando datos de mercado y ejecutando operaciones basadas en un conjunto de reglas predefinidas: tus reglas. Esto te lleva de ser un ejecutor manual de operaciones a un gestor de estrategias, lo que supone un salto masivo en la sofisticación del trading. Aunque los conceptos son similares a los del trading con API de Forex, MQL5 está específicamente integrado en el ecosistema de MT5, lo que lo hace increíblemente accesible.
Los Beneficios Clave de los Asesores Expertos
¿Por qué tomarse la molestia de programar? Los beneficios cambian las reglas del juego:
- Elimina la Emoción: Los EAs son pura lógica. No sienten miedo, codicia ni esperanza. Ejecutan tu plan con una disciplina fría y dura, siempre.
- Ejecución 24/5: El mercado forex nunca duerme, pero tú sí. Un EA puede monitorear múltiples pares durante todo el día, asegurando que nunca pierdas una oportunidad solo porque ocurrió a las 3 AM.
- Velocidad y Precisión: Un EA puede reaccionar a las condiciones del mercado y ejecutar una operación en milisegundos, mucho más rápido de lo que cualquier humano puede hacer clic con el ratón.
- Backtesting Potente: Antes de arriesgar un solo dólar, puedes probar tu estrategia en años de datos históricos para ver cómo se habría comportado. Esto es crucial para refinar reglas y generar confianza.
Tu Primer Paso: Configurar MetaEditor
¿Listo para empezar? Tu entorno de programación ya está integrado en MT5. Se llama MetaEditor.
- Abre tu terminal de MT5.
- Haz clic en el icono IDE en la barra de herramientas (parece un pequeño libro o documento con una 'F'), o simplemente presiona la tecla F4.
- Se abrirá MetaEditor. En la ventana 'Navegador' de la izquierda, haz clic derecho en 'Asesores' y selecciona 'Crear'.
- Aparecerá el 'Asistente MQL5'. Selecciona 'Asesor Experto (plantilla)' y haz clic en 'Siguiente'.

- Dale un nombre a tu EA (p. ej.,
MiPrimerEA), añade tu nombre en el campo 'Autor' y haz clic en 'Finalizar'.
¡Eso es todo! Acabas de crear tu primer archivo de proyecto de EA. Se abrirá una nueva ventana con una plantilla de código básica, lista para que empieces a construir.
Domina los Fundamentos de MQL5: Estructura del Código y Sintaxis Principal
A primera vista, la plantilla de EA por defecto puede parecer intimidante, pero está construida en torno a tres funciones principales que gestionan todo el ciclo de vida de tu EA. Vamos a desglosarlas.
Entendiendo la Estructura del Archivo EA por Defecto
El cerebro de tu EA está organizado en unos pocos manejadores de eventos clave. Para un EA básico, solo necesitas centrarte en estos tres:
OnInit(): Esta función se ejecuta una vez cuando el EA se adjunta por primera vez a un gráfico o cuando se inicia el terminal. Es perfecta para tareas de configuración, como imprimir un mensaje de bienvenida o inicializar variables.OnDeinit(): Lo contrario deOnInit(). Se ejecuta una vez cuando eliminas el EA del gráfico o cierras el terminal. Úsala para tareas de limpieza.OnTick(): Este es el corazón de tu EA. Esta función se ejecuta cada vez que llega un nuevo tick de precio para el símbolo al que está adjunto tu EA. Toda tu lógica de trading principal —verificar condiciones de entrada, gestionar operaciones abiertas, etc.— vivirá aquí.
Variables y Tipos de Datos Esenciales de MQL5
Las variables son contenedores para almacenar información. En MQL5, cada variable debe tener un tipo de dato específico. Aquí están los esenciales:
int: Para números enteros (p. ej.,int magicNumber = 12345;)double: Para números con decimales, como precios o tamaños de lote (p. ej.,double entryPrice = 1.0850;)string: Para texto (p. ej.,string tradeComment = "Mi Primera Operación de EA";)bool: Para valores verdadero/falso (p. ej.,bool isTradeAllowed = true;)
Construyendo Lógica: Operadores, Condicionales y Bucles
Para tomar decisiones, tu EA necesita lógica. Esto se construye con operadores y sentencias condicionales.
- Operadores de Comparación:
==(es igual a),!=(no es igual a),>(mayor que),<(menor que). - Sentencias Condicionales: La estructura
if-elsees tu principal herramienta para la toma de decisiones. Comprueba si una condición es verdadera y ejecuta el código correspondiente.
Ejemplo: Imagina que solo quieres operar si el spread es inferior a 10 puntos.
Esta simple estructura es la base de todas las reglas de trading. Combinando datos con sentencias if, puedes decirle a tu EA exactamente qué condiciones deben cumplirse antes de que tome cualquier acción.
Recopila Datos, Realiza Operaciones: Información de Mercado y Ejecución de Órdenes
Un EA es inútil sin dos cosas: acceso a los datos del mercado y la capacidad de ejecutar operaciones. MQL5 hace que ambas sean sorprendentemente sencillas.
Obteniendo Datos de Mercado en Tiempo Real
Antes de poder tomar una decisión, necesitas información. MQL5 proporciona un conjunto de funciones integradas para obtener cualquier dato de mercado que necesites.

- Obtener Precios Bid/Ask: Usa
SymbolInfoDouble()para obtener los precios actuales. - Acceder a Datos de Barras Históricas: ¿Necesitas el máximo de la última vela? ¿O el cierre de la vela de hace 3 días? Las funciones
i...()son tu herramienta.
Consejo Profesional: En MQL5, la barra
0es la barra actual, en formación. La barra1es la barra completada más reciente. ¡Este es un punto de confusión común para los nuevos programadores de MQL5!
Ejecutando Órdenes de Mercado con OrderSend
Una vez que tu lógica confirma una condición de entrada, es hora de realizar una operación. La función principal para esto es OrderSend(). Aunque parece compleja con muchos parámetros, te acostumbrarás rápidamente a la estructura. Primero debes rellenar una estructura especial MqlTradeRequest.
Aquí tienes un desglose simplificado para una orden de compra a mercado:
// 1. Incluir la librería Trade
#include <Trade\Trade.mqh>
// 2. Crear un objeto de trade
CTrade trade;
// Dentro de tu función OnTick()...
// 3. Configurar los parámetros de la operación
double lots = 0.01;
double price = SymbolInfoDouble(_Symbol, SYMBOL_ASK); // Comprar al precio Ask
double stopLoss = price - 500 * _Point; // SL de 500 puntos
double takeProfit = price + 1000 * _Point; // TP de 1000 puntos
// 4. Ejecutar la operación
trade.Buy(lots, _Symbol, price, stopLoss, takeProfit, "My EA Buy");Los parámetros clave a entender son:
- Volume: El tamaño del lote de tu operación.
- Symbol: El par de divisas o activo a operar.
- Price: El precio al que se ejecutará.
- Stop Loss & Take Profit: Tus niveles de gestión de riesgos.
- Magic Number: Un ID único para las operaciones de tu EA, crucial para gestionar múltiples EAs.
Para una inmersión profunda en todas sus capacidades, la documentación oficial de MQL5 para los métodos de CTrade es un recurso excelente.
Implementando la Comprobación Básica de Errores en Operaciones
¿Qué pasa si la operación falla? Tu conexión podría caerse, o podrías no tener fondos suficientes. Es crucial comprobar si la orden tuvo éxito.
Después de llamar a una función de trading como trade.Buy(), puedes verificar el resultado:
if(trade.ResultCode() == TRADE_RETCODE_DONE)
{
Print("Orden de compra realizada con éxito!");
}
else
{
Print("OrderSend falló. Código de error: ", trade.ResultCode());
}Esta simple comprobación evita que tu EA asuma que se realizó una operación cuando no fue así, lo cual es una parte crítica de los sistemas automatizados robustos.
Programa tu Primer EA: Construyendo una Lógica de Trading Simple
La teoría es genial, pero pongámosla en práctica. Vamos a construir un Asesor Experto completo y funcional con una estrategia muy simple. Esto unirá todo lo que hemos aprendido hasta ahora.
Diseñando una Estrategia Automatizada Simple
Nuestra estrategia será sencilla para demostrar los conceptos básicos:
- Instrumento: Cualquier par de forex (p. ej., EUR/USD).
- Condición de Entrada: Si el precio
Askactual cruza por encima delHighde la vela cerrada anterior, colocaremos una orden deCOMPRA.

- Gestión de Posiciones: El EA solo abrirá una operación a la vez. No colocará una nueva operación si ya hay una abierta.
- Gestión de Riesgos: Cada operación tendrá un Stop Loss fijo de 50 pips y un Take Profit de 100 pips.
Esta lógica es simple, pero es una base perfecta. La misma estructura se puede utilizar para estrategias más complejas, como las utilizadas en el trading del US30 o incluso para activos volátiles.
Implementando la Lógica dentro de OnTick()
Recuerda, la función OnTick() es donde ocurre toda la acción. Cada vez que llega un nuevo tick de precio, nuestro EA ejecutará esta lista de verificación:
- ¿Hay alguna posición abierta? Si es así, no hacer nada y esperar.
- Si no, obtener el
Highde la barra anterior (barra #1). - Obtener el precio
Askactual. - ¿Es el precio
Askactual mayor que elHighde la barra anterior? - Si es así, ejecutar una orden de
COMPRAcon nuestro SL y TP predefinidos.
Poniéndolo Todo Junto: Un Ejemplo de Código Práctico
Aquí está el código completo y comentado para nuestro EA simple. Puedes copiar y pegar esto directamente en MetaEditor.
// Include the Trade library for easy order execution
#include <Trade\Trade.mqh>
// Create an instance of the CTrade class
CTrade trade;
//--- Expert initialization function
int OnInit()
{
// Print a message to the Experts tab to confirm the EA has started
Print("MyFirstEA has been initialized.");
return(INIT_SUCCEEDED);
}
//--- Expert tick function (runs on every new price tick)
void OnTick()
{
// --- STEP 1: Check if a position is already open ---
if(PositionsTotal() > 0)
{
return; // If yes, exit the OnTick function. We only want one trade at a time.
}
// --- STEP 2: Get market data ---
// Get the high of the most recently completed bar (index 1)
double prevHigh = iHigh(_Symbol, _Period, 1);
// Get the current asking price
double currentAsk = SymbolInfoDouble(_Symbol, SYMBOL_ASK);
// --- STEP 3: Check our entry condition ---
if(currentAsk > prevHigh)
{
// --- STEP 4: If condition is met, set up and execute the trade ---
double lotSize = 0.01;
double stopLoss = currentAsk - 500 * _Point; // 50 pips SL (500 points)
double takeProfit = currentAsk + 1000 * _Point; // 100 pips TP (1000 points)
// Execute the buy order
trade.Buy(lotSize, _Symbol, currentAsk, stopLoss, takeProfit, "MyFirstEA Buy");
}
}
//--- Expert deinitialization function
void OnDeinit(const int reason)
{
Print("MyFirstEA has been removed.");
}Una vez que hayas pegado este código, haz clic en el botón 'Compilar' en MetaEditor. Si no hay errores, ¡tu EA está listo para ser probado!
Valida y Protege: Backtesting, Depuración y Gestión de Riesgos
Escribir el código es solo la mitad de la batalla. Un automatizador profesional pasa la mayor parte de su tiempo probando, depurando y refinando. Las herramientas integradas de MT5 hacen que este proceso sea increíblemente potente.
Haciendo Backtesting de tu EA con el Probador de Estrategias
Antes de siquiera pensar en ejecutar tu EA en una cuenta real, debes hacerle un backtesting. El Probador de Estrategias simula el rendimiento de tu EA en datos de precios históricos.
- En tu terminal de MT5, ve a
Ver > Probador de Estrategiaso presionaCtrl+R. - En la pestaña 'Ajustes', selecciona tu EA recién compilado.
- Elige el símbolo (p. ej., EURUSD), el marco de tiempo (p. ej., H1) y el rango de fechas que deseas probar.
- Establece tu depósito inicial y apalancamiento.
- Haz clic en el botón verde 'Iniciar'.
Una vez completado, haz clic en la pestaña 'Backtest' para ver los resultados. Verás un gráfico de tu curva de capital y métricas clave como:
- Beneficio Neto Total: La ganancia o pérdida final.

- Factor de Beneficio: Beneficio bruto dividido por pérdida bruta. Un valor > 1 es rentable.
- Drawdown Máximo: La mayor caída de pico a valle en el capital de tu cuenta. Entender el drawdown es crucial para la evaluación de riesgos.
- Operaciones Totales: El número de operaciones ejecutadas.
El backtesting te permite ver rápidamente si tu lógica principal tiene algún mérito antes de invertir más tiempo en ella.
Técnicas de Depuración en MetaEditor
¿Qué sucede cuando tu EA no se comporta como esperabas? Es hora de depurar.
- Usando
Print(): Esta es la forma más simple de depuración. Como hicimos en nuestro ejemplo, puedes usar la funciónPrint()para mostrar el valor de las variables o mensajes en la pestaña 'Expertos' del terminal de MT5. Esto te ayuda a ver lo que tu EA está 'pensando' en tiempo real. - Estableciendo Puntos de Ruptura: Para problemas más complejos, puedes establecer un punto de ruptura haciendo clic en el margen gris junto a una línea de código en MetaEditor. Cuando ejecutes el EA en modo de depuración, se detendrá en esta línea, permitiéndote inspeccionar los valores de todas las variables en ese momento exacto.
Gestión de Riesgos Esencial para el Trading Automatizado
Nunca olvides que un EA es una herramienta, y solo será tan bueno como los parámetros de riesgo que le des. La automatización sin gestión de riesgos es una receta para el desastre.
- Stop-Loss y Take-Profit: Como hicimos en nuestro EA, siempre define tus niveles de SL y TP cuando realices una operación. Esta es tu principal red de seguridad.
- Tamaño del Lote: Nuestro ejemplo usó un tamaño de lote fijo (
0.01). Un enfoque más avanzado es calcular el tamaño del lote basándose en un porcentaje del saldo de tu cuenta, asegurando que arriesgues el mismo porcentaje en cada operación. - Cuidado con la Sobreoptimización: Es tentador ajustar los parámetros de tu EA hasta que muestre resultados de backtesting perfectos. Esto se llama 'ajuste de curva' y a menudo conduce a un bajo rendimiento en vivo porque has adaptado la estrategia de manera demasiado perfecta a los datos pasados. Siempre prueba en datos fuera de la muestra para validar tus resultados.
Al combinar un backtesting robusto con sólidos principios de riesgo, puedes construir EAs que no solo funcionen bien, sino que también protejan tu capital. Estos principios son universales, ya sea que estés automatizando una estrategia para el S&P 500 o un simple par de forex.
Acabas de dar un paso significativo en tu viaje de trading, pasando de la ejecución manual al poderoso mundo de las estrategias automatizadas. Hemos cubierto los fundamentos de MQL5, desde la configuración de tu entorno de desarrollo y la comprensión de la sintaxis básica hasta el acceso a datos de mercado, la colocación de órdenes e incluso la construcción de tu primer Asesor Experto básico. Ahora comprendes los inmensos beneficios de los EAs: eliminar la emoción, garantizar la ejecución 24/5 y aprovechar un backtesting robusto. El poder de automatizar tu trading, de transformar tus ideas en acciones disciplinadas y consistentes, está ahora en tus manos. Esto es solo el comienzo de lo que puedes lograr con MQL5. Continúa experimentando, refinando y construyendo sobre esta base.
¡Comienza a programar tu primer Asesor Experto en MT5 hoy mismo! Descarga MetaTrader 5, abre MetaEditor y empieza a experimentar con los conceptos aprendidos en esta guía. No te detengas en lo básico: modifica el ejemplo, prueba nuevas ideas y explora el vasto potencial de MQL5. ¡Comparte tu progreso y preguntas con la comunidad de FXNX para acelerar tu aprendizaje!
Preguntas Frecuentes
¿Cuál es la principal diferencia entre MQL4 y MQL5?
MQL5 es un lenguaje de programación más avanzado y orientado a objetos en comparación con MQL4. Ofrece un rendimiento superior en el Probador de Estrategias, permite realizar pruebas en múltiples divisas simultáneamente y tiene un enfoque más estructurado para la ejecución de operaciones, lo que lo hace más robusto para construir EAs complejos.
¿Necesito ser un programador experto para construir un Asesor Experto en MT5?
No, no necesitas ser un desarrollador de software profesional. MQL5 está diseñado específicamente para el trading. Con una comprensión de la lógica de programación básica como variables, sentencias 'if' y funciones, como se muestra en esta guía, puedes comenzar a construir Asesores Expertos funcionales y efectivos.
¿Puedo ejecutar mi Asesor Experto 24/7 sin dejar mi PC encendido?
Sí, esto se hace típicamente usando un Servidor Privado Virtual (VPS). Un VPS es un ordenador remoto que siempre está encendido y conectado a internet. Puedes instalar MT5 en un VPS y dejar tu EA funcionando ininterrumpidamente, asegurando que nunca se pierda una operación, independientemente del estado de tu PC local o de tu conexión a internet.
¿Es posible perder más de mi depósito con un EA?
Aunque los EAs automatizan el trading, tu riesgo sigue siendo gestionado por las políticas de tu bróker y los parámetros que establezcas. Con brókeres de buena reputación, normalmente tienes protección contra saldo negativo. Sin embargo, es crucial implementar una gestión de riesgos adecuada en tu EA, como el uso de stop-losses y un tamaño de lote apropiado, para prevenir pérdidas significativas.
¿Listo para operar?
Únete a miles de traders en NX One. Spreads de 0.0, 500+ instrumentos.
Sobre el Autor

Raj Krishnamurthy
Director de InvestigaciónRaj Krishnamurthy serves as Head of Market Research at FXNX, bringing over 12 years of trading floor experience across Mumbai and Singapore. He has worked at some of Asia's most prestigious investment banks and specializes in Asian currency markets, carry trade strategies, and central bank policy analysis. Raj holds a degree in Economics from the Indian Institute of Technology (IIT) Delhi and a CFA charter. His articles are valued for their deep institutional insight and forward-looking market analysis.
Traducido por
Camila Ríos es Especialista Junior de Contenido Fintech en FXNX. Estudiante de Economía en la Universidad de los Andes en Bogotá, Camila realiza su pasantía en FXNX para acercar los recursos de trading en inglés al mundo hispanohablante. Su formación en fintech latinoamericano y su habilidad bilingüe natural hacen que sus traducciones sean precisas y culturalmente relevantes para traders en toda América Latina y España.