Tarea técnica
Ea SGVR para MT5
El robot tendrá el siguiente menú:
*Settings básicos*
Número mágico ciclo 1
Número mágico ciclo 2
Ciclo 2 (true/false) Activado desactivado (funciona opuesto, al ciclo 1)
Número máximo de trades por ciclo: máximo de trades posibles por ciclo, valor entre 1 y 20.
Horario activo de trading (true/false)
Horario de trading: horario de empiece y cierre de trabajo.
Usar hora bróker/PC: Elegir una opción.
Beneficio máximo diario: 0 desactivado. Si llega el beneficio a ese valor, el ea se detiene hasta el dia siguiente.
Protección cuenta: 0 desactivado. Si la cuenta tiene una perdida flotante, superior a el valor del setting, el ea automáticamente protegerá todos los ciclos activos, y no abrirá más órdenes.
Password: El ea se tendrá que introducir un password para poder ser utilizado
Expiration date. A la fecha del setting, el ea dejara de funcionar
Allow backtesting: TRUE/FALSE; Si esta en true, permite hacer backtesting, si esta en false, no lo permite.
*Hedding*
Hedding por perdida en dinero: Valor 0 desactivado. Al llegar a su valor el ea se protege.
Hedding por hora (true/false)
Hora hedding: a la hora del hedding, el ea se protege si las ordenes del ciclo activo están en perdida, si están en beneficio, entonces en vez de protegerse, lo que hace es cerrar el ciclo en beneficio, no siendo necesario que se haya alcanzado el tp.
*Ciclos de recuperación*
Coeficiente de recuperación: multiplica el lote, el tp y el valor de hedding en dinero por el coeficiente para los ciclos de recuperación.
Máximo ciclos de recuperación: número máximo de ciclos de recuperación permitidos, al llegar a ese número, el ea no realiza más ordenes nuevas. Si tenemos 4 ciclos de recuperación activos, no abrirá un quinto.
*Settings trades del ciclo*
Trade 1 : Buy/Sell
Trade 1 : lote inicia
Trade 1 : grid
Trade 1.: tp
Se repite este bloque hasta el trade 20
Trade 20 : Buy/Sell
Trade 20 : lote inicia
Trade 20 : grid
Trade 20.: tp
*Informacion en display*
Tamaño letra
Color letra
Posición x
Posición y
Color del fondo.
*INFORMACION EN EL DISPLAY*
Línea 1: Mostrara la suma de todas las ordenes abiertas del ciclo 1, incluyendo la orden de su hedding, posibles swaps y comisiones. Esta línea se actualizará al producirse un hedding, o al producirse una variación en los swaps por cambio de día. También se actualizará cuando los ciclos de recuperacion del ciclo 1 alcancen hedding. Los ciclos de recuperación también incluirán su orden de hedding.
Linea 2: Beneficios acumulados producidos por los ciclos de recuperación del ciclo 1 al llegar a su tp. Se actualiza cada vez que un ciclo de recuperación se cierra por llega a su tp. Tendrá en cuenta el beneficio neto, incluyendo posibles swaps o comisiones.
Linea 3, y 4 son iguales, pero para el ciclo 2
Linea 5: quiero que me de los lotes netos de las ordenes abiertas por el ea, ya sean del ciclo 1 o ciclo 2, o ambos. Si tenemos un total de 5 lotes buy y 3 sell, quiero que muestre el valor 2 buy
Linea 6: Quiero que muestre el total de lotes abiertos por el ea desde que se inicia.
Linea 7: Margen actual, quiero que me refleje el valor del mt5 del margen requerido por las ordenes abiertas del ea.
Linea 8: Quiero que me dé el margen mayor alcanzado desde que el ea se ha iniciado
Línea 9: quiero que me dé la pérdida máxima o Drawdown desde que el ea se ha iniciado
Línea 10; quiero que me de los beneficios cerrados por el ea desde que se ha iniciado. El beneficio será neto, incluirá los posibles swaps o comisiones.
*LOGICA DEL EA*
Lógica de la estrategia para ciclo1, para ciclo 2 es la misma, pero con las entradas opuestas en caso de estar activado. Explicamos la estrategia con el ciclo1, pues el 2 funciona igual.
El ea primero verificara si el horario del trading esta activo o no, para iniciar el ciclo. Comentar en este momento que no se podrán abrir nuevos ciclos normales o de recuperación fuera del horario de trading. Tan solo se permite fuera de horario de trading abrir posiciones de un ciclo que no este en hedding.
Al iniciarse el ea, este hará la primera orden al mercado del ciclo 1.
Si esta acaba en tp antes de que se active la orden 2 del ciclo, entonces el ea iniciara un nuevo ciclo.
Si el ciclo lo comprenden más de una orden, cuando el ciclo llegue a tp, este cerrara las ordenes, e iniciara de nuevo un ciclo.
Si el ea en lugar de llegar al tp, llega antes a un hedding por perdida determinada en dinero, o por llegar a una hora determinada, entonces el ea abrirá un orden la cual equiparará los buy y los sell a cero, con el fin de que la perdida existente en ese momento se estabilice. Ejemplo, si tenemos 3 lotes de buy y 2 de sell, abrirá una orden de1 lote de sell, para que el neto sea 0. Además, el ea, ese momento reflejara en la línea 1 la perdida estabilizada del ciclo 1. Debe de incluir la orden de hedding. Como siempre, tener en cuenta los posibles swaps o comisiones.
El ea permanecerá sin realizar nuevas operaciones hasta el día siguiente.
Al día siguiente, el ea iniciara lo que llamaremos un ciclo de recuperación. Este ciclo se iniciará con un lotaje multiplicado por el valor del lote inicial, por el coeficiente de recuperación. El tp se multiplicará también por el factor de recuperación, Por último, el valor de hedding por perdida también lo hará.
Ejemplo. Si el trade 1 es lote 0.01; grid 400; tp 5, y el coeficiente de recuperación es 5, y el valor de hedding es 100, el valor de la orden 1 del ciclo de recuperación será lote 0.05, grid 400, tp 25 y valor de hedding por perdida de 500.
Para los valores de los otros trades del ciclo, se aplica el coeficiente de la misma manera.
La lógica de este ciclo de recuperación es la misma que la del ciclo 1.
Su función es la de recuperar la pérdida del ciclo 1 que esta en hedding.
En un ciclo de recuperación, pueden ocurrir las siguientes cosas:
a) Que llegue a su tp. Al llegar a su tp, este lo reflejara en la línea 2. Si al llegar a su tp, el beneficio obtenido por el ciclo de recuperación, es mayor que la perdida de los trades del ciclo 1, incluyendo su orden de hedding y posibles comisiones y swaps, entonces el ea cerrara todas las ordenes existentes, y comenzara un nuevo ciclo 1. Es decir, que si el valor de la línea 2 es igual o superior al de la línea 1 entonces se cierran todas las operaciones y se inicia un nuevo ciclo 1.
b) Si el ciclo de recuperación llega a su tp, pero este beneficio obtenido al cierre sumado a otros beneficios acumulados, no es igual o mayor que la pérdida del ciclo 1, entonces volverá a abrir otro ciclo de recuperación, con los mismos valores que el anterior ciclo de recuperación inicial.
Cuando alcance otra vez su tp. Si la suma de los beneficios de los dos ciclos de recuperación es igual o mayor que la perdida de las órdenes del ciclo 1, incluyendo su orden de hedding y posibles comisiones y swaps, entonces el ea cerrara todas las ordenes existentes, y comenzara un nuevo ciclo 1. Si no lo es, abrirá otro ciclo de recuperación. Así hasta que la línea 2 sea igual o mayor que la línea 1.
c) ¿Qué ocurre si un ciclo de recuperación llega antes a un hedding por hora o por perdida?
Pues al igual que el ciclo 1, este se protegerá, y no se iniciará un nuevo ciclo de recuperación hasta el día siguiente. Este lo hará con los valores del primer ciclo de recuperación también.
El nuevo ciclo de recuperación deberá de recuperar ahora la pérdida del ciclo 1 y su hedding, más el ciclo de recuperación 1 y su hedding. Deberá de tener en cuenta los beneficios acumulados anteriormente por los ciclos de recuperación que alcanzaron su tp, para hacer el calculo correctamente. Las líneas 1 y 2 se irán actualizando según vayan los ciclos de recuperación llegar a su tp o a su hedding.
Esta es la lógica del ea.
*Para poder distinguir las ordenes en el mt5, creo que las ordenes del ciclo 1 se deberían de llamar: C1-T1, C-T2…….., asi hasta que entre la orden de hedding, que la podemos llamar C1-Hedge
Las ordenes de recuperación del ciclo 1, se llamarán C1-T1 R1, C1-T2 R1……. Hasta que entre la orden de hedding C1-HEDGE R1
Así para los siguientes ciclos de recuperación que existan.
Para el ciclo 2 igual, pero con C2 delante.
*Botones en pantalla*
En pantalla quiero 5 botones
Hedding ciclo 1 manual. Al presionarlo el ea abrirá orden de hedding, y no realizará más órdenes.
Continúe ciclo 1. AL presionarlo, el ea continuara con la lógica del ciclo 1.
Hedding ciclo manual. Lo mismo pero para el ciclo 2.
Continúe ciclo 1. AL presionarlo, el ea continuara con la lógica del ciclo 1.
Cierre total ordenes EA. Al presionar este botón, el ea cierra todas las ordenes abiertas por el.
Lo botones debo poder posicionarlos en el display como yo quiera con el ratón, y que se queden es esa posición.
*Otras funciones*
Quiero que si por algún motivo, el mt5 se apaga, que al reiniciarse, el ea continúe con la lógica, es decir que tenga en memoria las ordenes que pudieran estar abiertas antes del apagado.
Por último, me gustaría añadir en el menú setting al final con motivos de optimización las siguientes líneas:
Optimization: true/false
Lote
Grid
Tp
Si esta activo la función de optimización, lo que hará el ea es tomar los valores de estas 3 líneas para todas las entradas. Esto lo hacemos, para que al optimizar el ea, podamos hacerlo más fácilmente, y con menos variables, pues si lo tenemos que hacer una a una, tenemos demasiadas variables. Si esta desactivado, al optimizar, se tomaran los valores de las órdenes del ciclo individualmente.
Cotizar el código en mt4 como opción.
Dispongo de un código en mt5, el cual realiza el 90% de las funciones, pero comete algún error, si lo necesita como base para arrancar el proyecto, se lo puedo facilitar.