Apuntarme a la lista de espera
Estrategias / Volatilidad / DAX Survivor

DAX Survivor

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.

VolatilidadLargos & cortosSwingFTSE 1004 horas
1.17Profit factor
7,580Beneficio neto EUR
55.75%Tasa de acierto
1,514Operaciones
-1,646Max drawdown
5.01Operación media

Mejor ejecución de 4. FTSE 100, 4 horas, spread 2, de la ejecución pf:2026-09-24-FTSE100-4h.tsv:2.

Reglas de entrada, largos

  1. Modo breakout: el ADX(14) está por encima de 36 y el cuerpo de una vela alcista es mayor que 1 x ATR(14)
  2. El ATR(14) está por debajo de 100
  3. La tabla estacional no bloquea la mitad de mes actual (la segunda mitad de enero y la segunda mitad de septiembre están bloqueadas)

Reglas de entrada, cortos

  1. Modo breakout: el ADX(14) está por encima de 24 y el cuerpo de una vela bajista es mayor que 2 x ATR(14)
  2. El ATR(14) está por debajo de 200

Reglas de salida

  1. Cerrar un short 5 barras después de la última operación
  2. Sin stop loss ni objetivo

Condiciones de la prueba

PeriodoHasta 2026-09-25
InstrumentoFTSE 100, 4 horas
Spread2 puntos
Contratos1
Capital inicial1,000,000
CostesSolo spread. No se incluyen comisiones ni financiación overnight.
BarrasHasta 200,000 barras, menos cuando el instrumento tiene menos historial
Última prueba2026-09-25
Parámetros (38)
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

Mercados y marcos temporales probados

MercadoMarco temporalPFOperaciones% de aciertoNetoMax DD
FTSE 100Mejor ejecución4 horas1.17 1,51455.757,580 EUR-1,646
DAX 40Diarion/a 34758.219,871 EUR-2,471
GBP/USDDiarion/a 79955.697,847 USD-7,788
Nasdaq 100Diarion/a 58550.772,959 EUR-1,721

Gráficos

Resultados por ejecución

Beneficio netoMax drawdown

El código

ProBuilder, reescrito al estándar de la casa

// ============================================================
// 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

Cómo cargarla

  1. Copia el código con el botón de copiar del bloque de código.
  2. En ProRealTime, abre un gráfico del instrumento y el marco temporal que quieras probar y luego abre ProOrder > New trading system y elige "Create with programming".
  3. Pega el código, dale un nombre al sistema y guárdalo.
  4. Haz clic en "Backtest", ajusta tu propio spread y position size, y ejecútala antes de considerar operarla en real.

Indicadores utilizados

ATRADX
Lee esto primeroDebilidades conocidas4 puntos
  • No hay stop loss ni objetivo de beneficio. Las operaciones solo terminan por tiempo, así que un movimiento brusco en contra de una posición continúa hasta que se alcanza el recuento de barras.
  • La mejor ejecución en FTSE 100 4 horas tuvo un profit factor de 1.17, un edge escaso después de costes.
  • En GBP/USD Diario el max drawdown (USD 7,788) casi iguala al beneficio neto (USD 7,847.10).
  • La versión original escalaba el tamaño según la estación del año y el ATR. El código probado opera 1 contrato fijo, así que es una versión simplificada.

Preguntas

Sobre esta estrategia

¿Es DAX Survivor compatible con ProOrder?

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.

¿Cómo se comportó en los distintos mercados?

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.

¿Qué arriesga 1 contrato?

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.

¿Por qué barras de 4 horas y diarias?

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

Estrategias como esta

ATR Band

Usa el mismo indicador.

10.31 PF · 53 operaciones

Bollinger Reversal

Mejor ejecución en el mismo mercado, FTSE 100.

1.74 PF · 117 operaciones

Breakout Failures

Un profit factor similar.

1.17 PF · 911 operaciones

El cambio de régimen es una pieza del puzle. Apúntate a la lista de espera de ProRealAlgos para ver el resto.

La comunidad de ProRealAlgos obtiene las reglas completas, el código completo y la cartera automatizada.

Los resultados pasados de backtest no garantizan resultados futuros. Esto no es asesoramiento financiero. Seleccionado y mantenido por ProRealAlgos. ProRealTime™ es una marca comercial de ProRealTime SAS. prorealalgos.comEstadísticasDocumentación