Estrategia de oscilador deteriorado de DiNapoli

El autor:¿ Qué pasa?, Fecha: 23 de septiembre de 2023 15:48:40
Las etiquetas:

Resumen general

Esta estrategia genera señales de negociación basadas en el oscilador de deterioro de DiNapoli. Refleja los niveles de sobrecompra / sobreventa por la diferencia entre el precio y la media móvil, con el objetivo de identificar oportunidades de reversión. Las señales se generan cuando el oscilador cruza un umbral.

Estrategia lógica

Los componentes clave son:

  1. Promedio móvil: Calcula la línea de base de la tendencia.

  2. Indicador de diferencia: el precio menos la media móvil forma el oscilador.

  3. Línea de umbral: cruzar este nivel activa señales.

  4. Signo largo: cruce del oscilador por encima del umbral.

  5. Signo corto: el oscilador cruza por debajo del umbral.

  6. Opción inversa: cambia las señales largo/corto.

La estrategia tiene como objetivo capturar las reversiones a corto plazo mediante la identificación de divergencias entre el precio y la tendencia.

Ventajas

En comparación con otras estrategias de reversión, las ventajas son:

  1. Lógica sencilla e intuitiva, fácil de implementar.

  2. Parámetros mínimos, pruebas de retroceso convenientes.

  3. Flexibilidad en el ajuste de parámetros para diferentes períodos.

  4. Opción inversa adaptable a diferentes mercados.

  5. Eliminar las paradas y salidas para controlar el riesgo.

  6. Las reducciones son relativamente pequeñas, ajustables a través de parámetros.

  7. Potencial para optimizar con el aprendizaje automático.

  8. En general, el perfil de riesgo/beneficio es bueno para el comercio a corto plazo.

Los riesgos

Sin embargo, los principales riesgos son:

  1. La dependencia excesiva de la optimización de parámetros corre el riesgo de sobreajuste.

  2. Retrasos en la media móvil y el oscilador.

  3. Falta de confirmación de otras variables.

  4. El efecto del tiempo puede deteriorarse en los mercados cambiantes.

  5. Difícil de generar persistentemente alfa, requiere ajustes frecuentes.

  6. Necesidad de monitorear las relaciones de recompensa/riesgo y la suavidad de la curva.

  7. La alta frecuencia del comercio aumenta los costos de transacción.

  8. La robustez en todos los mercados requiere validación.

Mejoras

Basándose en el análisis, las mejoras pueden incluir:

  1. Probando diferentes parámetros de promedio móvil.

  2. Añadiendo confirmación de volumen.

  3. Implementar paradas y salidas para controlar el riesgo.

  4. Evaluación de la solidez en diferentes mercados y plazos.

  5. Prueba posterior de ventanas rodantes para verificación continua.

  6. Ajustando el tamaño de la posición a una frecuencia más baja.

  7. Incorporando aprendizaje automático para mejores parámetros.

  8. Optimización de las estrategias generales de gestión de riesgos.

  9. Iteraciones continuas para adaptarse a los mercados cambiantes.

Conclusión

En resumen, esta es una idea de estrategia de inversión de la media relativamente simple. El ajuste adecuado de parámetros puede producir resultados decentes. Pero evitar el sobreajuste y lograr un éxito persistente requiere pruebas de retroceso, optimización y mejoras continuas desde múltiples dimensiones.


/*backtest
start: 2023-08-23 00:00:00
end: 2023-09-22 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version = 2
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 05/12/2016
// DiNapoli Detrended Oscillator Strategy
// You can change long to short in the Input Settings
// Please, use it only for learning or paper trading. Do not for real trading.
////////////////////////////////////////////////////////////
strategy(title="DiNapoli Detrended Oscillator Strategy Backtest")
Length = input(14, minval=1)
Trigger = input(0)
reverse = input(true, title="Trade reverse")
hline(Trigger, color=gray, linestyle=line)
xSMA = sma(close, Length)
nRes = close - xSMA
pos = iff(nRes > Trigger, 1,
	   iff(nRes <= Trigger, -1, nz(pos[1], 0))) 
possig = iff(reverse and pos == 1, -1,
         iff(reverse and pos == -1, 1, pos))	   
if (possig == 1) 
    strategy.entry("Long", strategy.long)
if (possig == -1)
    strategy.entry("Short", strategy.short)	   	    
plot(nRes, color=blue, title="DiNapoli")
barcolor(possig == -1 ? red: possig == 1 ? green : blue )

Más.