Estrategia de trading dinámica basada en Z-score y supertendencia: sistema de cambio de posiciones largas a cortas

RSI ATR SMA
Fecha de creación: 2024-11-27 16:01:20 Última modificación: 2024-11-27 16:01:20
Copiar: 0 Número de Visitas: 528
1
Seguir
1617
Seguidores

Estrategia de trading dinámica basada en Z-score y supertendencia: sistema de cambio de posiciones largas a cortas

Descripción general

La estrategia es un sistema de comercio cuantitativo que combina el método estadístico Z-Score, el indicador RSI y el indicador Supertrend. La estrategia busca oportunidades de comercio de alta probabilidad en el mercado mediante la monitorización de la desviación estadística de los precios, la combinación de indicadores de dinámica y la confirmación de tendencias.

Principio de estrategia

La lógica central de la estrategia se basa en la sinergia de tres indicadores técnicos principales: primero, la medición de la desviación del precio actual con respecto a la media histórica mediante el cálculo de un Z-score en el precio, en el que se utilizan un promedio móvil y una diferencia estándar de 75 ciclos. Cuando el Z-score es superior a 1.1 o inferior a -1.1, se indica que el precio se ha desviado estadísticamente significativamente.

Ventajas estratégicas

  1. Confirmación de múltiples señales: mejora significativamente la fiabilidad de las señales de negociación mediante la combinación de indicadores en tres dimensiones: estadística, dinámica y tendencia.
  2. Adaptabilidad: El método de cálculo de la puntuación Z permite que la estrategia se adapte a diferentes entornos de mercado sin verse afectada por el nivel absoluto de precios.
  3. Control de riesgos mejorado: el indicador de tendencias súper proporciona un seguimiento automático de tendencias y un mecanismo de control de riesgos.
  4. Negociación bidireccional: La estrategia permite capturar oportunidades en las dos direcciones del espacio libre, mejorando la eficiencia de la utilización de los fondos.
  5. La claridad de la señal: la estrategia utiliza modelos matemáticos claros y indicadores objetivos, evitando juicios subjetivos.

Riesgo estratégico

  1. Riesgo de atraso: debido al uso de promedios móviles de varios períodos, la estrategia puede sufrir un retraso en la señal en mercados que cambian rápidamente.
  2. Riesgo de brechas falsas: En los mercados de discusión, las señales de brechas falsas pueden ser frecuentes.
  3. Sensibilidad de parámetros: la eficacia de la estrategia depende en gran medida de la elección de los parámetros, y diferentes entornos de mercado pueden requerir diferentes configuraciones de parámetros.
  4. Dependencia de las condiciones del mercado: En mercados donde no hay una tendencia clara, la estrategia puede no funcionar lo suficientemente bien.

Dirección de optimización de la estrategia

  1. Ajuste de parámetros dinámicos: Se puede introducir un mecanismo de parámetros adaptativos para ajustar automáticamente los parámetros de los mínimos de Z-score y las tendencias súper según la volatilidad del mercado.
  2. Aumentar el filtro de entornos de mercado: agregar el módulo de identificación de entornos de mercado para usar diferentes combinaciones de parámetros en diferentes condiciones de mercado.
  3. Mecanismos de detención de pérdidas: Introducción de estrategias de detención de pérdidas dinámicas, como la detención de pérdidas basadas en ATR o el seguimiento de las pérdidas.
  4. Filtración de la señal de optimización: Se puede agregar la confirmación de la transacción o otros indicadores técnicos para filtrar aún más las señales de transacción.
  5. Introducción de filtros de tiempo: Considere la posibilidad de incrementar las ventanas de tiempo de negociación para evitar períodos de mayor volatilidad.

Resumir

Se trata de una estrategia de trading cuantitativa que combina métodos estadísticos y análisis técnico para mejorar la fiabilidad de las operaciones mediante la confirmación de múltiples señales. La ventaja central de la estrategia radica en su modelo matemático objetivo y su mecanismo de control de riesgos perfectos, pero al mismo tiempo se debe prestar atención a la optimización de los parámetros y a la adaptabilidad del mercado.

Código Fuente de la Estrategia
/*backtest
start: 2024-01-01 00:00:00
end: 2024-11-26 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Z-Score Long and Short Strategy with Supertrend", overlay=true)

// Inputs for Z-Score
len = input.int(75, "Z-Score Lookback Length")
z_long_threshold = 1.1  // Threshold for Z-Score to open long
z_short_threshold = -1.1  // Threshold for Z-Score to open short

// Z-Score Calculation
z = (close - ta.sma(close, len)) / ta.stdev(close, len)

// Calculate Driver RSI
driver_rsi_length = input.int(14, "Driver RSI Length")  // Input for RSI Length
driver_rsi = ta.rsi(close, driver_rsi_length)  // Calculate the RSI

// Supertrend Parameters
atrPeriod = input.int(11, "ATR Length", minval=1)
factor = input.float(2.0, "Factor", minval=0.01, step=0.01)

// Supertrend Calculation
[supertrend, direction] = ta.supertrend(factor, atrPeriod)

// Conditions for Long and Short based on Z-Score
z_exceeds_long = z >= z_long_threshold and driver_rsi > 60
z_exceeds_short = z <= z_short_threshold and driver_rsi < 40

// Entry Conditions
if (z_exceeds_long and direction < 0) // Enter Long if Z-Score exceeds threshold and Supertrend is down
    strategy.entry("Long", strategy.long)
    label.new(bar_index, low, text="Open Long", style=label.style_label_up, color=color.green, textcolor=color.white, size=size.small)
    alert("Open Long", alert.freq_once_per_bar)  // Alert for Long entry

if (z_exceeds_short and direction > 0) // Enter Short if Z-Score exceeds threshold and Supertrend is up
    strategy.entry("Short", strategy.short)
    label.new(bar_index, high, text="Open Short", style=label.style_label_down, color=color.red, textcolor=color.white, size=size.small)
    alert("Open Short", alert.freq_once_per_bar)  // Alert for Short entry

// Plot Supertrend
upTrend = plot(direction < 0 ? supertrend : na, "Up Trend", color=color.green, style=plot.style_linebr)
downTrend = plot(direction > 0 ? supertrend : na, "Down Trend", color=color.red, style=plot.style_linebr)
fill(upTrend, downTrend, color=color.new(color.green, 90), fillgaps=false)

// Alert conditions for Supertrend changes (optional)
alertcondition(direction[1] > direction, title='Downtrend to Uptrend', message='The Supertrend value switched from Downtrend to Uptrend')
alertcondition(direction[1] < direction, title='Uptrend to Downtrend', message='The Supertrend value switched from Uptrend to Downtrend')