A estratégia Sunny Supertrend é uma estratégia de tendência baseada nos indicadores ATR e SuperTrend. Ela pode prever com precisão inversões de tendência e funciona perfeitamente como um indicador de tempo. A estratégia pode aumentar a paciência e ajudar os traders a entrar e sair dos mercados no momento certo.
A estratégia usa o indicador SuperTrend para determinar a direção da tendência atual. Quando o indicador SuperTrend muda de direção, pensamos que uma reversão de tendência pode ocorrer. Além disso, a estratégia também usa a direção dos corpos de velas para julgamento auxiliar. Quando um sinal de reversão potencial aparece e a direção do corpo do velas é consistente com a anterior, o sinal inválido é filtrado.
Especificamente, a estratégia gera sinais de negociação de acordo com a seguinte lógica:
O indicador Supertrend tende a gerar sinais redundantes que precisam ser filtrados Solução: Esta estratégia usa a direção do corpo do candelabro para julgamento auxiliar para filtrar efetivamente sinais inválidos
Os parâmetros da super-tendência são propensos a uma otimização excessiva
Solução: Use parâmetros padrão para evitar ajustes manuais e otimização excessiva
Incapaz de processar inversões de tendência ultra-rápidas Solução: Ajustar adequadamente o parâmetro do período ATR para fazer face a movimentos mais rápidos do mercado
A estratégia Sunny Supertrend é uma estratégia de reversão de tendência eficiente baseada no indicador SuperTrend. Combina direções do corpo do velas para julgamento auxiliar, que podem efetivamente filtrar sinais inválidos e melhorar a qualidade do sinal. Esta estratégia é simples de operar, altamente adaptável e pode ser amplamente usada em vários produtos e prazos.
/*backtest start: 2023-11-12 00:00:00 end: 2023-12-12 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Sunny Supertrend Strategy", overlay=true, default_qty_type=strategy.percent_of_equity) atrPeriod = input(10, "ATR Length") factor = input.float(3.0, "Factor", step = 0.01) [_, direction] = ta.supertrend(factor, atrPeriod) shor= close > open and close[1] > open[1] and close[2] > open[2] lon = open > close and open[1] > close[1] and open[2] > close[2] tt= ta.change(direction) < 0 ss= ta.change(direction) > 0 long= tt longexit = lon or ss short= ss shortexit = shor or tt longPosMem = false longexitPosMem = false shortPosMem = false shortexitPosMem = false longPosMem := long ? true : short ? false : longPosMem[1] longexitPosMem := longexit ? true : shortexit ? false : longexitPosMem[1] shortPosMem := short ? true : long ? false : shortPosMem[1] shortexitPosMem := shortexit ? true : longexit ? false : shortexitPosMem[1] longy = long and not(longPosMem[1]) longexity = longexit and not(longexitPosMem[1]) shorty = short and not(shortPosMem[1]) shortexity = shortexit and not(shortexitPosMem[1]) //Use this to customize the look of the arrows to suit your needs. plotshape(longy, location=location.abovebar, color=color.green, style=shape.arrowup, text="Buy") plotshape(longexity, location=location.top, color=color.green, style=shape.xcross, text="Buy exit") plotshape(shorty, location=location.belowbar, color=color.red, style=shape.arrowdown, text="Sell") plotshape(shortexity, location=location.bottom, color=color.red, style=shape.xcross, text="Sell exit") //plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_areabr) // STEP 1: // Make input options that configure backtest date range startDate = input.int(title="Start Date", defval=1, minval=1, maxval=31) startMonth = input.int(title="Start Month", defval=1, minval=1, maxval=12) startYear = input.int(title="Start Year", defval=2021, minval=1800, maxval=2100) endDate = input.int(title="End Date", defval=1, minval=1, maxval=31) endMonth = input.int(title="End Month", defval=2, minval=1, maxval=12) endYear = input.int(title="End Year", defval=2021, minval=1800, maxval=2100) // STEP 2: // Look if the close time of the current bar // falls inside the date range inDateRange = true // STEP 3: // Submit entry orders, but only when bar is inside date range if (inDateRange and longy) strategy.entry("enter long",strategy.long,when= longy) strategy.close("long",when=longexity) if (inDateRange and shorty) strategy.entry("enter short",strategy.short,when = shorty) strategy.close("short", when=shortexity)