Estrategia de negociación de BankNifty Supertrend

El autor:¿ Qué pasa?, Fecha: 2023-12-29 17:09:57
Las etiquetas:

img

Resumen general

Esta es una estrategia de negociación basada en la línea K de 5 minutos de BankNifty utilizando el indicador Supertrend.

Principio de la estrategia

La estrategia primero define variables de entrada como sesiones de negociación y rangos de fechas.

Luego calcula el indicador de Supertrend y su dirección.

Al comienzo de cada sesión de negociación, la estrategia espera que se formen 3 velas antes de considerar entrar en una operación.

La señal larga es cuando la dirección del indicador de Supertrend cambia de abajo a arriba; la señal corta es cuando la dirección de Supertrend cambia de arriba a abajo.

Los puntos de stop loss fijos y el porcentaje de stop loss posterior se pueden ajustar a través de variables de entrada.

Al final de la sesión, la estrategia cerrará todas las posiciones abiertas.

Ventajas de la estrategia

Esta es una estrategia de trading simple que utiliza indicadores para identificar tendencias.

  1. Utilice el indicador Supertrend para juzgar la dirección de la tendencia, que puede identificar efectivamente las tendencias
  2. La combinación de sesiones de negociación puede evitar la sesión de apertura y cierre más volátil
  3. Establecer el stop loss para bloquear las ganancias
  4. Muchos parámetros se pueden ajustar libremente a través de variables de entrada, alta adaptabilidad

Riesgos de la estrategia

La estrategia también tiene algunos riesgos:

  1. El indicador de Supertrend tiene retraso, puede perder el mejor punto de entrada
  2. El juicio de un solo indicador es propenso a verse afectado por falsas rupturas, la tasa de ganancia puede ser baja
  3. No tiene en cuenta la tendencia del mercado, puede diferir del mercado general
  4. La configuración incorrecta de la parada de pérdidas puede dar lugar a pérdidas mayores de las esperadas

Estos riesgos pueden reducirse optimizando los parámetros del indicador Supertrend o añadiendo otros juicios sobre el indicador.

Direcciones de optimización

La estrategia también puede optimizarse en los siguientes aspectos:

  1. Añadir otros juicios de indicadores para formar una estrategia combinada, mejorar la estabilidad
  2. Añadir un juicio general de la tendencia del mercado para evitar divergencias con respecto al mercado
  3. Optimizar los parámetros del indicador de Supertrend, encontrar la mejor longitud y factor
  4. Ajuste la estrategia de stop loss, como el seguimiento de la stop loss junto con la tendencia
  5. Prueba en diferentes productos, encuentra la mejor combinación

Conclusión

En resumen, esta es una estrategia de trading de indicadores de Supertrend basada en el gráfico de BankNifty de 5 minutos. Utiliza el indicador de Supertrend para determinar la dirección de la tendencia y combina sesiones de trading y reglas de gestión de riesgos para el comercio. En comparación con estrategias cuantitativas complejas, esta estrategia tiene reglas simples y claras que son fáciles de entender e implementar. Como una estrategia de muestra, proporciona una base y dirección para la optimización y mejora futuras. A través del refinamiento y mejora continuos, se espera que la estrategia pueda convertirse en una estrategia de trading cuantitativa confiable y rentable.


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

//@version=5
strategy("BankNifty 5min Supertrend Based Strategy, 09:15 Entry with Date Range and Risk Management")

// Session and date range input variables
session = input("0915-1510", "Session", group="Indian Session Time")
start_date = input(title="Start Date", defval=timestamp("01 Jan 2022 00:00:00"), group="Backtest Specific Range")
end_date = input(title="End Date", defval=timestamp("01 Dec 2023 23:59:59"))
atrPeriod = input(50, "ATR Length", group="SuperTrend Setting")
factor = input.float(3.0, "Factor", step=0.1)

useDelay = input(true, "Use Delay?", group="Delay at Session Start")
Delay = useDelay ? input(10, title="Delay N numbers of candle", group="Delay at Session Start") : na

useDelay_stopLoss = input(true, "Use Stoploss Points?", group="Risk Management")
stopLoss = useDelay_stopLoss ? input(100, "Stop Loss Points", group="Risk Management"): na

useDelay_stopLossPerc1 = input(true, "Use Stoploss Trail?", group="Risk Management")
stopLossPerc1 =useDelay_stopLossPerc1 ? input.float(0.1, "Stop Loss Trail%", step=0.1,maxval = 1, group="Risk Management"): na
// Check if current time is within the specified session and date range
inSession = true

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

// Wait for 3 candles to form at the start of every session
var candlesFormed = 0
if inSession and not inSession[1]
    candlesFormed := 1
else if inSession and candlesFormed > 0
    candlesFormed := candlesFormed + 1
else
    candlesFormed := 0


//

// Only enter trades if 3 candles have formed at the start of the session
entryce = (ta.change(direction) < 0) or (candlesFormed >= Delay and direction < 0)
exitce = ta.change(direction) > 0
entrype = (ta.change(direction) > 0) or (candlesFormed >= Delay and direction > 0)
exitpe = ta.change(direction) < 0
var entryPrice = 0.0
if entryce and inSession
    // Enter long trade
    onePercent = strategy.position_avg_price *stopLossPerc1
    entryPrice := close
    strategy.entry("My Long Entry Id", strategy.long, comment="long" )
    // Set stop loss at x% below entry price
    strategy.exit("My Long Exit Id", "My Long Entry Id", stop=(entryPrice - stopLoss),trail_points=onePercent )
    
if entrype and inSession
    onePercent1 = strategy.position_avg_price *stopLossPerc1
    entryPrice := close
    // Enter short trade
    strategy.entry("My Short Entry Id", strategy.short, comment="short")
    // Set stop loss at x% above entry price
    strategy.exit("My Short Exit Id", "My Short Entry Id", stop=(entryPrice + stopLoss),trail_points=onePercent1)

// Close all trades at end of session
if not inSession and strategy.opentrades > 0
    strategy.close_all()

// Plot Supertrend with changing colors
plot(supertrend, title="Supertrend", color=direction == 1 ? color.red : color.green, linewidth=2)





Más.