Esta estratégia usa o indicador RSI para determinar o tempo de entrada através de julgamentos de ciclo cruzado e adota o mecanismo de lucro e parada ATR para estratégias de rastreamento de tendências. Determina o ponto de virada da tendência do mercado através do cruzamento do indicador RSI de diferentes ciclos e combina o preço de fechamento para filtrar o tempo de posições longas e curtas.
A estratégia usa primeiro a tecnologia de suavização da SMA para calcular a média móvel de 26 semanas como referência para julgar o mercado de alta. Em seguida, calcule o valor do indicador RSI de 4 semanas, quando cruza abaixo de 30 na área de sobrevenda, considera-se que o mercado pode se recuperar. Neste momento, julgue se a nova alta do parâmetro de dias curtos pode romper a nova alta recente do parâmetro de dias longos, indicando que a tendência de curto prazo está se fortalecendo. Se as condições acima forem atendidas ao mesmo tempo, um sinal longo é emitido.
Após a entrada no mercado, utilizar os múltiplos do indicador ATR como faixa de lucro, e parar a perda em uma certa percentagem do ponto alto do preço de fechamento.
A estratégia apresenta as seguintes vantagens:
Use o indicador RSI para determinar pontos de reversão com boa capacidade de sincronização.
Aplicar o novo mecanismo de altas e baixas para evitar falsos sinais.
Utilize o ATR para obter lucro e stop loss para rastrear automaticamente o ponto de saída ideal.
As definições dos parâmetros flexíveis podem ser ajustadas para níveis ideais.
A ideia estratégica é clara e fácil de compreender, com uma forte estabilidade.
A estratégia apresenta igualmente os seguintes riscos:
O indicador RSI pode emitir um sinal errado, resultando em sincronização inadequada.
O intervalo de lucro ATR pode ser definido como muito grande ou muito pequeno para bloquear o lucro máximo.
O ponto de stop loss está muito perto e pode ser quebrado.
Os dados insuficientes de backtest podem sobreestimar a taxa de retorno da estratégia.
A estratégia pode ser otimizada nos seguintes aspectos:
Teste e otimize os parâmetros do RSI e os múltiplos de lucro e perda para encontrar a melhor combinação de parâmetros.
Aumentar outros indicadores para melhorar a precisão da estratégia, como MACD, KD, etc.
Otimizar o mecanismo de stop loss e ajustá-lo dinamicamente de acordo com o intervalo de flutuação do ATR.
Teste o efeito do desempenho em diferentes variedades de negociação.
Comparar o desempenho de diferentes tipos de stop loss, tais como stop loss proporcional, stop loss móvel, etc.
O funcionamento geral desta estratégia é claro e suave, a seleção de indicadores e configurações de parâmetros são razoáveis, e tem uma forte praticidade. Ainda há espaço para melhorias adicionais através da otimização de parâmetros e melhoria do mecanismo.
/*backtest start: 2023-02-05 00:00:00 end: 2024-01-18 05:20:00 period: 2d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 //A translation from info found at http://backtestwizard.com/swing-trading-system-for-stocks/ strategy("Swing Trading System RSI", overlay=true) source = close[1] longperiod = input(26,"long week",minval=2,maxval=500,step=1) s = request.security(syminfo.tickerid, "W", sma(close[1], longperiod)) // 1 Day plot(s) shortdays = input(21,"short days high period",minval=2,maxval=500,step=1) longdays = input(50,"long days high period",minval=2,maxval=500,step=1) rsiperiod = input(4,"rsi period",minval=2,maxval=500,step=1) rsithresh = input(30,"rsi thresh",minval=2,maxval=500,step=1) highcheck = highest(source,shortdays) == highest(source,longdays) rsicheck = crossunder(rsi(source,rsiperiod),rsithresh) longCondition = (highcheck) and (rsicheck) and source > s if (longCondition) strategy.entry("My Long Entry Id", strategy.long) profittarget = input(3,"profit target",minval=2,maxval=500,step=1) stoploss = input(2,"stop target",minval=2,maxval=500,step=1) exitCondition1 = source > strategy.position_avg_price + (atr(50) * profittarget) exitCondition2 = source < strategy.position_avg_price - (atr(50) * stoploss) if (exitCondition1) strategy.close_all() if (exitCondition2) strategy.close_all()