Guest

Cómo Crear un Expert Advisor en MQL5 para MT5 desde Cero (2026)

Cómo Crear un Expert Advisor en MQL5 para MT5 desde Cero (2026)

 

Si alguna vez has mirado una gráfica de Forex a las 2 de la madrugada esperando la señal perfecta, ya sabes por qué los algoritmos existen. Los Expert Advisors (EAs) no se cansan, no tienen miedo y no cometen errores emocionales. En esta guía vas a aprender a construir uno desde cero en MQL5 para MetaTrader 5, incluso si nunca has programado para trading antes.

¿Qué es un Expert Advisor y por qué usar MT5 en 2026?

Un Expert Advisor es un programa que opera automáticamente dentro de MetaTrader, siguiendo reglas definidas por código. Detecta condiciones en el mercado, abre posiciones, gestiona el riesgo y cierra operaciones sin intervención humana.

MetaTrader 5 supera a MT4 en varios aspectos clave:

Soporta múltiples tipos de activos: Forex, acciones, futuros y criptomonedas

El Strategy Tester de MT5 usa backtesting multi-hilo real tick, mucho más preciso

MQL5 es orientado a objetos, lo que permite EAs más robustos y mantenibles

Acceso nativo a datos históricos de alta calidad desde el Market de MQL5

Integración con Python desde MT5 build 2494+ para modelos de machine learning

Si todavía estás en MT4, 2026 es el año para migrar. MetaQuotes ha reducido soporte oficial a MT4 y los brokers de primer nivel están priorizando MT5.

Estructura Base de un EA en MQL5

Todo Expert Advisor en MQL5 tiene tres funciones principales. Entender qué hace cada una es el primer paso antes de escribir una sola línea de lógica de trading.

//+------------------------------------------------------------------+
//| Expert Advisor Base — HydraBlack Template                        |
//+------------------------------------------------------------------+
#property copyright "HydraBlack Market"
#property version   "1.00"
// Parámetros de entrada configurables desde MT5
input double LotSize       = 0.1;   // Tamaño del lote
input int    StopLoss      = 50;    // Stop Loss en puntos
input int    TakeProfit    = 100;   // Take Profit en puntos
input int    MAPeriod      = 20;    // Período de la media móvil
//--- OnInit: se ejecuta una vez al cargar el EA
int OnInit() {
  Print("EA inicializado correctamente.");
  return(INIT_SUCCEEDED);
}
//--- OnDeinit: se ejecuta al remover el EA
void OnDeinit(const int reason) {
  Print("EA removido. Razón: ", reason);
}
//--- OnTick: se ejecuta en cada nuevo tick del mercado
void OnTick() {
  // Aquí va toda la lógica de trading
}


 OnInit() — Se ejecuta una sola vez al iniciar. Aquí validas parámetros e inicializas indicadores.
OnTick() — El corazón del EA. Se ejecuta en cada movimiento de precio. Toda la lógica de entrada y salida vive aquí.
OnDeinit() — Limpieza al cerrar. Libera memoria e indicadores dinámicos.

Implementando una Estrategia de Cruce de Medias Móviles

El cruce de medias móviles es la estrategia más enseñada del mundo algorítmico, y con razón: es simple, visual y permite entender todos los conceptos base antes de implementar algo más complejo como SMC o HFT.

La lógica es:

Cuando la MA rápida (10 períodos) cruza hacia arriba la MA lenta (50 períodos) → comprar

Cuando la MA rápida cruza hacia abajovender

void OnTick() {
  // Obtener valores de las dos medias móviles
  double maRapida = iMA(_Symbol, PERIOD_CURRENT, 10, 0, MODE_EMA, PRICE_CLOSE);
  double maLenta  = iMA(_Symbol, PERIOD_CURRENT, 50, 0, MODE_EMA, PRICE_CLOSE);
  double maRapidaAnterior = iMA(_Symbol, PERIOD_CURRENT, 10, 0, MODE_EMA, PRICE_CLOSE);
  double maLentaAnterior  = iMA(_Symbol, PERIOD_CURRENT, 50, 0, MODE_EMA, PRICE_CLOSE);
  // Condición de compra: cruce alcista
  if (maRapida > maLenta && maRapidaAnterior <= maLentaAnterior) {
     AbrirOrden(ORDER_TYPE_BUY);
  }
  // Condición de venta: cruce bajista
  if (maRapida < maLenta && maRapidaAnterior >= maLentaAnterior) {
     AbrirOrden(ORDER_TYPE_SELL);
  }
}
void AbrirOrden(ENUM_ORDER_TYPE tipo) {
  MqlTradeRequest request = {};
  MqlTradeResult  result  = {};
  request.action   = TRADE_ACTION_DEAL;
  request.symbol   = _Symbol;
  request.volume   = LotSize;
  request.type     = tipo;
  request.price    = (tipo == ORDER_TYPE_BUY) ? SymbolInfoDouble(_Symbol, SYMBOL_ASK)
                                               : SymbolInfoDouble(_Symbol, SYMBOL_BID);
  request.sl       = request.price - StopLoss * _Point * (tipo == ORDER_TYPE_BUY ? 1 : -1);
  request.tp       = request.price + TakeProfit * _Point * (tipo == ORDER_TYPE_BUY ? 1 : -1);
  request.deviation = 10;
  request.magic    = 123456;
  request.comment  = "HydraBlack EA v1";
  OrderSend(request, result);
  if (result.retcode != TRADE_RETCODE_DONE) {
     Print("Error al enviar orden: ", result.retcode);
  }
}

⚠️ Nota importante: Este código es educativo. Antes de operar en cuenta real, siempre realiza backtesting exhaustivo y pruebas en cuenta demo.

Backtesting Real en el Strategy Tester de MT5

El backtesting es donde la mayoría de traders principiantes falla: usan datos de baja calidad y obtienen resultados irreales. Así se hace correctamente.

Configuración recomendada en el Strategy Tester:

ParámetroValor recomendado
ModeloEvery tick based on real ticks
PeriodoMínimo 1 año de datos
Depósito inicialEl que usarás en real
ApalancamientoEl de tu broker real
OptimizaciónSlow complete algorithm

Métricas clave que debes revisar:

Profit Factor → Debe ser mayor a 1.5 para ser viable

Max Drawdown → No debe superar el 20% de tu capital

Win Rate → Un 40% con buen RR (1:2) es más que suficiente

Sharpe Ratio → Por encima de 1.0 indica estrategia robusta

Recovery Factor → Mayor a 3 indica buena recuperación ante pérdidas

Si el EA tiene un Profit Factor de 3.0 en backtesting pero 0.8 en demo, tienes overfitting. La solución: reduce los parámetros optimizados y usa Walk-Forward Testing.


Gestión de Riesgo: Lo Que Separa un EA Profesional de uno Amateur

El 90% de los EAs que fracasan no tienen mala lógica de entrada. Tienen mala gestión de riesgo. Un solo trade sin stop-loss puede destruir una cuenta.

Regla del 1-2%: Nunca arriesgues más del 2% de tu capital en una sola operación.

double CalcularLote(double riesgoPorcentaje, int stopLossPuntos) {
  double capital      = AccountInfoDouble(ACCOUNT_BALANCE);
  double riesgoDinero = capital * (riesgoPorcentaje / 100.0);
  double valorPunto   = SymbolInfoDouble(_Symbol, SYMBOL_TRADE_TICK_VALUE);
  double lote         = riesgoDinero / (stopLossPuntos * valorPunto);
  // Respetar límites del broker
  double loteMin = SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_MIN);
  double loteMax = SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_MAX);
  lote = MathMax(loteMin, MathMin(loteMax, NormalizeDouble(lote, 2)));
  return lote;
}

Con esta función, si tienes $10,000 y arriesgas el 1% con un SL de 50 puntos, el EA calculará automáticamente el lote correcto sin importar el par que opere.


Errores Comunes al Programar Expert Advisors

Aprender de los errores más frecuentes te ahorrará semanas de debugging:

No validar el número de posiciones abiertas → El EA puede abrir decenas de operaciones en el mismo tick

Usar Ask y Bid de forma incorrecta → Comprar en Bid o vender en Ask genera errores inmediatos

Ignorar el retcode de OrderSend() → Un error silencioso puede significar que tu EA "opera" sin ejecutar nada

Optimizar en exceso (curve fitting) → Un EA con 15 parámetros optimizados casi siempre falla en forward testing

No manejar el spread variable → En pares exóticos o noticias macroeconómicas, el spread puede destruir tu lógica de SL/TP

Backtesting sin datos tick reales → MT5 permite descargar tick data real; úsalos siempre


Herramientas y Recursos Recomendados

Para ir más allá de este tutorial y construir EAs de nivel profesional:

MetaEditor — IDE oficial incluido con MT5, con debugger y profiler

MQL5.community — Documentación oficial y foro técnico más completo del ecosistema MT5

Python + MetaTrader5 library — Para conectar modelos LSTM o de ML directamente a MT5

FXBlue Trade Simulator — Alternativa visual para testear estrategias manualmente

HydraBlack Market — Scripts, EAs y herramientas MQL5 listos para producción, creados por developers especializados


¿Listo para el Siguiente Nivel?

Programar tu propio EA desde cero es la mejor forma de entender qué funciona y qué no en el trading algorítmico. Pero si quieres saltarte semanas de desarrollo y tener una base profesional de inmediato, en HydraBlack Market encontrarás Expert Advisors, scripts MQL5 y herramientas cuantitativas creadas por developers especializados en trading algorítmico.

Explora los productos de Quant Trading en HydraBlack


 

Join the Discussion (0)