Estrategia de trading de tendencias cuantitativas multinivel basada en la ruptura de niveles de soporte y resistencia y en pruebas retrospectivas

Pivot SR MA BREAKOUT RETEST Trend
Fecha de creación: 2025-02-20 16:00:35 Última modificación: 2025-02-20 16:00:35
Copiar: 2 Número de Visitas: 377
2
Seguir
319
Seguidores

Estrategia de trading de tendencias cuantitativas multinivel basada en la ruptura de niveles de soporte y resistencia y en pruebas retrospectivas Estrategia de trading de tendencias cuantitativas multinivel basada en la ruptura de niveles de soporte y resistencia y en pruebas retrospectivas

Descripción general

Es una estrategia de trading cuantitativa basada en soportes de ruptura y retroceso de resistencias. La estrategia identifica los puntos clave de soporte y resistencia en el precio y realiza operaciones en los puntos de confirmación de retroceso después de la ruptura. La estrategia utiliza el posicionamiento dinámico de la barra para mirar hacia atrás y hacia atrás en los puntos clave, y combina la diferencia de retroceso para filtrar las rupturas falsas, lo que mejora la precisión y la estabilidad de las operaciones.

Principio de estrategia

La estrategia incluye principalmente la siguiente lógica central:

  1. Identificar los puntos de pivote clave de soporte y resistencia mirando hacia atrás y hacia adelante en un número determinado de líneas K
  2. Variables de estado de configuración que rastrean las rupturas y retroalimentación de los puntos de resistencia de los soportes candidatos
  3. Actualización de la resistencia de soporte del candidato cuando aparezcan nuevos puntos de pivote
  4. Hacer transacciones cuando el precio rompe la resistencia de soporte candidato y retrocede:
    • Hacer más cuando el precio baja de los soportes y vuelve a subir cerca de ellos
    • Cancelación cuando el precio rompe la resistencia y retrocede cerca de la resistencia
  5. El uso de parámetros de diferencia de capacidad para filtrar las fluctuaciones de precios en la detección de retroceso para mejorar la calidad de la señal

Ventajas estratégicas

  1. La teoría de análisis técnico clásico, la lógica clara y fácil de entender
  2. Es capaz de adaptarse rápidamente a los cambios, identificando los puntos clave de manera dinámica.
  3. Combinación de brecha y retroalimentación de doble confirmación para reducir las señales falsas
  4. Filtración de ruido con parámetros de tolerancia para mejorar la precisión
  5. Código claro, fácil de mantener y ampliar
  6. Aplicable para varios períodos de tiempo y variedades

Riesgo estratégico

  1. Las operaciones frecuentes en mercados convulsionados pueden causar pérdidas
  2. Las señales falsas de penetración aún existen.
  3. La optimización de parámetros puede tener el riesgo de sobreajuste
  4. El riesgo de pérdidas de mercado es mayor cuando el mercado es demasiado volátil.
  5. Necesidad de considerar el impacto en los costos de las transacciones

Dirección de optimización de la estrategia

  1. Aumentar el filtro de tendencias para operar sólo en la dirección de la tendencia principal
  2. Mecanismo de confirmación de las entregas
  3. Optimizar el tiempo de ingreso y considerar la confirmación de indicadores técnicos adicionales
  4. Mejora de los mecanismos de detención de daños
  5. Logística de gestión de posiciones
  6. Considere incluir análisis de ciclo de tiempo múltiple

Resumir

La estrategia se construye a través de la teoría clásica de la resistencia de soporte y la lógica de retroalimentación de ruptura, con una buena base teórica. Se puede obtener un efecto de negociación estable a través de la optimización de parámetros y el control de riesgos. La estructura del código de la estrategia es clara, fácil de entender y ampliar, con un fuerte valor práctico. Se recomienda un ajuste de parámetros adecuados en combinación con las condiciones del mercado y las preferencias de riesgo personales en el comercio en vivo.

Código Fuente de la Estrategia
/*backtest
start: 2024-02-21 00:00:00
end: 2025-02-18 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Binance","currency":"ETH_USDT"}]
*/

//@version=5
strategy("SR Breakout & Retest Strategy (4hr)", overlay=true, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=10)

// ===== USER INPUTS =====
leftBars    = input.int(3, "Left Pivot Bars", minval=1)
rightBars   = input.int(3, "Right Pivot Bars", minval=1)
tolerance   = input.float(0.005, "Retest Tolerance (Fraction)", step=0.001)

// ===== PIVOT CALCULATION =====
pLow  = ta.pivotlow(low, leftBars, rightBars)
pHigh = ta.pivothigh(high, leftBars, rightBars)

// ===== STATE VARIABLES FOR CANDIDATE LEVELS =====
var float candidateSupport  = na
var bool  supportBroken     = false
var bool  supportRetested   = false

var float candidateResistance = na
var bool  resistanceBroken    = false
var bool  resistanceRetested  = false

// ===== UPDATE CANDIDATE LEVELS =====
if not na(pLow)
    candidateSupport := pLow
    supportBroken    := false
    supportRetested  := false

if not na(pHigh)
    candidateResistance := pHigh
    resistanceBroken    := false
    resistanceRetested  := false

// ===== CHECK FOR BREAKOUT & RETEST =====
// -- Support: Price breaks below candidate support and then retests it --
if not na(candidateSupport)
    if not supportBroken and low < candidateSupport
        supportBroken := true

    if supportBroken and not supportRetested and close >= candidateSupport and math.abs(low - candidateSupport) <= candidateSupport * tolerance
        supportRetested := true
        label.new(bar_index, candidateSupport, "Support Retest", 
                  style=label.style_label_up, color=color.green, textcolor=color.white, size=size.tiny)
        // Example trading logic: Enter a long position on support retest
        strategy.entry("Long_Support", strategy.long)

// -- Resistance: Price breaks above candidate resistance and then retests it --
if not na(candidateResistance)
    if not resistanceBroken and high > candidateResistance
        resistanceBroken := true

    if resistanceBroken and not resistanceRetested and close <= candidateResistance and math.abs(high - candidateResistance) <= candidateResistance * tolerance
        resistanceRetested := true
        label.new(bar_index, candidateResistance, "Resistance Retest", 
                  style=label.style_label_down, color=color.red, textcolor=color.white, size=size.tiny)
        // Example trading logic: Enter a short position on resistance retest
        strategy.entry("Short_Resistance", strategy.short)

// ===== PLOTTING =====
plot(pLow, title="Pivot Low (Support)", style=plot.style_circles, color=color.green, linewidth=2)
plot(pHigh, title="Pivot High (Resistance)", style=plot.style_circles, color=color.red, linewidth=2)