
Esta estratégia baseia-se no clássico pensamento estratégico de Larry Connors, usando um sistema de dupla linha para capturar oscilações de linha média e curta do mercado e implementar uma estratégia de operação segura na zona de superaquecimento.
Utilize o indicador RSI de dois ciclos para determinar se a ação está em zona de oversold.
Utilize a média de longo período (< 200 ciclos) para determinar a direção da tendência geral. Considere apenas a construção de uma posição quando o preço estiver acima da média de longo período.
Quando o preço está acima da média de longo prazo e o RSI está abaixo da linha de superalimento, a posição deve ser aberta apenas no preço de mercado.
Quando o aumento dos preços ultrapassa a média de curto período (< 5 ciclos), o preço de mercado é mais ou menos plano.
Além disso, a política oferece as seguintes opções de configuração:
Parâmetros do RSI: comprimento do ciclo, posição da linha de superalimento e superalimento.
Parâmetro da linha média: longo e curto período da linha média.
Filtragem da linha média do RSI: adicione a linha média do RSI para evitar que o indicador RSI oscile excessivamente.
Opções de Stop Loss: opção para adicionar ou não Stop Loss.
O uso de um sistema de linha dupla e uniforme permite o acompanhamento efetivo de tendências de linha longa.
O indicador RSI evita perder o melhor momento de entrada em um tremor forte.
É flexível e pode ser configurado para diferentes parâmetros.
A estratégia de quebra do rundown não é fácil de perder.
A estratégia de dupla equilíbrio é sensível a parâmetros e precisa de otimização de parâmetros para obter o melhor resultado.
A configuração sem perdas apresenta o risco de expansão de perdas. É necessário uma gestão cuidadosa do capital e controle do tamanho da posição individual.
Pode haver um risco de falha de ruptura em situações de turbulência. Pode-se considerar otimizar o ciclo de equilíbrio ou adicionar outras condições como filtros.
Risco de adequação de dados de retorno. Verificação da solidez da estratégia em vários mercados por um período de tempo prolongado.
Testar combinações de parâmetros para otimizar o RSI e a linha média para encontrar o melhor parâmetro.
Testar diferentes condições de filtragem de entrada, como aumento de volume de transações, para reduzir os sinais falsos.
A adição de um tracking stop para controlar perdas individuais. É necessário avaliar o impacto da configuração de stop loss sobre o lucro geral.
Avaliar o impacto de diferentes períodos de detenção de posições sobre o lucro e encontrar o melhor período de detenção.
A robustez da estratégia é testada em períodos de tempo mais longos (por exemplo, nível de linha de sol).
Esta estratégia integra o acompanhamento de tendências de dupla equilíbrio e as características de compra e venda do indicador RSI, um sistema típico de ruptura. Com otimização de parâmetros, gerenciamento rigoroso de fundos e verificação de robustez, a estratégia pode ser uma ferramenta poderosa para a quantificação de negociações.
/*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()