Estrategia de supertendencia de triple superposición


Fecha de creación: 2024-02-26 10:04:18 Última modificación: 2024-02-26 10:04:18
Copiar: 3 Número de Visitas: 633
1
Seguir
1617
Seguidores

Estrategia de supertendencia de triple superposición

Descripción general

Es una estrategia para tomar decisiones comerciales que utiliza tres indicadores superpuestos de tendencia. Puede capturar grandes oportunidades direccionales en situaciones de tendencia.

Principio de estrategia

La estrategia utiliza la función ta.supertrend() para calcular el indicador de supertrend de tres diferentes configuraciones de parámetros. Se calcula la supertrend de 3 veces ATR el día 10, la supertrend de 1 veces ATR el día 14, la supertrend de 2 veces ATR el día 2, y la supertrend de 2.5 veces ATR el día 20. Se genera una señal de compra cuando el precio cruza las tres supertrends. Se genera una señal de venta cuando el precio cruza las tres supertrends.

El indicador de supertrend, combinado con el indicador ATR, permite un seguimiento eficaz de las tendencias de cambio de precios. La estrategia de la supertrend triple se superpone, lo que hace que la señal sea más confiable y, por lo tanto, obtenga mayores ganancias en situaciones de tendencia.

Ventajas estratégicas

  1. Mecanismo de triple filtración, evita falsas señales y mejora la calidad de la señal
  2. El indicador de tendencia hiper tiene una buena función de silenciamiento
  3. Se pueden configurar varias combinaciones de hiperparámetros para adaptarse a un entorno de mercado más amplio
  4. Las pruebas históricas son buenas, los beneficios son más altos que los riesgos

Riesgo estratégico

  1. Las señales de filtración múltiple pueden haber perdido algunas oportunidades
  2. No fue un buen desempeño durante el terremoto.
  3. Combinación de los tres grupos de hiperparámetros que se necesitan optimizar
  4. El tiempo de centralización de operaciones es vulnerable a eventos inesperados.

Los siguientes puntos pueden ser considerados para reducir el riesgo:

  1. Ajuste las condiciones de filtración para mantener una o dos tendencias extremas
  2. Aumentar las estrategias de alto riesgo
  3. Optimización de los súper parámetros para mejorar la tasa de éxito

Dirección de optimización de la estrategia

  1. Prueba más combinaciones de parámetros para encontrar el mejor superparámetro
  2. Aumento de algoritmos de aprendizaje automático para optimizar los parámetros en tiempo real
  3. Aumentar las estrategias de stop loss y controlar las pérdidas individuales
  4. Combinado con otros indicadores, para identificar tendencias y fluctuaciones
  5. Ampliar el tiempo de negociación para evitar el riesgo de un solo nodo de tiempo

Resumir

Esta estrategia toma decisiones mediante la superposición de tres tendencias superpuestas, lo que permite identificar la dirección de la tendencia. Tiene ventajas como la alta calidad de la señal y la optimización de los parámetros. Al mismo tiempo, existe un cierto riesgo que requiere ajustar los parámetros y el tiempo de salida para adaptarse a diferentes entornos del mercado. En general, la estrategia se ha destacado y merece más investigación y aplicación.

Código Fuente de la Estrategia
/*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))