Introducción a MQL5 y al entorno de desarrollo

Uno de los cambios más importantes de MQL5 en su reencarnación en MetaTrader 5 es que es compatible con el concepto de programación orientada a objetos (POO). En el momento de su aparición, el MQL4 (el lenguaje de MetaTrader 4) precedente se comparaba de forma convencional con el lenguaje de programación C, mientras que es más razonable buscar similitudes entre MQL5 y C++. Para ser justos, hay que señalar que hoy en día todas las herramientas de programación orientada a objetos que en origen sólo habían estado disponibles en MQL5 se han transferido a MQL4. Sin embargo, los usuarios que apenas saben programar siguen percibiendo la programación orientada a objetos como algo demasiado complicado.

En cierto sentido, este libro pretende hacer sencillas las cosas complejas. No sustituye, sino que se añade a la Referencia del Lenguaje MQL5 que se suministra con el terminal y que también está disponible en el sitio web mql5.com.

En este libro vamos a hablarle de forma coherente de todos los componentes y técnicas de programación en MQL5, paso a paso para que cada iteración sea clara y la tecnología POO vaya desplegando poco a poco su potencial, que es especialmente notable, como pasa con cualquier herramienta potente cuando se utiliza de forma adecuada y sensata. Como resultado, los desarrolladores de programas en MQL podrán elegir el estilo de programación que prefieran para una tarea concreta, es decir, no sólo el orientado a objetos, sino también el «antiguo» de procedimientos, así como utilizar diversas combinaciones de los mismos.

Los usuarios del terminal de trading pueden clasificarse cómodamente en «programadores» (aquellos que ya tienen cierta experiencia en programación en al menos un lenguaje) y «no programadores» (traders «puros» interesados en la capacidad de personalización del terminal mediante MQL5). Los primeros pueden, opcionalmente, saltarse la primera y la segunda parte de este libro, en las que se describen los conceptos básicos del lenguaje, y pasar directamente a descubrir las API específicas (interfaces de programación de aplicaciones, por sus siglas en inglés) integradas en MetaTrader 5. Para estos últimos, se recomienda una lectura progresiva.

Entre la categoría de «programadores», los que saben C++ parten con ventaja, ya que MQL5 y C++ son similares. Sin embargo, esta «medalla» tiene su reverso. La cuestión es que MQL5 no concuerda completamente con C++ (especialmente cuando se compara con los estándares recientes). Por tanto, los intentos de escribir una u otra estructura por hábito «como en los pluses» se verán interrumpidos con frecuencia por errores inesperados del compilador. Teniendo en cuenta elementos específicos del lenguaje, haremos todo lo posible por señalar estas diferencias.

Análisis técnico, ejecución de órdenes de trading o integración con fuentes de datos externas: todas estas funciones están a disposición de los usuarios del terminal tanto desde la interfaz de usuario como a través de las herramientas de software integradas en MQL5.

Dado que los programas en MQL5 deben realizar diferentes funciones, hay algunos tipos de programas especializados admitidos en MetaTrader 5. Se trata de una técnica habitual en muchos sistemas de software. Por ejemplo, en Windows, además de los programas habituales de ventanas, existen programas y servicios basados en línea de comandos.

Los siguientes tipos de programa están disponibles en MQL5:

  • Indicadores: programas destinados a mostrar gráficamente arrays de datos calculados mediante una fórmula determinada, normalmente basada en la serie de cotizaciones;
  • Asesores Expertos: programas para automatizar total o parcialmente las operaciones de trading;
  • Scripts: programas destinados a realizar una acción cada vez;
  • Servicios: programas para realizar acciones permanentes en segundo plano.

Más adelante hablaremos en detalle de las finalidades y particularidades de cada tipo. Es importante señalar ahora que todos ellos se crean en MQL5 y tienen mucho en común. Por lo tanto, empezaremos descubriendo las características comunes y poco a poco iremos conociendo la especificidad de cada tipo.

La característica técnica esencial de MetaTrader consiste en ejercer todo el control en el terminal del cliente, mientras que las órdenes iniciadas en él se envían al servidor. En otras palabras, las aplicaciones basadas en MQL sólo pueden funcionar dentro del terminal cliente, ya que la mayoría de ellas requieren una conexión «en vivo» con el servidor para funcionar correctamente. No hay aplicaciones instaladas en el servidor. El servidor se limita a procesar las órdenes recibidas del terminal de cliente y devuelve los cambios en el entorno de trading. Estos cambios también están disponibles para los programas en MQL5.

La mayoría de los tipos de programas en MQL5 se ejecutan en el contexto del gráfico, es decir, para lanzar un programa, hay que «lanzarlo» al gráfico deseado. La excepción es sólo un tipo especial, es decir, los servicios: estos están pensados para funcionar en segundo plano, sin fijarse al gráfico.

Recordamos que todos los programas en MQL5 están dentro de la carpeta de trabajo de MetaTrader 5, en la carpeta anidada que lleva por nombre /MQL5/<type>, donde <type> es, respectivamente:

  • Indicators
  • Experts
  • Scripts
  • Services

Según la técnica de instalación de MetaTrader 5, la ruta a la carpeta de trabajo puede ser diferente (en concreto, con los derechos de usuario limitados en Windows, en un modo normal o portátil). Por ejemplo, puede ser:

C:/Program Files/MetaTrader 5/

o

C:/Users/<username>/AppData/Roaming/MetaQuotes/Terminal/<instance_id>/

El usuario puede saber dónde se encuentra exactamente esta carpeta ejecutando el comando Archivo -> Abrir carpeta de datos (disponible tanto en el terminal como en el editor). Además, cuando cree un nuevo programa, no necesita pensar en buscar la carpeta correcta gracias al uso del Asistente MQL integrado en el editor. Se invoca mediante el comando Archivo -> Nuevo y permite seleccionar el tipo de programa en MQL5 requerido. El archivo de texto correspondiente, que contiene una plantilla de código fuente, se creará automáticamente cuando sea necesario una vez completado el máster y, a continuación, se abrirá para su edición.

En la carpeta MQL5 hay otras carpetas anidadas, junto con las anteriores, y también directamente relacionadas con la programación en MQL5, pero nos referiremos a ellas más adelante.