MQL5 es un lenguaje de programación de alto nivel que se utiliza para desarrollar indicadores personalizados, asesores expertos (EA) y otras estrategias de trading automatizado para la plataforma de trading MetaTrader 5. Estas son algunas de las características principales del lenguaje MQL5:
- Programación orientada a objetos: MQL5 es un lenguaje orientado a objetos, es decir, se basa en el concepto de objetos que contienen tanto datos como métodos. Esto facilita una programación más sencilla y eficiente, además de una mejor organización y reutilización del código.
- Entorno de desarrollo integrado: MQL5 incluye un entorno de desarrollo integrado (IDE) con editor de código, compilador y depurador. Esto facilita escribir y probar código directamente dentro de la plataforma MetaTrader 5.
- Amplia biblioteca: MQL5 cuenta con una amplia biblioteca de funciones e indicadores integrados que pueden utilizarse para desarrollar estrategias de trading. Además, hay muchas bibliotecas de terceros disponibles que se pueden integrar en los programas MQL5.
- Programación basada en eventos: MQL5 utiliza un modelo de programación basado en eventos, lo que significa que los programas se ejecutan en respuesta a eventos específicos, como cambios de precio, ejecuciones de órdenes o eventos del temporizador.
- Multihilo: MQL5 permite la programación multihilo, es decir, se pueden crear varios hilos para ejecutar simultáneamente distintas partes de un programa. Esto puede ser útil para optimizar el rendimiento y gestionar estrategias de trading complejas.
- Compatibilidad con múltiples tipos de datos: MQL5 admite una amplia variedad de tipos de datos, entre ellos enteros, números de coma flotante, cadenas de texto y arreglos. Además, incorpora soporte para trabajar con datos financieros, como datos de precios y de volumen.
Este es un ejemplo sencillo de un programa en MQL5 que calcula la media móvil de un par de divisas e imprime el resultado en la ventana del terminal:
// --- input parameters
input int Period = 20; // Period of the moving average
input ENUM_APPLIED_PRICE PriceType = PRICE_CLOSE; // Applied price type
// --- global variables
double MovingAverage; // Moving average value
// --- initialization function
int OnInit()
{
// Initialize the MovingAverage variable
MovingAverage = 0.0;
return(INIT_SUCCEEDED);
}
// --- main function
void OnTick()
{
// Calculate the moving average
MovingAverage = iMA(_Symbol, 0, Period, 0, PriceType, MODE_SMA, 0);
// Print the result to the terminal window
Print("Moving Average: ", MovingAverage);
}