Hola a todos

En este artículo voy a escribir un poco sobre el algoritmo que quedó en 5º lugar del mes de septiembre de este año 2019.

El nombre con el que participaba era Agosto_2019_1 debido a que fue creado nuevo, para el mes de Agosto en el que obtuvo un mal resultado que no me pareció muy representativo y consideré que debería tener más datos antes de hacer algún cambio, por lo que repitió en septiembre con el mismo nombre.

Aclarado esto, disculpen que no esté disponible en versión de visualjforex porque desconozco el funcionamiento.

La operativa que forma la base de este algoritmo es un sistema de medias móviles bastante básico, puesto que no utiliza ningún otro indicador de apoyo o confirmación para abrir y cerrar posiciones.

El desarrollo de la lógica de negociación (apertura y cierre de posiciones) se realiza en el método onTick(Instrument instrument, ITick tick) y comienza creando las medias móviles. Esto implica muchas posibilidades, puesto que hay varios tipos de medias móviles, muchos marcos temporales y muchos tipos de subyacente, por lo que en este artículo, me voy a limitar a lo que se ha usado en Agosto_2019_1 en esta ocasión, dejando a un lado otras posibilidades.

Las medias móviles.

Las medias móviles que se han usado, han sido 6 y todas ellas fueron exponenciales. El marco temporal 30 minutos y el subyacente, el par Eur/Usd.
Las características de estas medias móviles fueron las siguientes:

EMA ---> a (a1, a2) ---> La media exponencial que he llamado "a" es una media rápida de 2 periodos que se desdobla en 2, que serían como dos medias independientes a1 y a2, cada una de ellas representaría un periodo distinto de la misma media móvil. Esta media móvil sería como una aproximación al precio, con un ligero retardo y será la que determinará si hay que abrir o cerrar posiciones y si deben ser largas o cortas según la colocación de estas medias respecto a las otras cuatro.

EMA ---> b (b1, b2)---> La medias exponenciales que he llamado "b1" y "b2" son dos medias móviles totalmente independientes, b1 es de 26 periodos y b2 es de 9 periodos.

EMA ---> R (R1, R2)---> La medias exponenciales que he llamado "R1" y "R2" son dos medias móviles también independientes, R1 es de 70 periodos y R2 es de 52 periodos.

La colocación y orden de unas medias respecto a las otras nos determinará si se debe considerar que la tendencia existente es alcista o bajista.
Creadas las medias móviles, el algoritmo ya iniciado, va comprobando la evolución de estas medias móviles del par que le hayamos indicado en el mercado (en este caso Eur/Usd) según los bloques de código condicionales que va encontrando. Si las condiciones de un bloque se cumplen lo ejecuta, si no, pasará al siguiente y así sucesivamente mientras este conectado y corriendo.

Apertura de posiciones ---> Puesto que las reglas del concurso indican que solo debe haber una posición abierta, la primera condición que se debe cumplir para abrir posiciones es que no haya posiciones abiertas, si hubiera alguna abierta saldría de ese bloque de código para entrar al siguiente bloque. Si no hubiera posiciones abiertas y no hubiera suficiente liquidez en el mercado para abrir nuestra posición completa, abriría una posición parcial y saldría de ese bloque de código sin abrir una segunda operación que complete el total de la primera.

Apertura de posiciones cortas --->

1.- Se comprueba que no haya posiciones abiertas.

2.- Se comprueba colocación y orden de las medias móviles.

- Si las medias móviles están colocadas ordenadas de abajo hacia arriba b2, b1, R2, R1 (EMA9, EMA26, EMA52, EMA70) y las dos medias móviles rápidas que representan al precio están por debajo, se abre una posición corta.

- Si las medias móviles están colocadas ordenadas de arriba hacia abajo b2, b1, R2, R1 (EMA9, EMA26, EMA52, EMA70) y las dos medias móviles rápidas que representan al precio están por debajo, se abre una posición corta.


Apertura de posiciones largas --->

1.- Se comprueba que no haya posiciones abiertas.

2.- Se comprueba colocación y orden de las medias móviles.

- Si las medias móviles están colocadas ordenadas de abajo hacia arriba b2, b1, R2, R1 (EMA9, EMA26, EMA52, EMA70) y las dos medias móviles rápidas que representan al precio están por encima, se abre una posición larga.

- Si las medias móviles están colocadas ordenadas de arriba hacia abajo b2, b1, R2, R1 (EMA9, EMA26, EMA52, EMA70) y las dos medias móviles rápidas que representan al precio están por encima, se abre una posición larga.


Cierre de posiciones ---> Puesto que las reglas del concurso indican que solo debe haber una posición abierta, la primera condición que se debe cumplir para cerrar posiciones es que ya haya una posición abierta, si no la hubiera, saldría de ese bloque de código para entrar al siguiente bloque.

Cierre de posiciones cortas --->

1.- Se comprueba que haya posiciones abiertas.

2.- Se comprueba colocación y orden de las medias móviles.

- Si las medias móviles están colocadas ordenadas de abajo hacia arriba b2, b1, R2, R1 (EMA9, EMA26, EMA52, EMA70) y las dos medias móviles rápidas que representan al precio están por encima de b2 y b1 (EMA9, EMA26) y la posición que hay abierta es corta, entonces se cierra la posición. Si la posición fuera larga, saldría de ese bloque de código, para ir a otro donde se evaluaría otra vez la posición y el orden de las medias móviles.


Cierre de posiciones largas --->

1.- Se comprueba que haya posiciones abiertas.

2.- Se comprueba colocación y orden de las medias móviles.

- Si las medias móviles están colocadas ordenadas de arriba hacia abajo b2, b1, R2, R1 (EMA9, EMA26, EMA52, EMA70) y las dos medias móviles rápidas que representan al precio están por debajo de b2 y b1 (EMA9, EMA26) y la posición que hay abierta es larga, entonces se cierra la posición. Si la posición fuera corta, saldría de ese bloque de código, para ir a otro donde se evaluaría otra vez la posición y el orden de las medias móviles.
Traducir a inglés Mostrar original