Cómo programar un Expert Advisor con MQL4

En este capítulo veremos cómo programar un Expert Advisor con MQL4 sin conocimientos de programación, un código que le permitirá crear EA útiles tanto para el trading con este código como para entender los demás que vaya a utilizar. Esta es una lección destinada a principiantes, por lo que no vamos a utilizar ejemplos complicados. Ente otras cosas, explicaremos la estructura básica de un Asesor Experto que se puede utilizar en la plataforma de trading MetaTrader.

Antes de hablar de la estructura de un EA explicaremos brevemente algunos conceptos básicos relacionados con la programación en MQL4 y otros conceptos en general.

Para comenzar lance su plataforma MetaTrader 4, y si no tiene una, haciendo clic aquí abrirá una cuenta gratuita demo MT4 para EA.

Conceptos básicos para programar Expert Advisor con MQL4

En primer lugar, vamos a comentar el código, que es esencial explicar para poder seguir la lógica que se encuentra a la base en cualquier momento.

  • Tick: el evento principal en los mercados financieros es la variación en los precios. Por eso el tick es un evento importante que hace funcionar los mecanismos básicos de los programas MQL4. La mayoría de los programas ejecutan el código cada nuevo tick producido o enviado por el broker.
  • Constantes y variables: como lo sugiere el mismo término, una constante es algo continuo, un valor fijo. Por otro lado, una variable a diferencia de una constante es un objeto en el código de programación que puede cambiar su contenido. Es imposible escribir un programa sin utilizar objetos inmutables (constantes) y/u objetos que pueden modificarse durante la ejecución del programa (variables).

Cómo declarar una variable de un Expert Advisor

¿Cómo declarar una variable para crear un Expert Advisor con MQL4? Es fundamental saber cómo inicializarla, ya que una elección errónea del tipo de variable puede ralentizar el programa o incluso provocar un mal funcionamiento.

En MT4 podemos encontrar los siguientes tipos

  • int: para declarar variables enteras
  • double: para declarar números reales
  • bool: para declarar valores lógicos
  • string: valores de tipo cadena
  • color: valores de tipo color
  • datetime: valores de fecha y hora.

Lo primero que debe hacerse con cualquier variable dentro de un programa es la declaración. Al declarar una variable, siempre debe especificarse su tipo. La inicialización de variables indica la asignación de un valor.

Todas las variables pueden inicializarse. Si no hay un valor inicial explícitamente establecido, la variable se inicializa a cero (0) o, si la variable es de tipo cadena, se inicializa como una cadena de caracteres vacía.

Ahora vamos a adentrarnos en la estructura o esqueleto de nuestro Asesor Experto, ya que conocemos los términos más importantes.

Asesor Experto y su estructura

Un Asesor Experto (EA) es un programa que se escribe en MQL, donde se especifica las condiciones para ejecutar una operación de mercado o mantenerse al margen de ella.

Básicamente, la estructura de un Asesor Experto puede estar formada por un gran número de bloques, dependiendo del objetivo que se quiera conseguir. Por tanto, para facilitar su comprensión haremos un ejemplo práctico generado en MetaEditor.

Programar Expert Advisor con MQL4

El EA completo se puede dividir visualmente en 4 partes, cada una de las cuales es responsable de una determinada parte del trabajo que deberá realizar. Permítannos explicarnos utilizando la imagen de arriba. Tenemos un código de Asesor Experto “vacío”, un tipo de plantilla de Asesor Experto que se tendrá que llenar más tarde.

A continuación, describiremos brevemente la estructura general del código de un Expert Advisor.

La estructura general del código de un Asesor Experto

Las primeras cinco líneas (líneas 1 a 5) representan comentarios que contienen:

  • el nombre del EA (nombre del archivo)
  • el nombre del fabricante
  • su sitio web

Aquí puede escribir cualquier cosa. Este texto no se mostrará en ninguna parte e incluso puede ignorarse. La información que contiene solo está dirigida al programador. Este texto le permite, como acabamos de decir, mantener una secuencia lógica que puede ser útil cuando vaya a revisar la programación después de un tiempo, o que sus posibles colaboradores puedan consultar.

Las siguientes líneas representan el bloque de parámetros. En ellas podrá introducir todos aquellos parámetros que caracterizan el funcionamiento del EA. Por ejemplo, parámetros numéricos, variables internas y externas, etc.

Programar Expert Advisor con MQL4 estructura general

El bloque relativo a la función OnInit o init. Esta función no requiere la introducción de ningún parámetro, pero devuelve un valor de inicialización de los parámetros declarados en el bloque anterior. Si un programa contiene la descripción de la función especial OnInit, ésta se ejecutará al iniciarse el programa. Si no hay una función OnInit, no se ejecutará ninguna acción al iniciarse el programa.

La función OnDeinit o deinit. Esta función es la siguiente, y tiene un parámetro que especifica la causa del cierre del EA. Cuando un inversor elimina un EA de un gráfico, el terminal cliente ejecuta una vez la función especial OnDeinit. La ejecución de esta función es necesaria para la correcta finalización del funcionamiento de un EA. Durante el funcionamiento, por ejemplo, puede crear objetos del gráfico y variables globales. La función puede contener código para eliminar objetos y variables innecesarios. Una vez finalizada la ejecución de OnDeinit, se devuelve el control al cliente terminal.

La última función es OnTick (que sustituye a start). Se puede decir que este bloque es el “cerebro” del EA, por decirlo así, ya que incluye todas las funciones responsables de las operaciones que se ejecutarán en el mercado dependiendo de las condiciones especificadas en él.

No tiene sentido definir la función OnTick dentro de un indicador o script personalizado, porque no se genera un Tick para ellos.

El evento Tick solo se genera para los Asesores Expertos, pero esto no significa que siempre sea necesario definirlo, ya que los Asesores Expertos también podrían funcionar para:

  • eventos relacionados al tiempo, OnTimer (que es generado por el temporizador del sistema solo para Asesores Expertos e indicadores)
  • o para cualquier cambio en el gráfico, OnChartEvent (por ejemplo, puede configurarse para que active una cierta operación cuando se mueve el ratón, etc.).

Programación avanzada de un Expert Advisor

Como hemos mencionado más arriba, la estructura puede ser mucho más compleja y constar de un gran número de bloques, aunque en este capítulo hemos sido breves. En cualquier caso, siempre es útil tener una noción general de los conceptos de programación que pueden permitirle comprender mejor cómo puede transformar en operaciones automáticas lo que realmente ha visto en el gráfico.

Por tanto, la estructura del lenguaje Mql4 no es muy complicada, aunque requiere buena voluntad y estudio y, sobre todo, una base elemental en las dos áreas específicas relacionadas con el trading automático, es decir:

  • los conceptos relativos al análisis técnico en los que suelen basarse los Expert Advisor
  • fundamentos de programación

Y si no tiene intención de empezar desde cero en el estudio de un lenguaje de programación, le recomendamos la lectura de los capítulos sobre cómo crear un Asesor Experto de Mt4 con Builder o cómo crear Expert Advisor con el asistente de Mt5 (para aquellos que operan con esta plataforma) de nuestro curso para crear Expert Advisor de MetaTrader sin programar. Pase al siguiente capítulo:

Capítulo 5: Cómo realizar Backtest de un Expert Advisor en MT4

También le puede interesar el curso cómo operar en MetaTrader 4.

Preguntas Frecuentes

¿Es posible programar un Expert Advisor con MQL4?

Sí, es posible, sin conocimientos de programación, un código que le permitirá crear EA útiles tanto para el trading con este código como para entender los demás que vaya a utilizar.

¿Cómo puede programar un Expert Advisor con MQL4 para MetaTrader?

La estructura del lenguaje Mql4 no es muy complicada, aunque requiere buena voluntad y estudio y, sobre todo, una base elemental en las dos áreas específicas relacionadas con el trading automático, es decir, los conceptos relativos al análisis técnico en los que suelen basarse los Expert Advisor y los fundamentos de programación, aunque no necesariamente requiere ser programador.

Jose Roberto conoce el mundo de los mercados financieros y de los brokers online desde años y actualmente comparte su conocimiento con muchos portales de financia online. Se dedica a la bolsa y al trading online desde 2019, y está especializado en escribir artículos sobre instrumentos financieros y brokers online. Ha escrito numerosos textos dedicados al mundo de los mercados financieros y las criptomonedas.