Estrategia de reversión de puntos de giro significativos

El autor:¿ Qué pasa?, Fecha: 2024-01-29 14:58:15
Las etiquetas:

img

Resumen general

Esta estrategia optimiza la estrategia tradicional de inversión de puntos de pivote mediante el cálculo del ATR y la configuración de filtros ATR para eliminar los puntos de pivote insignificantes, operando solo en los verdaderamente significativos.

Estrategia lógica

La lógica central es identificar los puntos de pivote significativos de picos y bajos.

  1. Calcular el ATR y establecer el factor de filtro ATR atr_mult.
  2. Cruzar un cierto número de barras a la izquierda (establecido por leftBars), si el pivote de pico es mayor que cualquier alto + ATR*atr_mult a la izquierda, el pivote es inválido.
  3. Cruzar un cierto número de barras a la derecha (establecido por rightBars), si el pivote de pico es mayor que cualquier alto + ATR*atr_mult a la derecha, el pivote es inválido.
  4. Si el pivote de pico sigue siendo válido después de los ensayos anteriores, devuélvelo como pivote de pico importante.

La lógica para el cálculo de los pivotes mínimos significativos es similar.

Después de obtener los pivotes significativos, vaya corto cuando el precio rompe un pivote de pico importante, y vaya largo cuando rompe un pivote de fondo importante.

Análisis de ventajas

Las principales ventajas de esta estrategia son las siguientes:

  1. El filtro ATR y atr_mult puede eliminar las fluctuaciones insignificantes y solo negociar pivots verdaderamente significativos, evitando operaciones innecesarias.
  2. El parámetro ATR dinámico puede ajustar automáticamente el rango de negociación en mercados volátiles, evitando el exceso de negociación.
  3. La reversión de los puntos pivot tiene una tasa de ganancia y rentabilidad relativamente altas.

Análisis de riesgos

Los principales riesgos son:

  1. Los parámetros incorrectos de ATR pueden filtrar demasiadas operaciones válidas.
  2. El riesgo de quedar atrapado todavía existe, hay que establecer un stop loss para controlar el riesgo.
  3. Las estrategias de reversión son sensibles a los costes de transacción, y deben establecerse límites razonables de pérdida y beneficios.

Para controlar los riesgos anteriores, optimizar desde los siguientes aspectos:

  1. Optimizar los parámetros del ATR para garantizar suficientes oportunidades comerciales.
  2. Establecer razonables tasas de stop loss y take profit.
  3. Ajustar el tamaño de las posiciones para reducir el impacto de los costes de transacción.

Direcciones de optimización

Otras direcciones de optimización incluyen:

  1. Combinar con otros indicadores para determinar el régimen del mercado, evitando inversiones comerciales en los mercados de tendencia.

  2. Añadir algoritmos de aprendizaje automático para optimizar automáticamente los parámetros.

  3. Modelos de entrenamiento que utilizan datos cuantitativos para encontrar el rango óptimo de ATR. Más datos históricos mejoran la precisión de selección de parámetros.

  4. Considere combinar con otras estrategias, utilizando las fortalezas de diferentes tipos de estrategias. Por ejemplo, combinar con una estrategia de tendencia, revertir durante el rango, seguir la tendencia durante las tendencias sostenidas.

Conclusión

Esta estrategia de inversión de pivote significativo filtra las fluctuaciones menores sin sentido mediante el cálculo de ATR y la configuración de filtros. Solo las inversiones comerciales en pivotes significativos pueden mejorar efectivamente la rentabilidad de la estrategia. Mientras tanto, también aumenta la dificultad de optimización de parámetros. Los parámetros óptimos deben encontrarse considerando de manera integral el rango ATR, las relaciones stop loss / take profit, etc. Si se optimiza a fondo, puede convertirse en una estrategia de trading a corto plazo altamente eficiente y estable.


/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("QuantNomad - Significant Pivot Reversal Strategy", shorttitle = "SPPS", overlay=true)

// Inputs 
leftBars   = input(4,   title = 'PP Left Bars')
rightBars  = input(2,   title = 'PP Right Bars')
atr_length = input(14,  title = 'ATR Length')
atr_mult   = input(0.1, title = 'ATR Mult')

// Pivot High Significant Function
pivotHighSig(left, right) =>
    pp_ok = true
    atr   = atr(atr_length)
    
    for i = 1 to left
        if (high[right] < high[right+i] + atr * atr_mult)
            pp_ok := false
    for i = 0 to right-1
        if (high[right] < high[i] + atr * atr_mult)
            pp_ok := false
    
    pp_ok ? high[right] : na

// Pivot Low Significant Function
pivotLowSig(left, right) =>
    pp_ok = true
    atr   = atr(atr_length)
    
    for i = 1 to left
        if (low[right] > low[right+i] - atr * atr_mult)
            pp_ok := false
    for i = 0 to right-1
        if (low[right] > low[i] - atr * atr_mult)
            pp_ok := false
    
    pp_ok ? low[right] : na


swh = pivotHighSig(leftBars, rightBars)
swl = pivotLowSig (leftBars, rightBars)

swh_cond = not na(swh)

hprice = 0.0
hprice := swh_cond ? swh : hprice[1]

le = false
le := swh_cond ? true : (le[1] and high > hprice ? false : le[1])

if (le)
    strategy.entry("PivRevLE", strategy.long, comment="PivRevLE", stop=hprice + syminfo.mintick)

swl_cond = not na(swl)

lprice = 0.0
lprice := swl_cond ? swl : lprice[1]


se = false
se := swl_cond ? true : (se[1] and low < lprice ? false : se[1])

if (se)
    strategy.entry("PivRevSE", strategy.short, comment="PivRevSE", stop=lprice - syminfo.mintick)

Más.