RSI Estratégia de negociação de ciclo cruzado

Autora:ChaoZhang, Data: 2023-10-25 11:20:59
Tags:

img

Resumo

Esta estratégia utiliza os princípios de sobrecompra e sobrevenda do indicador RSI e combina o RSI de vários ciclos para gerar sinais, realizando operações de ciclo cruzado. A estratégia julga os sinais de sobrecompra e sobrevenda de acordo com as configurações do ciclo do RSI e usa a média móvel do RSI para filtrar para evitar sinais errados.

Estratégia lógica

A estratégia gera sinais de negociação principalmente através dos julgamentos de sobrecompra e sobrevenda do indicador RSI. O RSI significa Relative Strength Index, sua fórmula é: RSI = 100 - (100 / (1 + RS)), onde RS é a proporção de ganhos médios de fechamento em relação às perdas médias de fechamento em um período. O índice RSI varia de 0 a 100, geralmente considerado como sobrevendido abaixo de 30 e sobrecomprado acima de 70.

A estratégia define um parâmetro alto sobrecompra e um parâmetro baixo sobreventa. Quando o RSI é superior ao sobrecompra, ele é julgado como sobrecomprado. Quando o RSI é inferior ao sobreventa, ele é julgado como sobrevendido. Os valores padrão de sobrecompra e sobreventa na estratégia são 70 e 30, respectivamente.

Para gerar sinais de compra e venda, a estratégia usa a linha média móvel do indicador RSI para filtragem. Quando o RSI cruza sua linha média móvel, o sinal de compra Es_compra é gerado. Quando o RSI cruza abaixo de sua linha média móvel, o sinal de venda Es_venta é gerado. O parâmetro média móvel periodos_media é padrão para 14 períodos.

Após gerar sinais de compra e venda, a estratégia abre posições para negociação longa ou curta.

Vantagens da estratégia

  1. Use o indicador RSI para julgar as condições de sobrecompra e sobrevenda, evitando perseguir altos e baixos de venda.

  2. Aplicar a média móvel do indicador RSI para filtragem para evitar sinais falsos.

  3. Combinar as configurações de vários ciclos do indicador RSI para gerar sinais de negociação mais estáveis.

  4. Estabelecer mecanismos de stop loss e de lucro para controlar eficazmente os riscos.

  5. A lógica estratégica é simples e clara, fácil de compreender e modificar.

  6. Parâmetros personalizáveis, adaptáveis a diferentes produtos e ciclos.

Riscos da Estratégia

  1. Indicador RSI tem efeito de atraso, pode perder o melhor momento para a reversão de preços.

  2. A média móvel causa atrasos no sinal de negociação, incapaz de capturar reversões de tendência a tempo.

  3. As definições fixas dos parâmetros de sobrecompra e sobrevenda não são suficientemente flexíveis e necessitam de ajustamentos para diferentes ciclos e produtos.

  4. As configurações inadequadas de stop loss e take profit podem levar a perdas ou perdas de lucros.

  5. As posições longas e curtas são apenas 1 lote, incapazes de utilizar plenamente os fundos para a negociação de spread.

Orientações de otimização

  1. Combinar outros indicadores como MACD, KD para julgamento do sinal de negociação.

  2. Aplicar média móvel adaptativa para acompanhar tendências.

  3. Definir parâmetros dinâmicos de sobrecompra e sobrevenda, ajustar com base na volatilidade do mercado.

  4. Otimizar algoritmos de stop loss e take profit, como trailing stop loss.

  5. Adicionar um mecanismo de gestão de posições, ajustar dinamicamente as posições com base no tamanho do capital.

  6. Adicionar a filtragem de tendências para evitar negociações frequentes em mercados de gama.

  7. Backtest para otimizar os parâmetros e selecionar a combinação de parâmetros ideal.

Resumo

Esta estratégia é baseada nos princípios de sobrecompra e sobrevenda do indicador RSI, usa média móvel para filtragem para gerar sinais de negociação, realizando a negociação típica de ciclo cruzado. A estratégia tem uma estrutura lógica clara e configurações de parâmetros, adaptáveis a diferentes produtos e ciclos através do ajuste de parâmetros, tornando-se uma estratégia de negociação de ciclo cruzado confiável e eficaz. Mas também existem limitações em ferramentas como o RSI e a média móvel, exigindo mais otimizações para tornar os parâmetros da estratégia mais adaptáveis, efeitos de filtragem melhores e reduzir o risco e aumentar o lucro na medida máxima.


/*backtest
start: 2023-09-01 00:00:00
end: 2023-09-30 23:59:59
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © samuelkanneman

//@version=4
strategy("RSI KANNEMAN")
//////Entrada///////
i_startTime         = input(title="Start Date Filter", defval=timestamp("01 Nov 2020 13:30 +0000"), type=input.time, tooltip="Date & time to begin trading from")
i_endTime           = input(title="End Date Filter", defval=timestamp("1 Nov 2022 19:30 +0000"), type=input.time, tooltip="Date & time to stop trading")
sobrecompra= input(70, title="Sobre Compra", type=input.integer ,minval=50, maxval=100 )
sobreventa= input(30, title="Sobre Venta", type=input.integer ,minval=0, maxval=50 )
l1=hline(sobrecompra)
l2=hline(sobreventa, color=color.purple)
periodos= input(14, title="Periodos", type=input.integer ,minval=1, maxval=50 )
periodos_media= input(14, title="Logintud media movil", type=input.integer ,minval=1, maxval=200 )
var SL =0.0
var TP=0.0
StopLoss = input(2.0, title="SL %", step=0.2)
TakeProfit = input(5.0, title="TP %", step=0.2)

//////Proceso///////

mi_rsi=rsi(close,periodos)
mm_rsi=sma(mi_rsi,periodos_media)

Es_compra= crossover(mm_rsi,sobreventa)
Es_venta= crossunder(mm_rsi,sobrecompra)

comprado= strategy.position_size > 0
vendido = strategy.position_size < 0

//time to test 
dateFilter = true
//timePeriod = time >= timestamp(syminfo.timezone, 2020, 11, 1, 0, 0)


// long

if (not comprado and Es_compra and dateFilter  )
    // realizar long
    cantidad = strategy.equity/hlc3
    strategy.entry ("compra", strategy.long , cantidad)
    SL := close*(1-(StopLoss/100))
    TP := close*(1+(TakeProfit/100))
    
if close >= TP
    strategy.close ("compra" , comment="Salto TP")  

if (comprado and Es_venta  )
    strategy.close ("compra" , comment="Sobre Venta")

if close <= SL
    strategy.close ("compra" , comment="Salto SL")
    
// short

if (not vendido and Es_venta and dateFilter  )
    // realizar short
    cantidad = strategy.equity/hlc3
    strategy.entry ("venta", strategy.short , cantidad)
    SL := close*(1+(StopLoss/100))
    TP := close*(1-(TakeProfit/100))
    
if close <= TP
    strategy.close ("venta" , comment="Salto TP")  

if (vendido and Es_compra  )
    strategy.close ("venta" , comment="Sobre Compra")

if close >= SL
    strategy.close ("venta" , comment="Salto SL")

    

    
    
   ///////Salida//////
fill(l1,l2)
plot(mi_rsi)
plot(mm_rsi, color=color.yellow)

bgcolor(Es_compra ? color.blue : na , transp=0)
bgcolor(Es_venta ? color.red : na , transp=0)


// 1d 70 22 5 4 3 15    6 meses
//1h 70 20 6 4 5 7      1 mese
//15m 70 20 5 4 4 7      1 semana


Mais.