Cómo crear un experto en sólo unos minutos con ayuda de EA Tree: Parte 1

eatree | 19 febrero, 2014


Introducción

El programa EA Tree es el primer instrumento que permite construir el código de un asesor sobre la base del método de esquema de bloques "drag and drop". Se trata de una aplicación Windows que se inicia en su computadora de manera local. Ahora puede crear un código complejo en MQL5 con la ayuda de un cómodo interfaz gráfico.

La creación de asesores en EA Tree se lleva a cabo mediante la construcción de bloques que pueden contener funciones de lenguaje MQL5, indicadores técnicos y personalizados, y valores numéricos. Las salidas de los bloques pueden estar unidas con las entradas de otros bloques, formando un "árbol de bloques". En base al árbol de bloques, el programa EA Tree genera el código fuente del asesor, que después puede ser compilado en la plataforma comercial MetaTrader 5 instalada en su computadora.


Dib. 1. Interfaz gráfico del usuario del programa EA Tree

Dib. 1. Interfaz gráfico del usuario del programa EA Tree

En los siguientes apartados vermos los conceptos básicos que se usan en EA Tree.


1. Conceptos básicos

Los principales elementos del programa son los bloques ("box") y los botones ("buttons").

Los bloques están pensados para representar información. Pueden contener valores de un indicador técnico, de una función matemática, etcétera. Cada bloque tiene botones de entrada y salida. En este ejemplo, el bloque "Add" tiene 3 botones de entrada, designados como "A", "B", "C" y un botón de salida, designado como "OUT".

Cada bloque tiene una designación única, establecida con ayuda de su nombre e índice. En este parámetro, la marca "Add_1" indica que el bloque tiene la denominación "Add", y el índice 1 indica que es el primer bloque en el conjunto.

Dib. 2. Bloque "Add"

Dib. 2. Bloque "Add"

Conexiones de los botones

Los botones de salida de un bloque pueden estar unidos con los botones de entrada de otro bloque en los casos en que ambos tengan el mismo tipo de datos (por ejemplo, que los dos sean del tipo double).

En este caso, unimos el botón "OUT" del bloque "Add_2" con el botón "A" del bloque "If_Else_1".

Dib. 3. Bloques "Add" y "If-Else"

Dib. 3. Bloques "Add" y "If-Else"


2. Bloque "Trade"

En el programa EA Tree, el bloque principal es el bloque "Trade", que tiene varios botones de entrada, los más importantes entre estos últimos son "openLong", "openShort", "closeLong" y "closeShort". Aparte de lo mencionado, el bloque contiene multitud de parámetros comerciales.

Dib. 4. Bloque "Trade"

Dib. 4. Bloque "Trade"


3. Bloque "MM" (MoneyManagement)

Para gestionar el capital, disponemos del bloque "MM", así como de varios botones de entrada. Para llevar a cabo la conexión, hay que conectar el botón de salida "OUT" del bloque "MM" con el botón de entrada "MM" del bloque "Trade".

Dib. 5. Bloques "Trade" y "MM"

Dib. 5. Bloques "Trade" y "MM"


4. Bloques de operaciones lógicas

Los bloques de operaciones lógicas son muy importantes, se usan para comprobar el cumplimiento de las condiciones de mercado; están unidos con los botones "openLong", "openShort", "closeLong" y "closeShort del bloque "Trade", y entre los otros bloques en el esquema.

Bloque "If-Else"

Lógica del bloque "If-Else":

If A operator B then T (botón de salida T=true) else F (botón de salida F=false).

En calidad de operator pueden resultar las operaciones de equiparación "igual a" (equal to), "no igual a" (not equal to), "menor que" (less than), "mayor que" (greater than) y etcétera.

 Dib. 6. Bloque lógico "If-Else"

Dib. 6. Bloque lógico "If-Else"

Bloque lógico "Crossover" (cruzamiento)

Lógica del bloque "Crossover":

If A operator1 B  AND C operator2 D  then T (botón de salida)=true else F (botón de salida)=true.

En calidad de operadores operator1 y operator2 pueden actuar operadores de equiparación, del tipo "igual a" (equal to), "no igual a" (not equal to), "menor que" (less than), "mayor que" (greater than), etcétera. Con la ayuda de los botones "shiftA" y "shiftB" se puede indicar el desplazamiento del índice de los indicadores.

En este ejemplo, la lógica de los bloques sería la siguiente:

Si el valor actual de la línea principal (main) del indicador Stochastic > que el valor actual de la línea de señal (signal) del indicador Stochastic y

el valor anterior de la línea principal (main) del indicador Stochastic > que el valor anterior de la línea de señal (signal) del indicador Stochastic,

entonces T=true y F=false

Dib. 7. Bloques lógicos "Crossover" y "Stochastic"

Dib. 7. Bloques lógicos "Crossover" y "Stochastic"


Bloque lógico "AND"

Lógica del bloque "AND":

If A AND B AND C AND D then OUT(botón de salida)=true

Dib. 8. Bloque "And"

Dib. 8. Bloque "And"

Bloque lógico "OR"

Lógica del bloque "OR":

If (A OR B OR С OR D) then OUT(botón de salida)=true

Dib. 9. Bloque "Or"

Dib. 9. Bloque "Or"


5. Bloques de indicadores técnicos

En el menú "Technical indicators" están disponibles los bloques de muchos indicadores técnicos, tales como MACD y Moving Average.

Bloque del indicador técnico MACD

Dib. 10. Bloque del indicador técnico MACD

Dib. 10. Bloque del indicador técnico MACD

Bloque del indicador técnico MA (Moving Average)

Dib. 11. Bloque del indicador técnico MA (Moving Average)

Dib. 11. Bloque del indicador técnico MA (Moving Average)


6. Indicadores personalizados (Custom Indicators)

Los indicadores personalizados están disponibles a través del panel "Custom Indicators". En el EA Tree sólo se usan indicadores personalizados escritos en lenguaje MQL5.


7. Funciones MQL5

En el programa EA Tree hay bloques de función en lenguaje MQL5:


8. Manual: creando un asesor simple

En este apartado estudiaremos el proceso de creación de un asesor simple.

Primero daremos la lista de condiciones de un asesor comercial.

Normas de entrada en el mercado (Entry Rules):

Abrir una posición larga (Open Long):

  1. El valor actual de la línea principal (main) del indicador MACD > que el valor actual de la línea de señal (signal) del indicador MACD;
  2. El valor anterior de la línea principal (main) del indicador MACD < que el valor de la línea de señal (signal) del indicador MACD;
  3. El valor actual EMA(20) > que el valor anterior EMA(20).

Abrir una posición corta (Open Short):

  1. El valor actual de la línea (main) principal MACD < que el valor actual de la línea de señal (signal) del indicador MACD;
  2. El valor anterior de la línea (main) principal MACD > que el valor anterior de la línea de señal (signal) del indicador MACD;
  3. El valor actual EMA(20) > que el valor anterior EMA(20).

Normas de salida del mercado (Exit Rules):

El cierre de posiciones largas (Close Long): funciona de manera análoga a las normas de apertura de las posiciones cortas (Open Short);
El cierre de posiciones cortas (Close Short): funciona de manera análoga a las normas de apertura de las posiciones largas (Open Long).

En el ejemplo que vemos más abajo, para el bloque "Trade" se usará la configuración por defecto, no hay gestión de capital.

Comencemos:

1. Creamos los bloques "Trade" y "AND", unimos el botón de salida OUT del bloque "And" con el botón de entrada "OpenLong" del bloque "Trade":

Dib. 12. Bloques "Trade" y "And"

Dib. 12. Bloques "Trade" y "And"


2. Creamos el bloque "Crossover" y unimos su botón de salida "T" con el botón de entrada "A" del bloque "AND".

Dib. 13. Bloques "Trade" + "And" + "Crossover"

Dib. 13. Bloques "Trade" + "And" + "Crossover"


3. Creamos el bloque "MACD", unimos el botón de salida "Main" con los botones de entrada "A" y "C" del bloque "Crossover", después unimos el botón de salida "Signal" del bloque "MACD" con los botones de entrada "B" y "D" del bloque "Crossover".

Estructura lógica del esquema construido:

Si el valor actual de la línea principal (main) del indicador MACD > que el valor actual de línea de señal (signal) del indicador MACD y
      
el valor actual de la línea principal (main) del indicador MACD < que el valor anterior de la línea de señal (signal) del indicador MACD

Dib. 14. Bloques "Trade" + "And"+ "Crossover"+ "MACD"

Dib. 14. Bloques "Trade" + "And"+ "Crossover"+ "MACD"


4. Creamos los bloques "MA" y "If-Else". Unimos el botón de salida "Main" del bloque "MA" con los botones de entrada "A" y "B" del bloque "If-Else". Unimos el botón "OUTPUT" del bloque "If-Else" con el botón de entrada "B" del bloque "AND".

Para la condición de apertura de una posición larga (openLong) el subárbol de bloques consta de las tres condiciones siguientes:

  1. El valor actual de la línea principal (main) del indicador MACD > que el valor actual de la línea de señal (signal) del indicador MACD y
  2. El valor anterior de la línea principal (main) del indicador MACD < que el valor anterior de la línea de señal (signal) del indicador MACD y
  3. El valor actual del indicador EMA(20) > que el valor anterior EMA(20)

Dib. 15. Bloques "Trade" + "And" + "Crossover" + "MACD" + "MA" + "If-Else"

Dib. 15. Bloques "Trade" + "And" + "Crossover" + "MACD" + "MA" + "If-Else"


5. Creamos otro bloque "And" y unimos su botón de salida con el botón de entrada "openShort" del bloque "Trade".

6. Como la lógica de "openShort" es opuesta a la de "openLong", unimos el botón de salida "F" del bloque "Crossover" con el botón de entrada "A" del nuevo bloque "And". Unimos de la misma forma el botón de salida "F" del bloque "If-Else" con el botón de entrada "B" del nuevo bloque "And".


Dib. 16. Bloques "Trade"+ "And" + "Crossover" + "MACD" + "MA"+ "If-Else" + "And"

Dib. 16. Bloques "Trade"+ "And" + "Crossover" + "MACD" + "MA"+ "If-Else" + "And"


7. Para obtener señales de salida del mercado, unimos el botón de salida "OUT" del primer bloque "And" con el botón de entrada "closeLong" del bloque "Trade", y el botón de salida "OUT" del segundo bloque "And" lo unimos con el botón de entrada "closeShort" del bloque "Trade".


Dib. 17. Añadimos la condición "CloseShort" en el bloque "Trade"

Dib. 17. Añadimos la condición "CloseShort" en el bloque "Trade"


8. Pinchando dos veces sobre los bloques "MACD" y "MA", elegimos las variables que se usarán como parámetros de entrada del experto cuyo código será generado.


Dib. 18. Parámetros de entrada del asesor

Dib. 18. Parámetros de entrada del asesor

9. Ahora ya está todo preparado, guardamos el asesor en un archivo, lo abrimos en el redactor MetaEditor 5 y lo compilamos.

Dib. 19. Código fuente del asesor creado

Dib. 19. Código fuente del asesor creado


10. Al final, con ayuda del probador de estrategias comerciales del terminal MetaTrader 5 llevamos a cabo la optimización de los parámetros de entrada elegidos para el asesor.

Dib. 20. Comprobación del asesor en el probador de estrategias comerciales

Dib. 20. Comprobación del asesor en el probador de estrategias comerciales


Conclusiones

El uso del EA Tree tiene muchas ventajas: