Usando a estratégia de rompimento do RSI bidirecional


Data de criação: 2023-12-27 14:33:15 última modificação: 2023-12-27 14:33:15
cópia: 0 Cliques: 974
1
focar em
1623
Seguidores

Usando a estratégia de rompimento do RSI bidirecional

Visão geral

A estratégia de ruptura do RSI bidirecional é uma estratégia de negociação algorítmica que usa o indicador RSI para identificar os pontos de reversão de preços. Compara o indicador RSI com o valor de queda e queda definido para determinar se o mercado está superando o supermercado e emite um sinal de negociação.

Princípio da estratégia

A estratégia depende principalmente do RSI para avaliar a situação. O RSI é calculado com base na variação do preço de fechamento em um determinado período, o que reflete a tendência de compra e venda de ações. Quando o RSI ultrapassa o valor superior definido (default 75), a ação entra na área de supercompra; Quando o RSI ultrapassa o valor inferior definido (default 25), a ação entra na área de supervenda.

Regras de julgamento estratégico:

  1. Quando o RSI chega ao seu limite, faça um curto;
  2. Fazer mais quando o RSI ultrapassa a barreira;
  3. Posição de equilíbrio pós-stop ou stop loss.

A lógica de negociação é simples e clara, os parâmetros de referência são definidos de forma razoável, o espaço é grande e pode ser configurado para capturar as maiores tendências do mercado.

Análise de vantagens

A estratégia tem as seguintes vantagens:

  1. A lógica é simples, fácil de entender e de implementar.
  2. A configuração dos parâmetros de referência é razoável e pode ser personalizada;
  3. Logística de negociação reversa configurável, com flexibilidade de resposta ao mercado;
  4. A análise de preços de um commodity, por exemplo, pode ajudar a identificar pontos de reversão e capturar tendências.

Em geral, a estratégia de referência de parâmetros de configuração razoável, simples de implementar, com um indicador RSI pode determinar efetivamente a inversão de preços, adequado para capturar grandes tendências de mercado de linha média e longa, é uma estratégia de quantificação de fácil domínio.

Análise de Riscos

Embora a estratégia seja simples e confiável, não podemos ignorar os riscos potenciais:

  1. O RSI tem maior probabilidade de emitir sinais errados. O RSI não é perfeito para prever a inversão de preços, podendo ocorrer erros de julgamento.
  2. O indicador RSI tem dificuldade em distinguir entre um ajuste de faixa normal e uma reversão de tendência.
  3. O indicador RSI não é capaz de avaliar com eficácia a tendência de choque, o que aumenta os prejuízos da estratégia.

Para controlar os riscos, temos de ter em conta o seguinte:

  1. Ajustar adequadamente os parâmetros para evitar uma alta taxa de erro;
  2. Melhorar a precisão dos sinais de transação em combinação com outros indicadores;
  3. Aumentar a taxa de suspensão e reduzir o stop loss;
  4. Não se preocupe com os trânsitos que provocam turbulências.

Direção de otimização

Considerando que a estratégia tem como principal risco o erro de inversão e os prejuízos causados por uma situação de choque, podemos otimizar a estratégia em vários aspectos:

  1. Em combinação com outros indicadores para filtrar o sinal. Indicadores como KDJ, MACD e outros podem desempenhar um papel de filtragem, evitando erros de julgamento.
  2. Aumentar o limite de parada condicional única. Aumentar adequadamente o espaço de parada única ajuda a estratégia a funcionar com a tendência maior.
  3. Configure a frequência de abertura de posição. Adicione um limite lógico de apenas uma ou N transações por ciclo, para controlar a abertura de posição excessiva.
  4. A estratégia de julgamento opera apenas em situações de tendência, evitando situações de choque, o que permite otimizar drasticamente a estratégia de lucro-risco.

Resumir

A estratégia de ruptura de RSI bidirecional é, em geral, uma estratégia de quantificação simples e prática. Ela determina a reversão de preços com o indicador RSI, permitindo um simples acompanhamento da tendência. Apesar de existir um certo risco de erro de julgamento, ela pode ser otimizada por meio de ajustes de parâmetros e filtragem de sinais, desempenhando um papel importante na captura de tendências de linha média e longa.

Código-fonte da estratégia
/*backtest
start: 2023-12-19 00:00:00
end: 2023-12-26 00:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("RSI Algo", overlay=true)

// Calculate start/end date and time condition
DST = 1 //day light saving for usa
//--- Europe
London = iff(DST==0,"0000-0900","0100-1000")
//--- America
NewYork = iff(DST==0,"0400-1500","0500-1600")
//--- Pacific
Sydney = iff(DST==0,"1300-2200","1400-2300")
//--- Asia
Tokyo = iff(DST==0,"1500-2400","1600-0100")

//-- Time In Range
timeinrange(res, sess) => time(res, sess) != 0

london = timeinrange(timeframe.period, London)
newyork = timeinrange(timeframe.period, NewYork)

time_cond = true


myPeriod = input(defval=14, type=input.integer, title="Period")
myThresholdUp = input(defval=75, type=input.float, title="Upper Threshold")
myThresholdDn = input(defval=25, type=input.float, title="Lower Threshold")
myAlgoFlipToggle = input(defval=false, type=input.bool, title="Imverse Algorthim")
myLineToggle = input(defval=true, type=input.bool, title="Show Lines")
myLabelToggle = input(defval=true, type=input.bool, title="Show Labels")
myRSI=rsi(close, myPeriod)
buy = myAlgoFlipToggle ? falling(myRSI,1) and cross(myRSI, myThresholdDn) : rising(myRSI, 1) and cross(myRSI,myThresholdUp) //and time_cond
sell = myAlgoFlipToggle ? rising(myRSI, 1) and cross(myRSI,myThresholdUp) : falling(myRSI,1) and cross(myRSI, myThresholdDn) //and time_cond
myPosition = 0
myPosition := buy==1 ? 0 : sell==1 or myPosition[1]==1 ? 1 : 0
trendColor = buy ? color.red : sell ? color.green : na
plot(myLineToggle ? buy and myPosition[1]==1 ? low - 0.004: sell and myPosition[1]==0 ? high + 0.004 : na : na, color=trendColor, style=plot.style_line, linewidth=4, editable=false)
plotshape(myLabelToggle ? buy and myPosition[1]==1 ? low - 0.005 : na : na, style=shape.labelup, location=location.absolute, text="Buy", transp=0, textcolor = color.white, color=color.black, editable=false)
plotshape(myLabelToggle ? sell and myPosition[1]==0 ? high + 0.005 : na : na, style=shape.labeldown, location=location.absolute, text="Sell", transp=0, textcolor = color.white, color=color.black, editable=false)

strategy.initial_capital = 50000
    //Calculate the size of the next trade
balance = strategy.netprofit + strategy.initial_capital //current balance
floating = strategy.openprofit          //floating profit/loss
risk = input(2,type=input.float,title="Risk %")/100           //risk % per trade
isTwoDigit = input(false,"Is this a 2 digit pair? (JPY, XAU, XPD...")


stop = input(250, title="stop loss pips")
tp = input(2500, title="take profit pips")
if(isTwoDigit)
    stop := stop/100
    
temp01 = balance * risk     //Risk in USD
temp02 = temp01/stop        //Risk in lots
temp03 = temp02*100000      //Convert to contracts
size = 1
    
strategy.entry("long",1,size,when=buy and myPosition[1]==1 )
strategy.entry("short",0,size,when=sell and myPosition[1]==0)

strategy.exit("exit_long","long",loss=stop, profit=tp)      //Long exit (stop loss)
strategy.exit("exit_short","short",loss=stop, profit=tp)      //Short exit (stop loss)

//strategy.close_all(when= not time_cond)