En la carga de los recursos... Cargando...

Estrategia de negociación dinámica adaptativa basada en rendimientos logarítmicos normalizados

El autor:¿ Qué pasa?, Fecha: 2024-12-27 14:39:32
Las etiquetas:El SZILa SMAEl número de personasEnfermedad de transmisión sexual

img

Resumen general

Esta estrategia es un sistema de negociación adaptativo basado en el índice Shiryaev-Zhou (SZI). Identifica las condiciones de mercado de sobrecompra y sobreventa mediante el cálculo de puntuaciones estandarizadas de rendimientos logarítmicos, con el objetivo de capturar oportunidades de reversión media. La estrategia incorpora objetivos dinámicos de stop-loss y take-profit para un control preciso del riesgo.

Principios de estrategia

El núcleo de la estrategia radica en la construcción de un indicador estandarizado utilizando propiedades estadísticas rodantes de retornos logarítmicos.

  1. Calcular los retornos logarítmicos para la normalización
  2. Calcular la media móvil y la desviación estándar utilizando una ventana de 50 períodos
  3. Construir SZI: (retorno logarítmico - media de rodaje) /desviación estándar de rodaje
  4. Generar señales largas cuando el SZI cae por debajo de -2.0 y señales cortas cuando supera 2.0
  5. Establecer niveles de stop loss del 2% y de take profit del 4% basados en el precio de entrada

Ventajas estratégicas

  1. Fundamento teórico sólido: basado en supuestos de distribución log-normal con un fuerte apoyo estadístico
  2. Alta adaptabilidad: los cálculos de las ventanas de rodaje se adaptan a los cambios en las características de volatilidad del mercado
  3. Control integral del riesgo: la estrategia de stop-loss basada en el porcentaje permite un control preciso del riesgo para cada operación
  4. Visualización fácil de usar: anotación clara de las señales de negociación y los niveles de control de riesgos en los gráficos

Riesgos estratégicos

  1. Sensibilidad de parámetros: El rendimiento de la estrategia afectado significativamente por la elección de la longitud y los umbrales de la ventana móvil
  2. Dependencia del entorno del mercado: puede generar frecuentes señales falsas en mercados de tendencia
  3. Impacto del deslizamiento: los precios de ejecución reales pueden desviarse significativamente de los niveles ideales durante los períodos volátiles
  4. Retardo en el cálculo: el cálculo en tiempo real de los indicadores estadísticos puede provocar retraso en la señal

Direcciones de optimización

  1. Prazos dinámicos: considerar el ajuste de los umbrales de señal en función de la volatilidad del mercado
  2. Marcos de tiempo múltiples: Introduzca mecanismos de confirmación de señal en múltiples marcos de tiempo
  3. Filtración de volatilidad: Pausa de la negociación o ajuste de posiciones durante períodos de volatilidad extrema
  4. Confirmación de la señal: añadir volumen, impulso y otros indicadores auxiliares para la confirmación de la señal
  5. Gestión de posiciones: aplicar el dimensionamiento dinámico de las posiciones basado en la volatilidad

Resumen de las actividades

Esta es una estrategia de negociación cuantitativa construida sobre bases estadísticas sólidas, que captura oportunidades de volatilidad de precios a través de rendimientos logarítmicos estandarizados. Las principales fortalezas de la estrategia se encuentran en su adaptabilidad y control de riesgos integral, aunque sigue habiendo espacio para la optimización en la selección de parámetros y la adaptación al entorno del mercado. A través de la introducción de umbrales dinámicos y mecanismos de confirmación de señales multidimensionales, la estabilidad y fiabilidad de la estrategia pueden mejorarse aún más.


/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-25 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Jalambi Paul model", overlay=true)

// Define the length for the rolling window
window = input.int(50, title="Window Length", minval=1)
threshold = 2.0 // Fixed threshold value
risk_percentage = input.float(1.0, title="Risk Percentage per Trade", step=0.1) / 100

// Calculate the logarithmic returns
log_return = math.log(close / close[1])

// Calculate the rolling mean and standard deviation
rolling_mean = ta.sma(log_return, window)
rolling_std = ta.stdev(log_return, window)

// Calculate the Shiryaev-Zhou Index (SZI)
SZI = (log_return - rolling_mean) / rolling_std

// Generate signals based on the fixed threshold
long_signal = SZI < -threshold
short_signal = SZI > threshold

// Plot the signals on the main chart (overlay on price)
plotshape(series=long_signal, location=location.belowbar, color=color.green, style=shape.labelup, title="Buy Signal", text="BUY", offset=-1)
plotshape(series=short_signal, location=location.abovebar, color=color.red, style=shape.labeldown, title="Sell Signal", text="SELL", offset=-1)

// Strategy logic: Buy when SZI crosses below the negative threshold, Sell when it crosses above the positive threshold
if (long_signal)
    strategy.entry("Buy", strategy.long, comment="Long Entry")
    
if (short_signal)
    strategy.entry("Sell", strategy.short, comment="Short Entry")

// Calculate the stop loss and take profit levels based on the percentage of risk
stop_loss_pct = input.float(2.0, title="Stop Loss (%)") / 100
take_profit_pct = input.float(4.0, title="Take Profit (%)") / 100

// Set the stop loss and take profit levels based on the entry price
strategy.exit("Take Profit / Stop Loss", "Buy", stop=close * (1 - stop_loss_pct), limit=close * (1 + take_profit_pct))
strategy.exit("Take Profit / Stop Loss", "Sell", stop=close * (1 + stop_loss_pct), limit=close * (1 - take_profit_pct))

// Plot the stop loss and take profit levels for visualization (optional)
plot(stop_loss_pct != 0 ? close * (1 - stop_loss_pct) : na, color=color.red, linewidth=1, title="Stop Loss Level")
plot(take_profit_pct != 0 ? close * (1 + take_profit_pct) : na, color=color.green, linewidth=1, title="Take Profit Level")


Relacionados

Más.