El ADX(14) decide el modo. En mercados tranquilos el sistema compra después de una vela bajista grande y va short después de una vela alcista grande, y cuando el ADX es alto sigue a la vela en su lugar. Los longs se cierran 30 barras después de la última operación y los shorts después de 5 barras.
Mejor ejecución de 4. FTSE 100, 4 horas, spread 2, de la ejecución pf:2026-09-24-FTSE100-4h.tsv:2.
| Periodo | Hasta 2026-09-25 |
| Instrumento | FTSE 100, 4 horas |
| Spread | 2 puntos |
| Contratos | 1 |
| Capital inicial | 1,000,000 |
| Costes | Solo spread. No se incluyen comisiones ni financiación overnight. |
| Barras | Hasta 200,000 barras, menos cuando el instrumento tiene menos historial |
| Última prueba | 2026-09-25 |
| positionSize Contratos por operación | 1 |
| atrPeriod Longitud del ATR para el tamaño de la vela y el límite de volatilidad | 14 |
| adxPeriod Longitud del ADX para el cambio de régimen | 14 |
| adxLongThreshold Longs: ADX por encima = régimen breakout, por debajo = mean reversion | 36 |
| adxShortThreshold Shorts: ADX por encima = régimen breakout, por debajo = mean reversion | 24 |
| atrMaxLong Sin longs cuando el ATR está en o por encima de este valor | 100 |
| atrMaxShort Sin shorts cuando el ATR está en o por encima de este valor | 200 |
| longReversionMultiplier Long después de una vela bajista mayor que este número de ATRs | 1 |
| longBreakoutMultiplier Long después de una vela alcista mayor que este número de ATRs | 1 |
| shortReversionMultiplier Short después de una vela alcista mayor que este número de ATRs | 1 |
| shortBreakoutMultiplier Short después de una vela bajista mayor que este número de ATRs | 2 |
| maxBarsLong Cerrar un long después de este número de barras | 30 |
| maxBarsShort Cerrar un short después de este número de barras | 5 |
| midMonthDay Los días hasta este cuentan como la primera mitad del mes | 15 |
| janFirstHalf Peso estacional, primera mitad de enero (cero bloquea nuevos longs) | 3 |
| janSecondHalf Peso estacional, segunda mitad de enero (cero bloquea nuevos longs) | 0 |
| febFirstHalf Peso estacional, primera mitad de febrero (cero bloquea nuevos longs) | 3 |
| febSecondHalf Peso estacional, segunda mitad de febrero (cero bloquea nuevos longs) | 3 |
| marFirstHalf Peso estacional, primera mitad de marzo (cero bloquea nuevos longs) | 3 |
| marSecondHalf Peso estacional, segunda mitad de marzo (cero bloquea nuevos longs) | 2 |
| aprFirstHalf Peso estacional, primera mitad de abril (cero bloquea nuevos longs) | 3 |
| aprSecondHalf Peso estacional, segunda mitad de abril (cero bloquea nuevos longs) | 3 |
| mayFirstHalf Peso estacional, primera mitad de mayo (cero bloquea nuevos longs) | 1 |
| maySecondHalf Peso estacional, segunda mitad de mayo (cero bloquea nuevos longs) | 1 |
| junFirstHalf Peso estacional, primera mitad de junio (cero bloquea nuevos longs) | 1 |
| junSecondHalf Peso estacional, segunda mitad de junio (cero bloquea nuevos longs) | 2 |
| julFirstHalf Peso estacional, primera mitad de julio (cero bloquea nuevos longs) | 3 |
| julSecondHalf Peso estacional, segunda mitad de julio (cero bloquea nuevos longs) | 2 |
| augFirstHalf Peso estacional, primera mitad de agosto (cero bloquea nuevos longs) | 2 |
| augSecondHalf Peso estacional, segunda mitad de agosto (cero bloquea nuevos longs) | 3 |
| sepFirstHalf Peso estacional, primera mitad de septiembre (cero bloquea nuevos longs) | 3 |
| sepSecondHalf Peso estacional, segunda mitad de septiembre (cero bloquea nuevos longs) | 0 |
| octFirstHalf Peso estacional, primera mitad de octubre (cero bloquea nuevos longs) | 3 |
| octSecondHalf Peso estacional, segunda mitad de octubre (cero bloquea nuevos longs) | 2 |
| novFirstHalf Peso estacional, primera mitad de noviembre (cero bloquea nuevos longs) | 1 |
| novSecondHalf Peso estacional, segunda mitad de noviembre (cero bloquea nuevos longs) | 3 |
| decFirstHalf Peso estacional, primera mitad de diciembre (cero bloquea nuevos longs) | 3 |
| decSecondHalf Peso estacional, segunda mitad de diciembre (cero bloquea nuevos longs) | 2 |
Todas las ejecuciones
| Mercado | Marco temporal | PF | Operaciones | % de acierto | Neto | Max DD |
|---|---|---|---|---|---|---|
| FTSE 100Mejor ejecución | 4 horas | 1.17 | 1,514 | 55.75 | 7,580 EUR | -1,646 |
| DAX 40 | Diario | n/a | 347 | 58.21 | 9,871 EUR | -2,471 |
| GBP/USD | Diario | n/a | 799 | 55.69 | 7,847 USD | -7,788 |
| Nasdaq 100 | Diario | n/a | 585 | 50.77 | 2,959 EUR | -1,721 |
Gráficos
El código
// ============================================================ // DAX Survivor // ProRealAlgos Strategy Library | prorealalgos.com // Type: Volatility // Direction: Long & short // Timeframe tested: 4 hours // ============================================================ // --- Settings --- DEFPARAM CumulateOrders = false // --- Parameters --- positionSize = 1 // contracts per trade atrPeriod = 14 // ATR length for candle size and volatility cap adxPeriod = 14 // ADX length for the regime switch adxLongThreshold = 36 // longs: ADX above = breakout regime, below = mean reversion adxShortThreshold = 24 // shorts: ADX above = breakout regime, below = mean reversion atrMaxLong = 100 // no longs when ATR is at or above this atrMaxShort = 200 // no shorts when ATR is at or above this longReversionMultiplier = 1 // long after a down candle larger than this many ATRs longBreakoutMultiplier = 1 // long after an up candle larger than this many ATRs shortReversionMultiplier = 1 // short after an up candle larger than this many ATRs shortBreakoutMultiplier = 2 // short after a down candle larger than this many ATRs maxBarsLong = 30 // close a long after this many bars maxBarsShort = 5 // close a short after this many bars midMonthDay = 15 // days up to this count as the first half of the month // Seasonal weights per half month. Only zero matters now: zero blocks new longs. janFirstHalf = 3 janSecondHalf = 0 febFirstHalf = 3 febSecondHalf = 3 marFirstHalf = 3 marSecondHalf = 2 aprFirstHalf = 3 aprSecondHalf = 3 mayFirstHalf = 1 maySecondHalf = 1 junFirstHalf = 1 junSecondHalf = 2 julFirstHalf = 3 julSecondHalf = 2 augFirstHalf = 2 augSecondHalf = 3 sepFirstHalf = 3 sepSecondHalf = 0 octFirstHalf = 3 octSecondHalf = 2 novFirstHalf = 1 novSecondHalf = 3 decFirstHalf = 3 decSecondHalf = 2 // --- Indicators --- atrValue = AverageTrueRange[atrPeriod] adxValue = ADX[adxPeriod] candleBody = abs(open - close) longVolatilityOk = atrValue < atrMaxLong shortVolatilityOk = atrValue < atrMaxShort longBreakoutRegime = adxValue > adxLongThreshold longReversionRegime = adxValue < adxLongThreshold shortBreakoutRegime = adxValue > adxShortThreshold shortReversionRegime = adxValue < adxShortThreshold firstHalf = Day <= midMonthDay IF CurrentMonth = 1 THEN IF firstHalf THEN seasonWeight = janFirstHalf ELSE seasonWeight = janSecondHalf ENDIF ELSIF CurrentMonth = 2 THEN IF firstHalf THEN seasonWeight = febFirstHalf ELSE seasonWeight = febSecondHalf ENDIF ELSIF CurrentMonth = 3 THEN IF firstHalf THEN seasonWeight = marFirstHalf ELSE seasonWeight = marSecondHalf ENDIF ELSIF CurrentMonth = 4 THEN IF firstHalf THEN seasonWeight = aprFirstHalf ELSE seasonWeight = aprSecondHalf ENDIF ELSIF CurrentMonth = 5 THEN IF firstHalf THEN seasonWeight = mayFirstHalf ELSE seasonWeight = maySecondHalf ENDIF ELSIF CurrentMonth = 6 THEN IF firstHalf THEN seasonWeight = junFirstHalf ELSE seasonWeight = junSecondHalf ENDIF ELSIF CurrentMonth = 7 THEN IF firstHalf THEN seasonWeight = julFirstHalf ELSE seasonWeight = julSecondHalf ENDIF ELSIF CurrentMonth = 8 THEN IF firstHalf THEN seasonWeight = augFirstHalf ELSE seasonWeight = augSecondHalf ENDIF ELSIF CurrentMonth = 9 THEN IF firstHalf THEN seasonWeight = sepFirstHalf ELSE seasonWeight = sepSecondHalf ENDIF ELSIF CurrentMonth = 10 THEN IF firstHalf THEN seasonWeight = octFirstHalf ELSE seasonWeight = octSecondHalf ENDIF ELSIF CurrentMonth = 11 THEN IF firstHalf THEN seasonWeight = novFirstHalf ELSE seasonWeight = novSecondHalf ENDIF ELSE IF firstHalf THEN seasonWeight = decFirstHalf ELSE seasonWeight = decSecondHalf ENDIF ENDIF // The weight used to scale size; with fixed size a zero weight still means "no long". seasonAllowsLong = seasonWeight <> 0
35 líneas más: las reglas de entrada y salida.
Configuración
Preguntas
Sí. El código reescrito todavía no se ha comprobado en compilación y las estadísticas publicadas provienen del código anterior, así que pruébalo en demo antes de pasar a real.
FTSE 100 4 horas generó EUR 7,579.90 en 1,514 operaciones. DAX 40 Diario generó EUR 9,870.90, GBP/USD Diario USD 7,847.10 y Nasdaq 100 Diario EUR 2,959.40.
El max drawdown de la mejor ejecución con 1 contrato fue de EUR 1,645.70. Al no haber stop, mantén margen adicional por encima de esa cifra.
Los periodos de mantenimiento de 30 y 5 barras necesitan barras más lentas para capturar un swing real. Todas las filas probadas fueron de 4 horas o Diario.
Relacionado
La comunidad de ProRealAlgos obtiene las reglas completas, el código completo y la cartera automatizada.