Estratégia de negociação bidirecional baseada no RSI e no RSI do STOCH

Autora:ChaoZhang, Data: 12/01/2023 às 18:06:23
Tags:

img

Resumo

Esta estratégia combina os poderosos indicadores técnicos do Relative Strength Index (RSI) e do Stoch RSI para implementar uma estratégia de negociação relativamente estável e confiável em duas direções.

Estratégia lógica

Esta estratégia é baseada principalmente nos indicadores RSI e Stoch RSI. O RSI é usado para determinar se o mercado está sobrecomprado ou sobrevendido.

Em primeiro lugar, o RSI julga se o mercado está sobrecomprado ou sobrevendido. Se o RSI estiver acima da linha de sobrecompra, o mercado é considerado sobrecomprado.

Em segundo lugar, o Stoch RSI gera sinais de negociação. Quando a linha rápida cruza acima da linha lenta de baixo, um sinal de compra é gerado. Quando a linha rápida cruza abaixo da linha lenta de cima, um sinal de venda é gerado.

Finalmente, a estratégia só entrará no mercado quando o RSI mostrar condições de sobrecompra/supervenda e o Stoch RSI gerar sinais ao mesmo tempo.

Análise das vantagens

A estratégia combina as vantagens dos indicadores RSI e Stoch RSI, tendo em conta as tendências globais do mercado e as alterações detalhadas para gerar sinais de negociação mais fiáveis, evitando sinais falsos desnecessários.

O RSI pode determinar efetivamente se o mercado está sobrecomprado ou sobrevendido, evitando perseguir altos e baixos.

Além disso, são adicionados filtros de tempo e preço para reduzir ainda mais a probabilidade de transações erradas e aumentar a robustez de toda a estratégia.

Análise de riscos

A estratégia baseia-se principalmente no RSI e no RSI do Stock, que são sensíveis às mudanças do mercado.

Para atenuar esses riscos, os parâmetros do RSI e do RSI do Stoch podem ser ajustados para se adequarem melhor às características do mercado e podem ser adicionados mais filtros.

Orientações de otimização

A estratégia pode ser ainda melhorada nos seguintes aspectos:

  1. Adicione stop loss para bloquear os lucros e reduzir as perdas.

  2. Otimizar os parâmetros do RSI e do Stoch RSI para se adequarem a diferentes períodos e produtos.

  3. Adicione mais filtros como prazos maiores e menor frequência de negociação.

  4. Incorporar outros indicadores de verificação do sinal para evitar erros.

  5. Optimização do backtest para a melhor combinação de parâmetros.

Conclusão

A estratégia aproveita os pontos fortes do RSI e do Stoch RSI para estabelecer uma estrutura de negociação bidirecional, fornecendo geração de sinal mais abrangente e confiável em comparação com o uso de um único indicador, evitando muitos falsos sinais desnecessários.


/*backtest
start: 2023-10-31 00:00:00
end: 2023-11-30 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version= 2
strategy("RSI+STOCHRSI v2", overlay=true)
lengthrsi = input(10)
overSold = input( 20 )
overBought = input( 70 )
price = ohlc4
vrsi = rsi(price, lengthrsi)

smoothK = input(3, minval=1)
smoothD = input(3, minval=1)
lengthRSI = input(14, minval=1)
lengthStoch = input(14, minval=1)
src = input(close, title="RSI Source")

rsi1 = rsi(src, lengthRSI)
k = sma(stoch(rsi1, rsi1, rsi1, lengthStoch), smoothK)
d = sma(k, smoothD)
srsilow=input(20)
srsiup=input(80)






yearfrom = input(2018)
yearuntil =input(2039)
monthfrom =input(6)
monthuntil =input(12)
dayfrom=input(1)
dayuntil=input(31)



if (  ( crossover(d,k)) and ( (vrsi<overSold) or crossover(vrsi,overSold) )  and   year >= yearfrom and year <= yearuntil and month>=monthfrom and month <=monthuntil and dayofmonth>=dayfrom and dayofmonth < dayuntil) 
    strategy.entry("BUY", strategy.long, stop=close, oca_name="TREND",  comment="BUY")
    
else
    strategy.cancel(id="BUY")


if ( ( crossunder(d,k) ) and ( (vrsi >overBought) or crossunder(vrsi,overBought) ) and   year >= yearfrom and year <= yearuntil and month>=monthfrom and month <=monthuntil and dayofmonth>=dayfrom and dayofmonth < dayuntil ) 

    strategy.entry("SELL", strategy.short,stop=close, oca_name="TREND",  comment="SELL")
else
    strategy.cancel(id="SELL")
    
    
    

Mais.