Enrique Enguix
Enrique Enguix
  • Algorithmic Trading Systems Developer | Quantitative Researcher al Markets
  • Spagna
  • 108327
4.5 (635)
Esperienza di attività commerciale su MQL5.comSegnali pubblicatiMedia degli iscritti al segnaleLavori completatiMedia delle versioni demo scaricate per prodottoProdotti pubblicatiesperienza: 5+ anni Esperienza di attività commerciale su MQL5.comsegnali: 0Segnali pubblicatiiscritti: 0Media degli iscritti al segnalelavori: 0Lavori completativersioni demo: 7791Media delle versioni demo scaricate per prodottoprodotti: 2Prodotti pubblicati
Experts2Indicatori0librerie0Utilità0
  • Informazioni
  • 5+ anni
    esperienza
    2
    prodotti
    7791
    versioni demo
    0
    lavori
    0
    segnali
    0
    iscritti
Algorithmic Trading Systems Developer | Quantitative Researcher al Markets
I use computational techniques to systematically build and evolve market logic, with the goal of discovering robust and counterintuitive approaches.


🤖 ALL OUR EXPERT ADVISORS: https://www.mql5.com/en/users/envex/seller
⚠️ NEW MQL5 GROUP: https://www.mql5.com/en/messages/01c72081307dda01
🔵 TELEGRAM: https://t.me/+Jwdm825813I1Nzk0


If you feel that you don't know even the most basic things, start here: https://www.mql5.com/en/blogs/post/761104
Enrique Enguix
Enrique Enguix
Cómo evitar “congelar” MetaTrader 5 cuando tu EA hace ciencia pesada: motor asíncrono por pulsos

Quienes metemos motores evolutivos en MetaTrader 5 (MT5) chocamos con un límite práctico: si concentras demasiado trabajo en un solo evento, el terminal se bloquea. MT5 es potente, pero no es un entorno multihilo de propósito general; abrir muchos handles, recalcular indicadores y evaluar cientos de individuos de golpe satura el hilo principal.

En mi EA para XAUUSD, la solución es un motor asíncrono por pulsos (heartbeat) que trocea el cómputo y cede el control de forma cooperativa. Así el terminal sigue fluido mientras el sistema evoluciona, valida y arma cartera.

1) Pulsos, no maratones
Asignamos un presupuesto (p. ej. 50 ms) por pulso. Cada “latido” avanza la máquina de estados (datos → generaciones → fitness → selección → robustez → cartera) hasta agotar el presupuesto y devuelve el control a MT5.

En real/VPS bombeamos desde OnTimer.

En tester, desde OnTick.
Resultado: cero bucles kilométricos y cero “No responde”.


2) Estado reentrante
El motor es una state machine fina (INIT_DATA, EVAL_FOLD, SORT, EXTINCTION, RECRUIT, STRESS, FINALIZE…). Cada pulso completa un micro-paso y guarda contexto. La operativa no se interrumpe.

3) Indicadores sin atascar MT5
Crear muchos handles es caro. Usamos un Repositorio Maestro de Indicadores (RMI) precalculado en O(N) y acceso en O(1) con parámetros cuantizados a rejilla. Incluye SMA, RSI, ATR, Bandas de Bollinger, ADX, MACD… y algunos más. Menos latencia ⇒ más evolución por pulso.

4) Re-minado también asíncrono
Disparadores reactivos (DD, Sharpe/t-stat, Page–Hinkley) y proactivos (régimen vía ATR/ADX) invocan el re-minado, pero este también va en pulsos, con cooldown y ventanas alineadas al timeframe.

5) Laboratorio = Producción en MT5
Señales en vela cerrada, misma disciplina de SL/TP por ATR y time-exit, Split Train/Select reproducible y Monte Carlo por parámetros… todo dentro del mismo motor asíncrono.

Tesis
En MT5, el alpha empieza en la estadística… pero se gana con ingeniería: task slicing asíncrono, RMI cuantizado y una state machine que respetan las limitaciones del terminal sin sacrificar búsqueda.

Pregunta
¿Cómo evitáis el freeze en MT5 con EAs intensivos? ¿Usáis time-slicing, feature stores de indicadores o presupuestos de CPU por evento? Me interesa cómo equilibráis capacidad de búsqueda y responsividad.

#MetaTrader5 #MQL5 #Algotrading #TradingCuantitativo #SystemDesign #GP #FeatureStore #LowLatency
Enrique Enguix
Enrique Enguix
A lo largo de esta serie, he explorado los componentes de mi sistema de trading para XAUUSD, un sistema que aspira a ser lo más autónomo posible: genera, valida y adapta sus propias estrategias. Esto inevitablemente nos lleva a una pregunta fundamental: en un sistema tan automatizado, ¿cuál es el verdadero rol del humano?

Es tentador pensar en el sistema como una "caja negra" que se enciende y genera beneficios. La realidad es mucho más compleja y, en mi opinión, más interesante. ⚠️ El humano no desaparece, sino que su función se eleva.

En mi proyecto, he identificado tres roles críticos que la máquina no puede asumir:

* Arquitecto del "Universo" de Búsqueda:
Nosotros no diseñamos las estrategias finales, pero sí diseñamos el "universo" donde estas nacen. Nuestra labor es definir los bloques de construcción (los indicadores y funciones), establecer las "leyes de la física" y los límites del campo de juego. La calidad de las estrategias descubiertas es un reflejo directo de la calidad de este universo.

* Filósofo del Riesgo y la Validación:
La IA puede encontrar patrones, pero no entiende el "riesgo" en un sentido humano. Somos nosotros quienes definimos la filosofía de la validación: ¿qué nivel de drawdown es inaceptable? ¿Qué constituye una diversificación "real"? La máquina optimiza, pero el humano define la prudencia.

* Científico e Intérprete de Resultados:
Finalmente, y quizás lo más importante, somos los científicos que analizan los resultados. Cuando el sistema descubre algo contraintuitivo (como que la lógica 'no-humana' es superior), nuestra labor es formular una tesis, entender el "porqué" y usar ese conocimiento para refinar el sistema en el siguiente ciclo de investigación.

Mi tesis es que la automatización avanzada no elimina al humano, sino que eleva su rol. Pasamos de ser "operadores" o "analistas de señales" a ser meta-diseñadores, gestores de riesgo filosóficos y directores de investigación de una IA.

Esto me lleva a un debate sobre nuestro futuro en la industria:
A medida que los sistemas de IA se vuelven más autónomos, ¿cómo percibís que está cambiando vuestro propio rol en el proceso cuantitativo? ¿Pasáis más tiempo en el diseño de la arquitectura y la filosofía del sistema que en el análisis de señales individuales?


#TradingCuantitativo #SystemDesign #AIinFinance #Algotrading #MQL5 #FutureofWork #QuantitativeFinance #Fintech
Enrique Enguix
Enrique Enguix
Para la publicación de esta serie sobre mi sistema de trading para XAUUSD, quiero hablar de una decisión de arquitectura fundamental: la separación estricta de responsabilidades entre el descubrimiento del "alpha" y la gestión del riesgo.

Un sistema de trading debe responder a dos preguntas: cuándo entrar y cuándo salir. Un enfoque común es intentar que un único modelo resuelva ambas. Sin embargo, esto aumenta exponencialmente la complejidad y el riesgo de sobreajuste, ya que el modelo puede encontrar una combinación afortunada de entrada y salida que no es robusta en el mundo real.

En el ecosistema que desarrollo en MT5, he optado por una división de tareas radical:

* La Misión del Motor Genético: Descubrir el "Alpha".

El motor de Programación Genética tiene una única y obsesiva misión: encontrar la condición de entrada más robusta posible. Toda la potencia computacional, los filtros de validación y la inteligencia evolutiva se dedican exclusivamente a resolver esta pregunta.

* El Framework de Riesgo: Una Disciplina Impuesta.

La lógica de salida, por otro lado, es un "framework" universal y no evolutivo que se aplica a CUALQUIER estrategia que el sistema genere. Se compone de tres elementos fijos y no negociables:

* Un Stop Loss dinámico, basado en la volatilidad del mercado (SL_ATR_Multiplier).

* Un Take Profit dinámico, también basado en el ATR (TP_ATR_Multiplier).

* Una salida por tiempo, que cierra la operación si no alcanza su objetivo en un número máximo de velas (Max_Hold_Bars).

Mi tesis es que el "alpha" (la ventaja predictiva en la entrada) es una entidad que debe ser descubierta, mientras que la gestión del riesgo (la salida) es una disciplina que debe ser impuesta. Al separar estas dos responsabilidades, reducimos drástastimente el espacio de búsqueda, mitigamos el sobreajuste y aseguramos que cada estrategia, sin importar cuán exótica sea su lógica de entrada, opere dentro de un marco de riesgo consistente y predefinido.

Se permite la creatividad en la entrada; se exige la disciplina en la salida.

Esto me lleva a una pregunta sobre la arquitectura de sistemas:

¿Cuál es vuestra filosofía? ¿Favorecéis un enfoque integrado donde el modelo optimiza tanto las entradas como las salidas de forma conjunta? ¿O, como en mi caso, preferís separar las responsabilidades, encargando al modelo el descubrimiento del "alpha" y aplicando un framework de gestión de riesgo de forma independiente?



#TradingCuantitativo #SystemDesign #RiskManagement #Algotrading #MQL5 #Alpha #Fintech #SoftwareArchitecture
Enrique Enguix
Enrique Enguix
En las publicaciones anteriores de esta serie sobre mi sistema de trading para XAUUSD, hemos hablado de cómo se generan, validan y combinan las estrategias. Hoy, profundizaremos en el "cerebro" del sistema: la función de fitness, el juez que decide qué estrategias sobreviven y se reproducen.

Un error común en los sistemas evolutivos es definir la "calidad" con una única métrica, como el beneficio neto, lo que a menudo conduce a modelos de alto riesgo. En el ecosistema que desarrollo de forma nativa en MT5, he evitado esta simplificación implementando una función de fitness multi-objetivo y configurable.
Cada estrategia candidata es evaluada a través de una calificación ponderada basada en tres pilares de rendimiento:

* Rentabilidad Ajustada al Riesgo (Ratio Calmar): Mide la eficiencia del capital en relación al drawdown máximo sufrido.

* Estabilidad de la Curva de Capital (R-Squared): Mide la consistencia y predictibilidad del crecimiento de los beneficios.

* Resiliencia (Duración del Drawdown): Mide la rapidez con la que una estrategia se recupera de los períodos de pérdidas (max_drawdown_duration_bars).

Mi tesis es que la calidad de una estrategia es una entidad multidimensional. El enfoque actual con perfiles ponderados (E_FitnessProfile) nos permite guiar la evolución hacia un equilibrio deseado entre rentabilidad, estabilidad y resiliencia. Sin embargo, estamos explorando un paso más allá: implementar un ordenamiento de Pareto (Pareto Sort). El objetivo es identificar el conjunto de estrategias 'no-dominadas', aquellas donde ninguna métrica puede ser mejorada sin empeorar otra. Esto nos daría un "frente" de las mejores soluciones posibles, cada una representando un trade-off óptimo, en lugar de un único 'mejor' individuo.

Esto me lleva a un debate sobre la arquitectura de la optimización multi-objetivo:
¿Confiáis en un enfoque de suma ponderada para combinar las métricas en un único valor de 'fitness', o preferís métodos como el ordenamiento de Pareto para trabajar con un frente de soluciones 'no-dominadas' y tomar la decisión de selección final en una etapa posterior?

#TradingCuantitativo #SystemDesign #Algotrading #MQL5 #MachineLearning #Pareto #Optimization #Fintech
Enrique Enguix
Enrique Enguix
Continuando con el diseño de mi sistema de trading para XAUUSD, y tras abordar la generación, validación y adaptación, hoy nos centramos en el ensamblaje final: la construcción de un portafolio robusto.

El sistema, que opera de forma autónoma en MT5, no solo debe encontrar estrategias ganadoras, sino combinarlas de forma inteligente para sobrevivir a cualquier condición de mercado.

Aquí nos enfrentamos a una de las grandes trampas del trading cuantitativo: la falsa diversificación.
El método clásico es diversificar asegurando una baja correlación de Pearson entre las señales de entrada de las estrategias. Es un primer paso lógico, y mi sistema lo aplica (MaxSignalCorrelation), pero detenerse aquí es un error crítico. Un portafolio puede tener 10 estrategias con señales decorrelacionadas que, en realidad, son 10 variantes de la misma idea fundamental (ej. reversión a la media), compartiendo el mismo punto de fallo.

Para lograr una antifragilidad real, he implementado una segunda capa de validación, el Filtro de Diversidad Estructural (EnableStructuralFilter). Este filtro va más allá de la señal y analiza el "ADN" de la estrategia: su estructura de decisión (GPNode[]). Mediante una métrica de similitud (CalculateStructuralSimilarity), rechazamos cualquier estrategia que sea conceptualmente redundante, sin importar el resultado de su correlación.

Mi tesis es esta: la verdadera diversificación no se mide en la superficie (las señales), sino en el núcleo (la lógica). La correlación estadística previene la redundancia, pero la diversidad estructural previene el riesgo sistémico. Un portafolio robusto no es un coro que canta la misma nota en momentos diferentes; es una orquesta con instrumentos distintos.

Esto me lleva a un debate sobre la arquitectura de portafolios algorítmicos:
¿Cómo garantizáis una diversificación conceptual profunda en vuestros sistemas? Más allá de la clásica matriz de correlación, ¿qué técnicas o métricas utilizáis para evitar la concentración de riesgo lógico y asegurar que vuestros modelos no son simplemente ecos de la misma idea?
Enrique Enguix
Enrique Enguix
Después de explorar la generación de estrategias y su validación, el siguiente pilar de mi sistema de trading para XAUUSD es la adaptación. Los mercados no son estacionarios; una estrategia que funciona hoy puede no hacerlo mañana. La pregunta no es si un modelo dejará de funcionar, sino cuándo y cómo debemos reaccionar.

La solución convencional es un re-entrenamiento periódico basado en tiempo, pero este enfoque es ciego. En mi ecosistema autónomo dentro de MT5, he optado por un sistema de re-minado dinámico y basado en eventos, utilizando un doble disparador:

* Disparador Reactivo (Degradación del Rendimiento):
Este es el mecanismo de defensa que monitoriza la salud del modelo. El disparador principal es una degradación del rendimiento, como una superación del drawdown máximo (PortfolioDrawdownTrigger) o una caída sostenida del Sharpe Ratio. Si el "edge" del modelo se evapora, se fuerza un re-minado.

* Disparador Proactivo (Cambio de Régimen de Mercado):
Este es el mecanismo de anticipación, que busca detectar un cambio fundamental en el "terreno de juego". Usamos indicadores de estado como la volatilidad (ej. un estallido en el ATR) o la fuerza de la tendencia (ej. un cruce del ADX sobre un nivel clave) para identificar cuándo el mercado pasa de un estado de rango a tendencia. Si el régimen cambia, asumimos que la lógica actual ya no es óptima.

Mi tesis es que la verdadera adaptabilidad no reside en la frecuencia del re-entrenamiento, sino en su pertinencia. Al combinar un disparador reactivo (fallo del modelo) con uno proactivo (cambio de mercado), el sistema alinea su ciclo de vida con el del mercado mismo, volviéndose más eficiente y robusto.

Esto me lleva a un debate clave en el diseño de sistemas adaptativos:
¿Cómo gestionáis el "decaimiento del modelo" (model decay)? ¿Utilizáis disparadores de rendimiento (drawdown, Sharpe), métricas de estado de mercado (volatilidad, ADX), o vais un paso más allá con tests estadísticos formales como el test de Chow para detectar puntos de quiebre estructural?
Enrique Enguix
Enrique Enguix
Uno de los mayores desafíos en el trading cuantitativo es que construimos modelos sobre un pasado que nunca se repetirá exactamente. Un backtest con un rendimiento espectacular puede ser, y a menudo es, un simple caso de sobreajuste (curve-fitting) a un conjunto de datos históricos específico.

La pregunta que todos nos hacemos es: ¿cómo podemos ganar confianza en que una estrategia es verdaderamente robusta antes de arriesgar capital real?

En mi sistema actual para XAUUSD, abordo esto con un "stack" de validación de doble capa, combinando dos filosofías distintas para atacar el problema desde dos ángulos.

* Primera Capa: Validación Out-of-Sample (OOS). Este es el primer filtro, el estándar de la industria. Cada estrategia generada se entrena en un segmento de datos históricos y luego se valida en un período posterior que no ha "visto" (DataSplitScheme). Su objetivo es responder a la pregunta: ¿Tiene esta estrategia un "edge" predictivo real sobre datos desconocidos del pasado?

* Segunda Capa: Test de Robustez por Monte Carlo. Las estrategias que superan el filtro OOS se enfrentan a una prueba de estrés. Generamos docenas de "clones" de la estrategia, pero a cada uno le introducimos pequeñas variaciones aleatorias en sus parámetros usando una distribución gaussiana (PerturbStrategy). El objetivo es responder a una pregunta diferente: Ok, la estrategia tiene un "edge", pero ¿es estructuralmente robusto o es una frágil coincidencia de parámetros que se romperá con la más mínima variación en las condiciones futuras del mercado?

Mi tesis es que ninguna de estas técnicas por sí sola es suficiente. La verdadera confianza emerge cuando una estrategia demuestra tanto su edge predictivo (superando el OOS) como su robustez estructural (superando el Monte Carlo).

Mi "stack" de validación actual combina, por tanto, un test Out-of-Sample (para verificar el "edge") seguido de una simulación de Monte Carlo (para verificar la "robustez"). Y esto me lleva a una pregunta para la comunidad:

Más allá de esta combinación, ¿qué tercera capa o técnica alternativa consideráis indispensable en vuestro propio proceso de validación? ¿Existen métodos menos convencionales que hayáis encontrado particularmente efectivos para desenmascarar las debilidades ocultas de un modelo antes de llevarlo a producción?
Enrique Enguix
Enrique Enguix
En mi proyecto actual de desarrollo de un sistema de trading para XAUUSD (H1), el enfoque ha sido construir un motor de descubrimiento y ejecución autónomo, integrado de forma nativa en la plataforma MT5.

El sistema utiliza Programación Genética para evolucionar la propia lógica de las estrategias, en lugar de solo optimizar parámetros.
Un pilar fundamental de este sistema es cómo se genera la población inicial de estrategias. Para evitar los sesgos de un único método, he implementado un enfoque híbrido que orquesta tres "motores" de creatividad distintos. Cada uno cumple un rol específico:

* 1. Plantillas (Explotación): Partimos de una base de arquetipos de trading probados (ej. TPL_CROSSOVER, TPL_REVERSION). Este motor asegura que el conocimiento humano y las lógicas de mercado conocidas se exploten desde el inicio, proporcionando una base sólida y robusta a la evolución.

* 2. Semántica (Innovación Guiada): Este motor construye árboles de decisión desde cero, pero de forma inteligente. Respeta una gramática de tipos (E_SemanticType) que asegura que las operaciones sean lógicamente coherentes. Es nuestra principal fuente de innovación, descubriendo reglas no-intuitivas pero matemáticamente válidas.

* 3. Caos (Exploración Pura): A través de una generación puramente aleatoria, inyectamos diversidad radical en la población. El objetivo de este motor es romper con cualquier patrón preconcebido y descubrir estrategias "out-of-the-box" que ni las plantillas ni la semántica estructurada podrían encontrar.

Lo más revelador de este enfoque híbrido ha sido observar qué "mix" de estos motores produce los resultados más robustos. En nuestras pruebas para XAUUSD, hemos observado una tendencia clara: los perfiles que minimizan o eliminan las Plantillas (lógica humana) y maximizan la Semántica y el Caos (lógica de máquina y exploración pura) son consistentemente superiores, como fue el caso del perfil MIX_SEMANTIC_ONLY.

Esto me lleva a una pregunta directa para la comunidad cuantitativa:
¿Habéis observado una tendencia similar en vuestros propios sistemas generativos? ¿Percibís también que el 'alpha' más persistente se encuentra al dejar que la máquina se aleje de nuestros sesgos y heurísticas predefinidas, o consideráis que este hallazgo puede ser específico del activo o del régimen de mercado actual?
Enrique Enguix
Enrique Enguix
My neighbor just got a 30-year mortgage… for a barbecue.
I swear.
He doesn’t care about the house. What he really wanted was a patch of fake grass, a shiny chrome grill, and a table where he could host Sunday BBQs with his friends.
I knew it the second he said:
“Man, I can already see myself there with a beer, watching those ribs cook…”
Not a word about the variable interest rate, notary fees, or the 300,000 euros he just signed for like it was pocket change.
And it got me thinking.
Because he’s not the only one.
Most people don’t buy homes. They buy the fantasy of what they think they’ll feel once they have it.
Like the guy who signs up for the gym because he imagines his six-pack… but never actually shows up.
Or the trader who enters the market dreaming of that epic winning trade… but panics the second things go south.
You know what they all have in common?
They’re not ready for what it *really* takes to get what they say they want.
And in trading, that’s deadly.
Because a lot of people get in for the idea of freedom, of “working from home,” of “being your own boss”…
But they can’t survive even a week when the system hits drawdown.
They start second-guessing. Tinkering. Overtrading. “Trying something I saw on YouTube.”
They become the guy with the barbecue dream… but no house. No plan. No structure. Just vibes and smoke.
I used to be that guy too.
I fell in love with the idea. But I didn’t understand the cycles, the stats, the risk control… or the value of sticking to a system with logic, even when the weeks got tough.
It took time to get it.
Now I know: the ones who make it in this game aren’t the smartest. They’re the ones who can go through the process without betraying it every time it gets uncomfortable.
The ones who don’t need a barbecue fantasy to justify the investment.
That’s why I talk so much about systems that aren’t driven by emotion. That don’t bend every time the wind changes.
I don’t sell dreams.
I share what lets me show up every day without having a heart attack every time the market throws a tantrum.
Automated strategies that work with rules. With logic. With control.
No magic. No promises. Just *operational reality*.
Because if you’re going to mortgage your future for something, make damn sure it’s not just a fantasy.
My neighbor still hasn’t used the barbecue.
Not once.
But guess what… he’s already complaining about the mortgage.
Up to you what you invest in.