Estrategia de Supertrend con tres superposiciones

El autor:¿ Qué pasa?, Fecha: 2024-02-26 10:04:18
Las etiquetas:

img

Resumen general

Esta es una estrategia que toma decisiones comerciales basadas en tres indicadores SuperTrend superpuestos. Puede capturar oportunidades direccionales más grandes en mercados de tendencia.

Estrategia lógica

La estrategia utiliza la función ta.supertrend() para calcular tres indicadores de SuperTrend con diferentes configuraciones de parámetros, a saber, SuperTrend1 con 10 días y un multiplicador de 3, SuperTrend2 con 14 días y un multiplicador de 2, y SuperTrend3 con 20 días y un multiplicador de 2.5.

El indicador SuperTrend incorpora el indicador ATR para rastrear de manera efectiva los cambios de tendencia de precios.

Ventajas

  1. El mecanismo de triple filtro evita señales falsas y mejora la calidad de la señal
  2. El propio SuperTrend tiene una buena capacidad de reducción de ruido
  3. Se pueden configurar múltiples combinaciones de hiperparámetros para adaptarse a más entornos de mercado
  4. Buen desempeño histórico con una elevada relación rendimiento/riesgo

Los riesgos

  1. Las señales de filtración múltiples pueden perder algunas oportunidades
  2. No tiene un buen desempeño en diversos mercados
  3. Requiere la optimización de combinaciones de tres conjuntos de hiperparámetros
  4. El tiempo de negociación concentrado es susceptible a eventos repentinos

Para reducir los riesgos se pueden considerar las siguientes medidas:

  1. Ajuste las condiciones de filtración, mantenga uno o dos SuperTrends
  2. Añadir una estrategia de stop loss
  3. Optimiza los hiperparámetros para mejorar la tasa de ganancia

Direcciones de optimización

  1. Prueba más combinaciones de parámetros para encontrar hiperparámetros óptimos
  2. Añadir algoritmos de aprendizaje automático para la optimización de parámetros en tiempo real
  3. Añadir estrategias de stop loss para controlar pérdidas individuales
  4. Incorporar otros indicadores para identificar tendencias y intervalos
  5. Extender el tiempo de negociación para evitar riesgos en un solo momento

Conclusión

Esta estrategia toma decisiones basadas en tres SuperTendencias superpuestas, que pueden identificar efectivamente la dirección de la tendencia. Tiene ventajas como alta calidad de señal y parámetros configurables. Al mismo tiempo, también hay ciertos riesgos. Los parámetros y el tiempo de salida deben ajustarse para adaptarse a diferentes entornos de mercado. En general, la estrategia tiene un rendimiento excepcionalmente bueno y merece más investigación y aplicación.


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

//@version=5
strategy('Combined Supertrend Strategy - Ajit Prasad', overlay=true)

// Function to calculate Supertrend
supertrendFunc(atrLength, factor) =>
    [supertrend, direction] = ta.supertrend(factor, atrLength)
    [supertrend, direction]

// Input parameters for the first Supertrend
atrPeriod1 = input(10, 'ATR Length 1')
factor1 = input(3, 'Factor 1')

// Calculate the first Supertrend
[supertrend1, direction1] = supertrendFunc(atrPeriod1, factor1)

// Input parameters for the second Supertrend
atrPeriod2 = input(14, 'ATR Length 2') // Change values as needed
factor2 = input(2, 'Factor 2') // Change values as needed

// Calculate the second Supertrend
[supertrend2, direction2] = supertrendFunc(atrPeriod2, factor2)

// Input parameters for the third Supertrend
atrPeriod3 = input(20, 'ATR Length 3') // Change values as needed
factor3 = input(2.5, 'Factor 3') // Change values as needed

// Calculate the third Supertrend
[supertrend3, direction3] = supertrendFunc(atrPeriod3, factor3)

// Define market opening and closing times
marketOpenHour = 9
marketOpenMinute = 15
marketCloseHour = 15
marketCloseMinute = 30
exitTimeHour = 15
exitTimeMinute = 10

// Fetch historical close values using security function
histClose = request.security(syminfo.tickerid, "D", close)

// Buy condition
buyCondition = close > supertrend1 and close > supertrend2 and close > supertrend3 and close[1] <= supertrend1[1]

// Sell condition
sellCondition = close < supertrend1 and close < supertrend2 and close < supertrend3 and close[1] >= supertrend1[1]

// Exit conditions
buyExitCondition = close < supertrend1[1] or close < supertrend2[1] or close < supertrend3[1]
sellExitCondition = close > supertrend1[1] or close > supertrend2[1] or close > supertrend3[1]

// Execute orders with market timing
if true
    // Buy condition without 'and not'
    strategy.entry('Buy', strategy.long, when = buyCondition)

    // Sell condition without 'and not'
    strategy.entry('Sell', strategy.short, when = sellCondition)

    // Close conditions
    strategy.close('Buy', when = buyExitCondition )
    strategy.close('Sell', when = sellExitCondition)

// Close all trades at 3:10 pm IST
if true
    strategy.close_all()

// Plot Supertrends
plot(supertrend1, 'Supertrend 1', color=color.new(color.green, 0), style=plot.style_linebr)
plot(supertrend2, 'Supertrend 2', color=color.new(color.red, 0), style=plot.style_linebr)
plot(supertrend3, 'Supertrend 3', color=color.new(color.blue, 0), style=plot.style_linebr)

// Plot labels
plotshape(buyCondition, style=shape.labelup, location=location.belowbar, color=color.new(color.green, 0), size=size.large, text='Buy Signal', textcolor=color.new(color.white, 0))
plotshape(sellCondition, style=shape.labeldown, location=location.abovebar, color=color.new(color.red, 0), size=size.large, text='Sell Signal', textcolor=color.new(color.white, 0))

Más.