Melhoria da estratégia SuperTrend

Autora:ChaoZhang, Data: 2024-01-17 15:55:15
Tags:

img

Resumo

Este artigo analisa em profundidade uma estratégia de tendência que combina o indicador SuperTrend com um filtro RSI estocástico para melhorar a precisão.

Estratégia lógica

Cálculo da SuperTendência

Primeiro, a True Range (TR) e a Average True Range (ATR) são calculadas.

Banda superior = SMA ((fechado, período ATR) + Multipliante ATR * ATR Intervalo inferior = SMA ((fechado, período ATR) - Multipliante ATR * ATR

Uma tendência ascendente é identificada quando se fecha > faixa inferior. Uma tendência descendente é identificada quando se fecha < faixa superior.

Durante a tendência de alta, a SuperTendência é definida na faixa inferior.

Mecanismo de filtragem

Para reduzir os falsos sinais, a SuperTendência é suavizada usando uma média móvel para obter a SuperTendência filtrada.

RSI estocástico

O valor do RSI é calculado, em seguida, o indicador estocástico é aplicado a ele para gerar o RSI estocástico.

Condições de entrada e saída

Entrada longa: fechamento de cruzes acima da SuperTrend filtrada na tendência de alta e do RSI estocástico < 80 Introdução curta: Fechar cruzamentos abaixo da SuperTrend filtrada na tendência de baixa e no RSI estocástico > 20

Saída longa: Fechar cruzes abaixo da SuperTendência filtrada na tendência de alta
Saída curta: fechar cruzes acima da SuperTrend filtrada em tendência de queda

Vantagens da estratégia

Esta estratégia de tendência melhorada tem as seguintes vantagens face às médias móveis simples:

  1. A própria SuperTrend possui uma boa identificação de tendências e habilidades de filtragem de falsos sinais.
  2. O mecanismo de filtragem reduz ainda mais os falsos sinais, resultando em sinais mais fiáveis.
  3. O RSI estocástico evita sinais falsos em torno de níveis de suporte/resistência importantes durante condições de sobrecompra/supervenda.
  4. A estratégia considera tanto a direcção da tendência como as condições de sobrecompra/supervenda que conduzem a um melhor equilíbrio entre seguir a tendência e evitar falsos sinais.
  5. O ajustamento flexível dos parâmetros permite a adaptação aos diferentes ambientes de mercado.

Riscos e otimização

Riscos potenciais

  1. O stop loss pode ser atingido durante movimentos de alta volatilidade.
  2. Problemas de atraso com a SuperTrend e filtragem causando mudanças recentes de preços.
  3. Configurações incorretas do parâmetro RSI estocástico que afetam o desempenho da estratégia.

Gestão de riscos

  1. Ajustar o stop loss de forma adequada ou utilizar o stop loss posterior.
  2. Ajustar parâmetros como o período ATR e o período de filtragem para equilibrar o efeito de atraso.
  3. Teste e otimize os parâmetros do RSI estocástico.

Oportunidades de otimização

  1. Teste diferentes combinações de parâmetros para encontrar parâmetros ideais.
  2. Tente diferentes mecanismos de filtragem como suavização EMA etc.
  3. Aplicar aprendizagem de máquina para otimizar automaticamente parâmetros.
  4. Incorporar outros indicadores para complementar as condições de entrada.

Conclusão

Esta estratégia combina os pontos fortes do SuperTrend e do RSI Estocástico para a identificação eficaz de tendências e sinais comerciais de qualidade, ao mesmo tempo em que torna a estratégia robusta para o ruído do mercado através de mecanismos de filtragem.


/*backtest
start: 2024-01-09 00:00:00
end: 2024-01-16 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Improved SuperTrend Strategy with Stochastic RSI", shorttitle="IST+StochRSI", overlay=true)

// Input parameters
atr_length = input(14, title="ATR Length")
atr_multiplier = input(1.5, title="ATR Multiplier")
filter_length = input(5, title="Filter Length")
stoch_length = input(14, title="Stochastic RSI Length")
smooth_k = input(3, title="Stochastic RSI %K Smoothing")

// Calculate True Range (TR) and Average True Range (ATR)
tr = ta.rma(ta.tr, atr_length)
atr = ta.rma(tr, atr_length)

// Calculate SuperTrend
upper_band = ta.sma(close, atr_length) + atr_multiplier * atr
lower_band = ta.sma(close, atr_length) - atr_multiplier * atr

is_uptrend = close > lower_band
is_downtrend = close < upper_band

super_trend = is_uptrend ? lower_band : na
super_trend := is_downtrend ? upper_band : super_trend

// Filter for reducing false signals
filtered_super_trend = ta.sma(super_trend, filter_length)

// Calculate Stochastic RSI
rsi_value = ta.rsi(close, stoch_length)
stoch_rsi = ta.sma(ta.stoch(rsi_value, rsi_value, rsi_value, stoch_length), smooth_k)

// Entry conditions
long_condition = ta.crossover(close, filtered_super_trend) and is_uptrend and stoch_rsi < 80
short_condition = ta.crossunder(close, filtered_super_trend) and is_downtrend and stoch_rsi > 20

// Exit conditions
exit_long_condition = ta.crossunder(close, filtered_super_trend) and is_uptrend
exit_short_condition = ta.crossover(close, filtered_super_trend) and is_downtrend

// Plot SuperTrend and filtered SuperTrend
plot(super_trend, color=color.orange, title="SuperTrend", linewidth=2)
plot(filtered_super_trend, color=color.blue, title="Filtered SuperTrend", linewidth=2)

// Plot Buy and Sell signals
plotshape(series=long_condition, title="Buy Signal", color=color.green, style=shape.triangleup, location=location.belowbar)
plotshape(series=short_condition, title="Sell Signal", color=color.red, style=shape.triangledown, location=location.abovebar)

// Output signals to the console for analysis
plotchar(long_condition, "Long Signal", "▲", location.belowbar, color=color.green, size=size.small)
plotchar(short_condition, "Short Signal", "▼", location.abovebar, color=color.red, size=size.small)

// Strategy entry and exit
strategy.entry("Long", strategy.long, when=long_condition)
strategy.entry("Short", strategy.short, when=short_condition)
strategy.close("Long", when=exit_long_condition)
strategy.close("Short", when=exit_short_condition)


Mais.