Esta estratégia baseia-se na idéia clássica de Larry Connors, usando o sistema de média móvel dupla para capturar a oscilação de médio prazo do mercado e tirar lucro quando ele está sobrecomprado ou sobrevendido.
Use o RSI de 2 períodos para determinar se o preço está na região de sobrevenda.
Utilize a média móvel de longo período (200 períodos) para determinar a principal direcção da tendência.
Quando o preço estiver acima da MA longa e o RSI estiver abaixo da linha de sobrevenda, abrir uma posição longa ao preço de mercado.
Quando o preço ultrapassar o período MA curto (5 períodos) para cima, feche a posição longa ao preço de mercado para obter lucro.
Além disso, a estratégia prevê as seguintes opções configuráveis:
Parâmetros do RSI: duração do período, níveis de sobrecompra/supervenda.
Parâmetros do MA: período longo e curto.
Filtro RSI MA: adicionar RSI MA para evitar flutuações do RSI.
Perda de parada: configurável para adicionar ou não perda de parada.
O sistema de dupla MA permite acompanhar eficazmente as tendências a médio e longo prazo.
O RSI evita perder o melhor momento de entrada durante flutuações violentas.
Configuração flexível adequada para otimização de parâmetros.
É uma estratégia avançada, não é provável que falte sinais.
A estratégia de dupla MA é sensível aos parâmetros, exigindo otimização para alcançar o melhor desempenho.
Não haver stop loss traz risco de expansão das perdas.
Considerar a otimização de períodos de MA ou adicionar outros filtros.
Requer validação entre mercados e períodos de tempo.
Testar e otimizar combinações de parâmetros RSI e MA para encontrar o ideal.
Teste filtros de entrada adicionais como picos de volume para reduzir sinais falsos.
Adicionar stop loss para controlar a perda de um único negócio.
Avaliar o impacto dos diferentes períodos de detenção para determinar o ideal.
Teste a robustez em períodos de tempo mais longos, como diariamente.
Esta estratégia combina o rastreamento de tendência de MA duplo e o RSI sobrecomprado / sobrevendido para formar um sistema de ruptura típico. Com otimização de parâmetros, gerenciamento de risco rigoroso e validação de robustez, pode se tornar uma poderosa ferramenta de negociação quantitativa.
/*backtest start: 2023-09-26 00:00:00 end: 2023-10-26 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy("RSI Strategy", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100) //Starter Parameters length = input(title="RSI Lenght", defval=2) overBoughtRSI = input(title="OverBought Level for RSI", defval=10) shortLength = input(title="Short MA Length", defval=5) longLength = input(title="Long MA Length", defval=200) RuleMRSI=input(title="RSI Moving Average Filter", defval= true) lengthmrsi=input(title="RSI Moving Average Length", defval=4) overBoughtMRSI=input(title="OverBought Level for the Moving Average of the RSI", defval=30) Rulestop=input(title="Apply Stop Loss", defval=false) stop_percentual=input(title="% Stop Loss", defval=10) //RSI vrsi = rsi(close, length) //Moving Averages longma = sma(close,longLength) shortma = sma(close,shortLength) mrsi=sma(vrsi,lengthmrsi) //Stop Loss stop_level = strategy.position_avg_price*((100-stop_percentual)/100) //Backtest Period testStartYear = input(2009, "Backtest Start Year") testStartMonth = input(1, "Backtest Start Month") testStartDay = input(2, "Backtest Start Day") testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0) testStopYear = input(2020, "Backtest Stop Year") testStopMonth = input(12, "Backtest Stop Month") testStopDay = input(30, "Backtest Stop Day") testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0) testPeriod() => true //Strategy if testPeriod() and (not na(vrsi)) if (RuleMRSI==false) and (Rulestop==false) if (vrsi<overBoughtRSI) and (close>longma) strategy.entry("RsiLE", strategy.long , comment="Open") if (close>shortma) strategy.close_all() if (RuleMRSI==true) and (Rulestop==false) if (vrsi<overBoughtRSI) and (close>longma) and (mrsi<overBoughtMRSI) strategy.entry("RsiLE", strategy.long , comment="Open") if (close>shortma) strategy.close_all() if (RuleMRSI==false) and (Rulestop==true) if (vrsi<overBoughtRSI) and (close>longma) strategy.entry("RsiLE", strategy.long , comment="Open") strategy.exit("RsiLE", stop = stop_level) if (close>shortma) strategy.close_all() if (RuleMRSI==true) and (Rulestop==true) if (vrsi<overBoughtRSI) and (close>longma) and (mrsi<overBoughtMRSI) strategy.entry("RsiLE", strategy.long , comment="Open") strategy.exit("RsiLE", stop = stop_level) if (close>shortma) strategy.close_all()