Estratégia de negociação do BankNifty Supertrend

Autora:ChaoZhang, Data: 2023-12-29 17:09:57
Tags:

img

Resumo

Esta é uma estratégia de negociação baseada na linha K de 5 minutos do BankNifty usando o indicador Supertrend.

Princípio da estratégia

A estratégia define primeiro variáveis de entrada, como sessões de negociação e intervalos de datas.

O indicador Supertrend pode identificar a direcção da tendência.

No início de cada sessão de negociação, a estratégia espera que 3 velas se formem antes de considerar entrar em um comércio.

O sinal longo é quando a direção do indicador Supertrend muda de baixo para cima; o sinal curto é quando a direção do Supertrend muda de cima para baixo.

Após a entrada, o stop loss será definido. Tanto os pontos de stop loss fixos quanto a porcentagem de stop loss traseira podem ser ajustados através de variáveis de entrada.

No final da sessão de negociação, a estratégia fechará todas as posições abertas.

Vantagens da estratégia

Trata-se de uma estratégia de negociação simples que utiliza indicadores para identificar tendências.

  1. Usar o indicador Supertrend para julgar a direção da tendência, que pode identificar efetivamente as tendências
  2. A combinação de sessões de negociação pode evitar a mais volátil sessão de abertura e fechamento
  3. Configurar o stop loss para bloquear os lucros
  4. Muitos parâmetros podem ser ajustados livremente através de variáveis de entrada, alta adaptabilidade

Riscos da Estratégia

A estratégia apresenta também alguns riscos:

  1. Indicador de Supertrend tem atraso, pode perder o melhor ponto de entrada
  2. O julgamento de indicadores únicos é suscetível de ser afetado por falhas, a taxa de vitória pode ser baixa
  3. Não considera a tendência do mercado, pode divergir do mercado global
  4. A definição inadequada de stop loss pode conduzir a perdas maiores do que as esperadas

Estes riscos podem ser reduzidos através da otimização dos parâmetros do indicador Supertrend ou da adição de outros julgamentos do indicador.

Orientações de otimização

A estratégia pode também ser otimizada nos seguintes aspectos:

  1. Adicionar outras avaliações de indicadores para formar uma estratégia combinada, melhorar a estabilidade
  2. Adicionar um julgamento geral da tendência do mercado para evitar a divergência do mercado
  3. Otimizar parâmetros do indicador Supertrend, encontrar o melhor comprimento e fator
  4. Ajustar a estratégia stop loss, como trailing stop loss juntamente com a tendência
  5. Teste em diferentes produtos, encontre a melhor combinação

Conclusão

Em resumo, esta é uma estratégia de negociação de indicadores de Supertrend baseada no gráfico de 5 minutos do BankNifty. Utiliza o indicador de Supertrend para determinar a direção da tendência e combina sessões de negociação e regras de gerenciamento de risco para negociar. Em comparação com estratégias quantitativas complexas, esta estratégia tem regras simples e claras que são fáceis de entender e implementar. Como uma estratégia de amostra, fornece uma base e direção para otimização e melhoria futuras. Através do refinamento e aprimoramento contínuos, espera-se que a estratégia possa se tornar uma estratégia de negociação quantitativa confiável e lucrativa.


/*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)





Mais.