Specifiche
Tengo un EA ya operativo en MetaTrader 5, y me gustaría que realizaras unas modificaciones específicas. A continuación, te detallo cómo funciona actualmente el EA y luego te explico las instrucciones precisas que deben implementarse para lograr el comportamiento deseado.
1. Funcionamiento actual del EA (base HARD10)
-
El EA abre una operación de compra o venta al iniciarse, dependiendo del parámetro OperarEnVenta (true = venta, false = compra).
-
La operación se abre con un LoteInicial , un SL y TP en pips definidos por parámetros.
-
Si la operación se cierra por Stop Loss (SL):
-
Se multiplica el volumen por el MultiplicadorLotes para la próxima operación.
-
Se incrementa un contador de SLs consecutivos.
-
Si se alcanza el número máximo de SLs consecutivos ( MaximosSLseguidos ), el EA se detiene.
-
-
Si la operación se cierra por Take Profit (TP):
-
El lote se reinicia al valor inicial.
-
El contador de SLs se reinicia.
-
Si DetenerTrasTP = true , el EA se detiene.
-
-
Si la operación se cierra de forma manual:
-
El lote se reinicia y se anulan los contadores.
-
-
El EA usa un MagicNumber para filtrar solo sus operaciones.
-
Todo esto ocurre en cada símbolo donde el EA está conectado, de forma independiente.
2. Modificaciones solicitadas
a) Activación por hora y minuto
Deseo que el EA permanezca inactivo para abrir nuevas operaciones hasta que llegue una hora y minuto configurables. Sin embargo, sí debe seguir detectando cierres de operaciones previas, incluso antes de esa hora, ya que es necesario para mantener la lógica sincronizada con otros símbolos.
Inputs a añadir:
input bool ActivarHoraDeInicio = true;
input int HoraActivacion = 9;
input int MinutoActivacion = 30;
-
Si ActivarHoraDeInicio = true , el EA debe esperar a la hora indicada para comenzar a abrir operaciones.
-
Durante ese tiempo, debe seguir ejecutando la lógica de detección de cierres, actualización del contador de SLs, y ajuste del lote o SL/TP si corresponde.
-
Si el EA se conecta después de esa hora, debe activarse directamente.
b) Ampliación del SL y TP tras varias pérdidas consecutivas
Deseo implementar una función que aumente el tamaño del StopLoss y del TakeProfit tras una cadena de operaciones perdedoras consecutivas.
Inputs a añadir:
Lógica esperada:
-
Si ActivarSLTPExpandido = true y se han acumulado SLsAntesDeExpandir pérdidas consecutivas o más, entonces:
-
El próximo trade utilizará un SL y TP multiplicados por FactorSLTPExpandido .
-
-
Si se alcanza un TP o se cierra manualmente:
-
El lote, SL y TP vuelven a los valores originales.
-
c) Sincronización de estado entre múltiples gráficos
Actualmente, si el EA está conectado en dos gráficos distintos (por ejemplo, EURUSD y XAUUSD), cada instancia trabaja de forma completamente independiente. Quiero cambiar eso.
Objetivo: que todas las instancias del EA (aunque estén en símbolos distintos) compartan la misma lógica de progresión y multiplicador.
Ejemplo:
-
En el gráfico del EURUSD el EA ha operado y ha tenido 3 SL consecutivos, por lo que el lote se ha multiplicado.
-
En el gráfico del XAUUSD el EA aún no ha sido activado (porque está esperando su hora de inicio).
-
Cuando se active el EA en el XAUUSD, debe heredar esa misma lógica, es decir:
-
Detectar que ya hay una serie de SL anteriores acumulados en otro símbolo.
-
Calcular y aplicar el mismo multiplicador de lotaje y, si corresponde, el SL/TP ampliado.
-
Requisitos técnicos:
-
Se puede usar un sistema de almacenamiento compartido entre instancias (variables globales, archivos, etc.).
-
Es fundamental que cada instancia del EA pueda saber cuál es el estado de progresión global antes de operar por primera vez.
3. Requisitos generales
-
Código limpio, eficiente, que compile sin errores.
-
Entregar archivo final en formato .mq5 .
-
Si alguna parte no es viable exactamente como la pido, estoy abierto a sugerencias técnicas.