Estrategia de negociación de reversión de Gauss

El autor:¿ Qué pasa?, Fecha: 2023-11-07 15:01:19
Las etiquetas:

img

Resumen general

Esta es una estrategia que identifica posibles reversiones de precios utilizando un oscilador de precios deteriorado de Gauss (GDPO) personalizado combinado con ciclos de precios suavizados.

Estrategia lógica

La estrategia primero calcula el Oscilador de Precios Detenido (DPO) comparando el precio de cierre con una Media Móvil Exponencial (EMA) durante un período especificado para identificar ciclos de precios a corto plazo.

Las reglas de entrada y salida se definen en función de los eventos de cruce entre el GDPO suavizado y su versión rezagada. Una posición larga se ingresa cuando el GDPO suavizado cruza por encima del retraso y es negativo. La posición larga se sale cuando el GDPO suavizado cruza por debajo del retraso o la línea cero. Una posición corta se ingresa cuando el GDPO suavizado cruza por debajo del retraso y es positivo. La posición corta se sale cuando el GDPO suavizado cruza por encima del retraso o la línea cero.

El PIBO suavizado y su retraso se trazan en colores distintos. La línea cero también se muestra como referencia. El color de fondo del gráfico cambia cuando la estrategia entra en una posición. Los marcadores cruzados se trazan en los puntos de cruce como señales de salida.

Análisis de ventajas

La estrategia combina técnicas de detrente y suavización gaussiana para identificar más claramente las oportunidades de reversión en comparación con otros osciladores.

Análisis de riesgos

La estrategia es sensible al ajuste de parámetros como las longitudes de período y los parámetros de suavizado. Se requiere una extensa prueba de retroceso para determinar los parámetros óptimos, de lo contrario pueden ocurrir señales falsas excesivas. La estrategia puede producir pérdidas consecutivas en los mercados de tendencia. Se debe utilizar el stop loss para controlar la pérdida de una sola operación. Las reversiones fallidas también son un riesgo importante. La probabilidad de reversión debe confirmarse utilizando patrones de gráficos y la fuerza de la tendencia.

La optimización se puede hacer ajustando dinámicamente los parámetros e incorporando indicadores de tendencia para mejorar la robustez.

Direcciones de optimización

La estrategia se puede optimizar en varios aspectos:

  1. Ajustar dinámicamente los parámetros de suavizado para aumentar la suavización de las tendencias y reducir las señales falsas.

  2. Incorporar indicadores de tendencia como ADX para evitar pérdidas en mercados de tendencia.

  3. Agregue mecanismos de stop loss como paradas dinámicas o traseras.

  4. Optimizar las condiciones de entrada utilizando indicadores o patrones adicionales para una mayor precisión de entrada.

  5. Optimizar la gestión del capital ajustando el tamaño de las posiciones y las paradas en función de las condiciones del mercado.

  6. Pruebe la estrategia en diferentes plazos de tiempo como datos diarios o semanales.

Resumen de las actividades

La estrategia de reversión detendida de Gauss identifica ciclos a corto plazo utilizando el GDPO y extrae señales con filtro de Gauss para capturar reversiones bajo reglas de entrada y salida definidas.


/*backtest
start: 2022-10-31 00:00:00
end: 2023-11-06 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0
// © DraftVenture

//@version=5
strategy(title="Gaussian Detrended Reversion Strategy", overlay=false, default_qty_type=strategy.percent_of_equity, default_qty_value=15)

//Detrended Price Oscillator for price cycles
period_ = input.int(50, title="Price Length", minval=1)

barsback = period_/2 + 1
ma = ta.ema(close, period_)
dpo = close - ma[barsback]

// Rounded ALMA Calculations for gaussian smoothing
almaSource = dpo
almaWindowSize = input(title="Smoothing Length", defval=50)
lagLength = input(title="Lag Length", defval=25)
almaSmoothed = ta.alma(almaSource, almaWindowSize, 0.85, 6)
almaLag = almaSmoothed[lagLength]

// Reversion entry conditions
entryL = ta.crossover(almaSmoothed, almaLag) and almaSmoothed < 0
exitL = ta.crossunder(almaSmoothed, almaLag) or ta.crossunder(almaSmoothed, 0)
entryS = ta.crossunder(almaSmoothed, almaLag) and almaSmoothed > 0
exitS = ta.crossover(almaSmoothed, almaLag) or ta.crossover(almaSmoothed, 0)

// Long entry and exit
if entryL
    strategy.entry("Long", strategy.long)

if exitL
    strategy.close("Long")

// Short entry and exit
if entryS
    strategy.entry("Short", strategy.short)

if exitS
    strategy.close("Short")

// Plot the oscillator
plot(almaSmoothed, title="GDPO", color=color.green)
plot(almaLag, title="Lag", color=color.white)

hline(0, title="Zero Line", color=color.white)

bgcolor(entryL ? color.new(color.green, 40) : na)
bgcolor(entryS ? color.new(color.red, 40) : na)

plotshape(series=ta.crossunder(almaSmoothed, almaLag) or ta.crossunder(almaSmoothed, 0), style=shape.xcross, location=location.top, color=color.white, size=size.tiny)
plotshape(series=ta.crossover(almaSmoothed, almaLag) or ta.crossover(almaSmoothed, 0), style=shape.xcross, location=location.bottom, color=color.white, size=size.tiny)

//Strategy by KP

Más.