¡Bienvenido al Tutorial de MQL5!
Este material está diseñado para traders y desarrolladores que ya tienen nociones básicas de programación (variables, bucles, condicionales, etc.). Aunque repasaremos los comandos y estructuras principales de MQL5, el enfoque está en aplicar conceptos prácticos para desarrollar Expert Advisors (EAs), indicadores y scripts.
Si eres completamente nuevo en programación, te recomendamos:
- Consultar la documentación oficial de MQL5 para comprender los fundamentos del lenguaje.
- Practicar con los 60+ ejercicios y ejemplos resueltos de este tutorial, que van desde lo básico hasta lo avanzado.
- Empezar con proyectos simples (como indicadores básicos o scripts de alertas) antes de abordar EAs complejos.
Este tutorial no solo te enseñará a codificar, sino que también te guiará en la implementación de estrategias reales, gestión de riesgos y optimización. ¡Manos a la obra!
¡Importante!
Si en algún momento te sientes perdido, recuerda que la práctica constante y la experimentación son clave en el aprendizaje de MQL5. No dudes en revisar los ejemplos paso a paso y adaptarlos a tus propias estrategias.
¡Esperamos que disfrutes este tutorial y que te conviertas en un experto en MQL5! 🚀
Sumario:
- Sección 1: Introducción a MQL5
- ¿Qué es MQL5?
- Configuración del Entorno de Desarrollo
- Conceptos Fundamentales de Programación
- Sección 2: Fundamentos de Programación en MQL5
- Estructura Básica de un Script en MQL5
- Trabajando con Datos del Mercado
- Gestión de Posiciones y Órdenes
- Manipulación de Símbolos y Cuentas
- Sección 3: Construcción de Estrategias Automatizadas
- Creación de un Expert Advisor Básico
- Optimización de Código
- Pruebas y Backtesting
- Sección 4: Temas Intermedios
- Indicadores Personalizados
- Gestión Avanzada de Riesgos
- Notificaciones y Logs
- Trabajo con Arrays y Matrices
- Sección 5: Mejoras y Herramientas Adicionales
- Uso de Bibliotecas y Scripts Externos
- Integración con Servicios Externos
- Depuración y Mantenimiento
- Sección 6: Caso Práctico Completo
- Desarrollo de un EA Completo
- Publicación y Comercialización
- Anexos
- Recursos Adicionales
- Referencia de Funciones
- Glosario de Términos
Sección 1: Introducción a MQL5
Capítulo 1: ¿Qué es MQL5?
1.1. Definición y Propósito
MQL5 (MetaQuotes Language 5) es un lenguaje de programación diseñado específicamente para desarrollar aplicaciones automatizadas en la plataforma MetaTrader 5, una de las plataformas de trading más populares del mundo. Con MQL5, los traders pueden crear Expert Advisors (EAs), indicadores personalizados y scripts que automatizan sus estrategias de trading, optimizando su tiempo y tomando decisiones basadas en datos precisos.
El propósito principal de MQL5 es permitir a los traders implementar sus ideas comerciales sin necesidad de ser expertos en programación avanzada. Aunque requiere algo de conocimiento técnico, la estructura clara y las herramientas integradas de MetaEditor facilitan el proceso de aprendizaje.
Además, MQL5 cuenta con una comunidad activa de desarrolladores y traders que comparten conocimientos, código y experiencias en foros como MQL5.community . La documentación oficial de MQL5 también es una fuente invaluable para aprender sobre sus funciones y capacidades.
Pregunta para reflexionar: ¿Por qué crees que la automatización del trading es importante para un trader profesional?
1.2. Diferencias entre MQL4 y MQL5
Aunque MQL4 y MQL5 son lenguajes similares, MQL5 introduce mejoras significativas que lo convierten en una opción más potente y versátil. A continuación, destacamos algunas de las principales diferencias:
| Velocidad de ejecución | Menor rendimiento | Mayor velocidad gracias a optimizaciones internas |
| Programación orientada a objetos | No soportada | Soporte completo para POO |
| Compatibilidad multiplataforma | Solo compatible con MetaTrader 4 | Compatible con MetaTrader 4 y 5 |
| Acceso a múltiples símbolos | Limitado | Acceso simultáneo a varios símbolos |
| Funciones avanzadas | Básicas | Funciones adicionales como WebRequest y FileStorage |
Una de las ventajas más importantes de MQL5 es su soporte para programación orientada a objetos (POO), lo que permite reutilizar código y crear programas más modulares y escalables. Por ejemplo, puedes definir clases para encapsular funcionalidades comunes, como la gestión de órdenes o el cálculo de indicadores técnicos.
Ejemplo práctico: Aquí tienes un ejemplo básico de cómo se define una clase en MQL5:
//+------------------------------------------------------------------+
//| Clase para gestionar posiciones |
//+------------------------------------------------------------------+
class PositionManager {
private:
double lotSize;
int stopLoss;
int takeProfit;
public:
// Constructor
PositionManager(double size, int sl, int tp) {
lotSize = size;
stopLoss = sl;
takeProfit = tp;
}
// Método para abrir una posición larga
void OpenBuy(string symbol) {
OrderSend(symbol, OP_BUY, lotSize, SymbolInfoDouble(symbol, SYMBOL_ASK), 0, stopLoss, takeProfit);
}
};
En este ejemplo, creamos una clase PositionManager que encapsula la lógica para abrir posiciones largas. Esto facilita la reutilización del código en diferentes partes de tu EA.
Pregunta para practicar: ¿Cómo podrías modificar esta clase para incluir también la apertura de posiciones cortas?
1.3. Aplicaciones Principales
MQL5 tiene tres tipos principales de aplicaciones que puedes desarrollar:
- Expert Advisors (EAs): Los EAs son programas que automatizan completamente el proceso de trading. Pueden analizar el mercado, generar señales de compra/venta y ejecutar órdenes automáticamente. Por ejemplo, un EA puede estar basado en un cruce de medias móviles:
//+------------------------------------------------------------------+
//| Simple EA basado en cruce de medias móviles |
//+------------------------------------------------------------------+
#property strict
input int FastMA = 10; // Período de la media móvil rápida
input int SlowMA = 50; // Período de la media móvil lenta
double fastMA, slowMA;
//+------------------------------------------------------------------+
//| OnTick - Procesamiento de cada tick |
//+------------------------------------------------------------------+
void OnTick() {
fastMA = iMA(_Symbol, _Period, FastMA, 0, MODE_SMA, PRICE_CLOSE, 0);
slowMA = iMA(_Symbol, _Period, SlowMA, 0, MODE_SMA, PRICE_CLOSE, 0);
if (fastMA > slowMA && PositionsTotal() == 0) {
OrderSend(_Symbol, OP_BUY, 0.1, Ask, 0, 0, 0);
} else if (fastMA < slowMA && PositionsTotal() > 0) {
OrderClose(PositionGetTicket(0), PositionGetInteger(POSITION_VOLUME), Bid, 0, clrNONE);
}
}
Este código verifica si la media móvil rápida cruza por encima de la lenta y abre una posición larga en ese caso.
- Indicadores Personalizados: Los indicadores personalizados te permiten crear tus propios análisis técnicos. Por ejemplo, podrías desarrollar un indicador que combine varias medias móviles y muestre señales visuales.
- Scripts: Los scripts son programas que se ejecutan una sola vez y realizan tareas específicas, como cerrar todas las posiciones abiertas o enviar notificaciones.
Recursos para Aprender MQL5
Para profundizar en MQL5, aquí tienes algunos recursos útiles:
- Documentación Oficial: https://www.mql5.com/es/docs
- Foro Comunitario: https://www.mql5.com/es/forum
- Marketplace de MQL5: Descarga EAs y scripts creados por otros desarrolladores.
Conclusión: MQL5 es una herramienta poderosa para traders que desean automatizar sus estrategias y mejorar su productividad. Al entender sus diferencias con MQL4 y explorar sus aplicaciones principales, puedes comenzar a desarrollar soluciones personalizadas que se adapten a tus necesidades específicas.
Ejercicio final: Intenta escribir un pequeño script que imprima el precio actual del EURUSD en la ventana de resultados. Usa la función Print() para mostrar el valor.
//+------------------------------------------------------------------+
//| Script para imprimir el precio actual del EURUSD |
//+------------------------------------------------------------------+
#property strict
void OnStart() {
// Verificar si EURUSD está disponible en el mercado
if (SymbolExists("EURUSD")) {
// Obtener el precio de Ask (precio de compra) del EURUSD
double askPrice = SymbolInfoDouble("EURUSD", SYMBOL_ASK);
// Obtener el precio de Bid (precio de venta) del EURUSD
double bidPrice = SymbolInfoDouble("EURUSD", SYMBOL_BID);
// Imprimir los precios en la ventana de resultados
Print("Precio de Ask (compra) del EURUSD: ", DoubleToString(askPrice, _Digits));
Print("Precio de Bid (venta) del EURUSD: ", DoubleToString(bidPrice, _Digits));
} else {
// Si el símbolo no está disponible, mostrar un mensaje de error
Print("El símbolo EURUSD no está disponible en este momento.");
}
}
Explicación del Código:
#property strict: Esta directiva asegura que el script cumpla con las reglas estrictas de programación en MQL5, lo que ayuda a evitar errores comunes.OnStart(): Es la función principal que se ejecuta cuando se inicia el script.SymbolExists("EURUSD"): Verifica si el símbolo EURUSD está disponible en el mercado. Esto es útil para evitar errores si el símbolo no está presente en la lista de instrumentos del terminal.SymbolInfoDouble("EURUSD", SYMBOL_ASK)ySymbolInfoDouble("EURUSD", SYMBOL_BID): Estas funciones obtienen el precio de Ask (compra) y Bid (venta) del EURUSD, respectivamente.Print(): Se utiliza para mostrar mensajes en la ventana de resultados. En este caso, mostramos los precios obtenidos.DoubleToString(askPrice, _Digits): Convierte el valor numérico del precio en una cadena formateada con la precisión adecuada (_Digitsindica el número de decimales del símbolo).- Mensaje de Error: Si el símbolo EURUSD no está disponible, se muestra un mensaje informativo.
Cómo Ejecutar el Script:
- Abre MetaEditor desde MetaTrader 5.
- Crea un nuevo archivo de script (
File > New > Script) y pega el código anterior. - Guarda el archivo con un nombre significativo, por ejemplo,
Print_EURUSD_Price. - Compila el script haciendo clic en el botón «Compile» o presionando
F7. - Una vez compilado, ve al terminal MetaTrader 5, selecciona el script en la pestaña «Scripts» y haz doble clic para ejecutarlo.
- Observa la ventana de resultados (
View > Results) para ver el precio actual del EURUSD.
Resultado Esperado:
Si el EURUSD está disponible en tu cuenta y el mercado está abierto, verás un resultado similar al siguiente en la ventana de resultados:
Precio de Ask (compra) del EURUSD: 1.09234
Precio de Bid (venta) del EURUSD: 1.09232
Si el símbolo no está disponible, verás:
El símbolo EURUSD no está disponible en este momento.
Este ejercicio es una excelente manera de comenzar a familiarizarte con la sintaxis básica de MQL5 y cómo interactuar con datos del mercado. ¡Buena suerte!
¡Esperamos que este capítulo te haya proporcionado una base sólida para comenzar tu viaje en MQL5! En el próximo capítulo, exploraremos cómo configurar tu entorno de desarrollo.
