Hola a todos
En este artículo voy a escribir un poco sobre el algoritmo que quedó en 9º lugar del mes de Enero de este año 2020.
El nombre con el que participaba era Enero20201 y aunque fue creado nuevo, esta basado en otros anteriores del año 2019.

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 Enero20201 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 5 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 52 periodos y R2 es de 39 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.

Como resulta un poco enrevesado explicar la colocación de las medias móviles, así como entenderlo, sobre todo cuando a lo mejor no se entiende el idioma en el que estoy escribiendo, he preparado unas imágenes, donde se representan las 6 medias móviles y la colocación, así para abrir posiciones cortas Sell, las medias móviles deberían estar ordenadas de una de estas dos formas:

Open Sell

Apertura de posiciones largas --->
1.- Se comprueba que no haya posiciones abiertas.
2.- Se comprueba colocación y orden de las medias móviles.

Para abrir posiciones largas, las medias móviles deberían estar ordenadas de una de estas dos formas:

Open Buy

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 ordenadas de alguna de las formas que se indican en la siguiente imagen se procedería a cerrar 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.

Close Sell


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 ordenadas de alguna de las formas que se indican en la siguiente imagen se procedería a cerrar 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.

Close Buy
Traduire en Anglais Montrez l'original