El día que Python y MT5 real divergieron entre un 92-98%
Contenido
- Especificación de la estrategia — Ruptura del rango asiático hacia la sesión de Nueva York
- Resultado del Walk-Forward en Python — Cifras espectaculares
- Sin embargo — Backtest real de MT5 a 14 años (USDJPY_NY_BREAKOUT_EA.mq5 v2.0)
- Por qué se produce una divergencia tan grande — 5 hipótesis
- 1. No se consideran spread ni slippage
- 2. Calidad de los datos
- 3. Divergencia en el modelo de ejecución
- 4. Fragilidad real del TP en dos etapas con ATR
- 5. Efecto adverso del interés compuesto parcial CASCADE en real
- Lecciones a nivel sectorial
- 1. El BT/Walk-Forward de Python **no sirve como referencia para MT5 real**
- 2. Incluso una "hipótesis con lógica económica sólida" requiere validación real obligatoria
- 3. Refuerzo del fundamento de la regla "validación real obligatoria" del CLAUDE.md
- Decisión de FXEA365
- Recomendación para el sector — Para quienes usan BT en Python
- Enlaces relacionados
El día que Python y MT5 real divergieron entre un 92-98%
Somos el equipo detrás de FXEA365.
Este artículo expone por completo el proceso mediante el cual, el 2026-05-29, comparamos la estrategia NY Session Breakout entre Python Walk-Forward y un backtest real de MT5 a 14 años, confirmando una divergencia de PF del 92-98%.
Este es un dato clave que vuelve a demostrar, a nivel sectorial, que "por muy espectaculares que sean las cifras en un backtest de Python, eso no garantiza que la estrategia funcione en MT5 real".
Especificación de la estrategia — Ruptura del rango asiático hacia la sesión de Nueva York
| Elemento | Configuración |
|---|---|
| Timeframe | H1 |
| Rango asiático | 0-4h UTC (formación del rango en horario asiático) |
| Horario de trading | 15-20h UTC (durante la sesión de Nueva York) |
| Entrada | Ruptura del High/Low del horario asiático |
| Salida | SL = ATR × 0.5 / TP1 = ATR × 0.5 (cierre del 50%) / TP2 = ATR × 7.0 |
| Lote | Riesgo 2% (interés compuesto parcial CASCADE) |
En teoría, es una estrategia con ventaja (edge):
- La sesión de Nueva York (UTC 15-20h) coincide con la actividad de los inversores institucionales y una concentración de liquidez
- El rango asiático es un valor de referencia natural, y su ruptura al alza o a la baja constituye una señal direccional fuerte
- El cierre en dos etapas (TP1=ATR×0.5/TP2=ATR×7) protege contra rupturas falsas y a la vez captura la tendencia
Resultado del Walk-Forward en Python — Cifras espectaculares
Entre el 2026-05-27 y el 28 ejecutamos un WF de 9 pares (Train 60% / Test 40%) mediante scripts/gen_h1_ny_walkforward.py:
| Par | train PF | test PF | test DD | test WR | Consistencia | Tasa de supervivencia OOS |
|---|---|---|---|---|---|---|
| EURUSD | 7.42 | 9.03 | 5.47% | 79.6% | 0.82 | 500/500 |
| GBPUSD | 11.78 | 13.00 | 31.85% | 84.2% | 0.91 | 500/500 |
| XAUUSD | 7.76 | 11.96 | 13.18% | 80.9% | 0.65 | (validación previa) |
| EURJPY | 9.41 | 7.93 | 7.46% | 79.2% | 0.84 | 500/500 |
| GBPJPY | 9.74 | 8.24 | 12.30% | 79.3% | 0.85 | 500/500 |
| USDJPY | 6.12 | 11.62 | 36.24% | 80.7% | 0.53 | (validación previa) |
| CADJPY | 7.59 | 5.76 | 32.81% | 75.9% | 0.76 | 499/500 |
| AUDJPY | 8.49 | 6.32 | 27.33% | 74.4% | 0.74 | 351/500 |
| NZDJPY | 9.22 | 6.51 | 15.05% | 70.6% | 0.71 | 500/500 |
Los 9 pares cumplieron con PF≥5 × winrate≥70% × tasa de supervivencia OOS 500/500.
Según las prácticas habituales del sector, este sería un resultado para publicar en el sitio anunciando "¡descubrimos una ventaja universal de ensueño!" o "¡ampliamos el lineup a todos los pares!".
Sin embargo — Backtest real de MT5 a 14 años (USDJPY_NY_BREAKOUT_EA.mq5 v2.0)
Siguiendo la regla del CLAUDE.md sobre "validación real obligatoria", revalidamos con un backtest real de MT5 a 14 años los 4 pares que habían mostrado los mejores resultados en el WF de Python:
| Par | Python WF (test) | Backtest real MT5 14 años | Divergencia | Resultado de la cuenta |
|---|---|---|---|---|
| USDJPY | PF 11.62 / DD 36% | PF 0.77 / DD 99.72% | −93% | -$9,966 (pérdida casi total) |
| EURUSD | PF 9.03 / DD 5.47% | PF 0.73 / DD 99.84% | −92% | -$9,984 (pérdida casi total) |
| GBPUSD | PF 13.00 / DD 31.85% | PF 0.21 / DD 101.12% | −98% | -$10,112 (cuenta quemada) |
| EURJPY | PF 7.93 / DD 7.46% | PF 0.49 / DD 100.01% | −94% | -$10,001 (cuenta quemada) |
Los 4 pares fracasaron sin excepción, con una divergencia de PF del 92-98% respecto al WF de Python.
Por qué se produce una divergencia tan grande — 5 hipótesis
1. No se consideran spread ni slippage
El backtest en Python se calcula sobre una base close-to-close. En real, cada ejecución se deteriora por spread (0.5-2 pips) + slippage. La pérdida acumulada de 1-3 pips por operación se va sumando.
2. Calidad de los datos
Python usa datos agregados de M5 a H1 procedentes de Dukascopy. El backtest real de MT5 utiliza datos tick del bróker (movimientos de precio mucho más precisos). Aunque se trate de la "misma vela H1", el movimiento interno de precios es distinto.
3. Divergencia en el modelo de ejecución
Python asume una ejecución ideal (siempre se ejecuta al precio deseado). En MT5 real, las restricciones de volumen/spread provocan que el precio de ejecución real difiera del deseado. Esto es especialmente notorio en horarios de alta volatilidad (como justo tras la apertura de Nueva York).
4. Fragilidad real del TP en dos etapas con ATR
Un diseño teóricamente elegante, pero el TP2=ATR×7 no se alcanza en la práctica real.
- Backtest en Python: calcula el SL/TP "óptimo" sobre datos históricos, con conocimiento retrospectivo del resultado
- Real: el SL=ATR×0.5 se activa con frecuencia, y la tendencia no se sostiene hasta el TP2=ATR×7, encadenando stops
5. Efecto adverso del interés compuesto parcial CASCADE en real
El diseño que ajusta el lote dinámicamente según el balance acelera el daño en fases de pérdidas:
- Balance $10K → Riesgo 2% → Lote 0.2
- Tras rachas de pérdidas, balance $8K → Riesgo 2% → Lote 0.16 (reducción mínima)
- Tras más rachas de pérdidas, balance $5K → Riesgo 2% → Lote 0.10 (no logra contener la pérdida)
La "magia del interés compuesto" teórica termina jugando en contra en real.
Lecciones a nivel sectorial
1. El BT/Walk-Forward de Python no sirve como referencia para MT5 real
- Incluso "PF≥5 × winrate≥70% × tasa de supervivencia OOS 500/500" carece de sentido en real
- El veredicto de "robusto" o "robustez OOS" en el WF evalúa la robustez dentro de los propios datos de Python, no funciona como sustituto de la validación real
2. Incluso una "hipótesis con lógica económica sólida" requiere validación real obligatoria
- Premisas como "los inversores institucionales están activos en horario de Nueva York" o "la ruptura del rango asiático es una señal direccional" son teóricamente correctas
- Sin embargo, el fracaso total en 14 años de MT5 real demuestra una gran divergencia entre la teoría y la práctica real
3. Refuerzo del fundamento de la regla "validación real obligatoria" del CLAUDE.md
- Con 25 EA + 4 de NY Session = un total de 29 validaciones, queda totalmente confirmado que el BT de Python no es fiable
- Este es el dato que respalda, a nivel sectorial, el eje de marca de FXEA365 ("no cifras espectaculares, sino comprobación en real")
Decisión de FXEA365
Dado que los 9 pares de la estrategia NY Session fracasaron por completo en la validación real de MT5, no se publicarán en el sitio.
Se mantiene el lineup publicado actual: únicamente los 4 pilares principales EURJPY ASIA / GBPJPY ASIA / BLAZE GOLD / AUDCAD PEACE-CLONE.
Un retorno anual combinado de +35.5% (Riesgo 5%) no es ni mucho menos espectacular, pero son cifras reales y confirmadas mediante 14 años de backtest real.
Recomendación para el sector — Para quienes usan BT en Python
No pretendemos desacreditar el uso de BT en Python. No obstante, recomendamos el siguiente uso diferenciado:
| Uso correcto del BT en Python | Recomendación |
|---|---|
| Validación inicial de la idea de estrategia (¿tiene potencial esta dirección?) | ✅ Recomendado |
| Cribado del rango de parámetros (qué zona merece una validación más precisa) | ✅ Recomendado |
| Comprobación de robustez WF (chequeo de sobreajuste mediante separación Train/Test) | ✅ Recomendado |
| Fundamento de las cifras publicadas en el sitio | ❌ Prohibido (diverge de lo real) |
| Usar la "tasa de supervivencia OOS" como argumento de venta | ❌ Prohibido (no sustituye a la validación real) |
| Decisión de publicación de un EA | ❌ Prohibido (requiere validación real en MT5) |
Las cifras del BT en Python son, en el mejor de los casos, un "indicador de cribado inicial". La publicación definitiva requiere validación real en MT5.
Enlaces relacionados
- EA principales (con validación real confirmada):
- ★1 EURJPY ASIA BREAKOUT (PF real a 14 años =1.18)
- ★2 GBPJPY ASIA BREAKOUT (PF real a 14 años =1.38)
- ★3 BLAZE GOLD v2.30 (PF real a 7 años =1.61)
- ★4 AUDCAD PEACE-CLONE (PF real a 10 años =1.36)
- Blogs relacionados:
FXEA365 — No publicamos cifras oficiales espectaculares, sino únicamente estrategias que funcionan de verdad, comprobadas mediante backtest real de MT5 a 14 años, de forma gratuita.
📧 Avisos antes de subidas de precio + curso gratuito de 5 días por email
Todos los EAs están a precio de lanzamiento y suben por escalones según las ventas. Reciba aviso antes de cada subida, más un email diario sobre trading algorítmico, cómo leer backtests y elegir bróker.
* Privacidad estrictamente protegida. Puedes darte de baja en cualquier momento.