Estratégia de negociação de reversão rápida do RSI


Data de criação: 2024-03-01 11:55:56 última modificação: 2024-03-01 11:55:56
cópia: 2 Cliques: 617
1
focar em
1617
Seguidores

Estratégia de negociação de reversão rápida do RSI

Visão geral

A estratégia de negociação de reversão RSI rápida permite negociações de reversão de baixo risco através da combinação do uso de indicadores RSI rápidos, filtragem de entidades de linha K, filtragem de preço máximo e mínimo e filtragem de linha média SMA para determinar o ponto de reversão de tendência. A estratégia visa capturar oportunidades de reversão de curto prazo.

Princípio da estratégia

A estratégia é baseada nos seguintes indicadores:

  1. Indicador RSI rápidoO RSI é calculado através da função RMA, tornando-o mais sensível para capturar sinais de overbought e oversold mais rápidos.

  2. Filtragem de entidades de linha K: requer que a dimensão da linha K seja superior a 15 da linha média da linha EMA, para filtragem de pequenas variações.

  3. Filtros de preço máximo e mínimoO preço da inovação pode ser alto ou baixo, para confirmar a inversão da tendência.

  4. Filtro de linha SMAO preço do Bitcoin deve ultrapassar a linha média SMA para aumentar a base de julgamento.

Quando várias das condições acima são ativadas simultaneamente, um sinal de transação é gerado. A lógica específica é:

Multi-headed entry: RSI rápido abaixo da zona de oversold AND K-line maior do que a média da EMA 15 AND com menor valor de ruptura AND preço atravessa a média SMA

Entrada em branco: o indicador RSI rápido está acima da zona de oversold e a linha K é maior do que a linha média da EMA 15 e tem o máximo de ruptura da linha média SMA abaixo do preço AND

Saída de equilíbrio: RSI rápido retorna à zona normal

Vantagens estratégicas

A estratégia tem as seguintes vantagens:

  1. Capturar oscilações de uma reversão de curto prazo
  2. RSI rápido com alta sensibilidade
  3. Filtragem múltipla para reduzir falhas
  4. Risco controlado, retirada pequena

Risco e otimização

A estratégia também apresenta alguns riscos:

  1. Os riscos de falhar na inversão
  2. Espaço limitado para otimizar parâmetros

Otimizar ainda mais:

  1. Combinado com filtro de volume de transação
  2. Aumentar a estratégia de stop loss
  3. Combinação de parâmetros de otimização

Resumir

A estratégia é, em geral, uma estratégia de reversão de curto prazo de baixo risco. Ela determina pontos de compra e venda por meio de indicadores RSI rápidos e usa filtros múltiplos para reduzir os falsos sinais, permitindo a realização de reversões de risco controlado e adequadas para operações de linha curta. A estratégia pode ser otimizada ainda mais e tem grande potencial de desenvolvimento.

Código-fonte da estratégia
/*backtest
start: 2024-02-01 00:00:00
end: 2024-02-26 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=3
strategy(title = "Noro's Fast RSI Strategy v1.4", shorttitle = "Fast RSI str 1.4", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 5)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
usersi = input(true, defval = true, title = "Use Fast RSI Strategy")
usemm = input(true, defval = true, title = "Use Min/Max Strategy")
usesma = input(true, defval = true, title = "Use SMA Filter")
smaperiod = input(20, defval = 20, minval = 2, maxval = 1000, title = "SMA Filter Period")
rsiperiod = input(7, defval = 7, minval = 2, maxval = 50, title = "RSI Period")
limit = input(30, defval = 30, minval = 1, maxval = 100, title = "RSI limit")
rsisrc = input(close, defval = close, title = "RSI Price")
rsibars = input(1, defval = 1, minval = 1, maxval = 20, title = "RSI Bars")
mmbars = input(1, defval = 1, minval = 1, maxval = 5, title = "Min/Max Bars")
showsma = input(false, defval = false, title = "Show SMA Filter")
showarr = input(false, defval = false, title = "Show Arrows")
fromyear = input(2018, defval = 2018, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//Fast RSI
fastup = rma(max(change(rsisrc), 0), rsiperiod)
fastdown = rma(-min(change(rsisrc), 0), rsiperiod)
fastrsi = fastdown == 0 ? 100 : fastup == 0 ? 0 : 100 - (100 / (1 + fastup / fastdown))

//Limits
bar = close > open ? 1 : close < open ? -1 : 0
uplimit = 100 - limit
dnlimit = limit

//RSI Bars
upsignal = fastrsi > uplimit ? 1 : 0
dnsignal = fastrsi < dnlimit ? 1 : 0
uprsi = sma(upsignal, rsibars) == 1
dnrsi = sma(dnsignal, rsibars) == 1

//Body
body = abs(close - open)
emabody = ema(body, 30)

//MinMax Bars
min = min(close, open)
max = max(close, open)
minsignal = min < min[1] and bar == -1 and bar[1] == -1 ? 1 : 0
maxsignal = max > max[1] and bar == 1 and bar[1] == 1 ? 1 : 0
mins = sma(minsignal, mmbars) == 1
maxs = sma(maxsignal, mmbars) == 1

//SMA Filter
sma = sma(close, smaperiod)
colorsma = showsma ? blue : na
plot(sma, color = colorsma, linewidth = 3)

//Signals
up1 = bar == -1 and (strategy.position_size == 0 or close < strategy.position_avg_price) and dnrsi and body > emabody / 5 and usersi
dn1 = bar == 1 and (strategy.position_size == 0 or close > strategy.position_avg_price) and uprsi and body > emabody / 5 and usersi
up2 = mins and (close > sma or usesma == false) and usemm
dn2 = maxs and (close < sma or usesma == false) and usemm 
exit = ((strategy.position_size > 0 and fastrsi > dnlimit and bar == 1) or (strategy.position_size < 0 and fastrsi < uplimit and bar == -1)) and body > emabody / 2

//Arrows
col = exit ? black : up1 or dn1 ? blue : up2 or dn2 ? red : na
needup = up1 or up2
needdn = dn1 or dn2
needexitup = exit and strategy.position_size < 0
needexitdn = exit and strategy.position_size > 0
plotarrow(showarr and needup ? 1 : na, colorup = blue, colordown = blue, transp = 0)
plotarrow(showarr and needdn ? -1 : na, colorup = blue, colordown = blue, transp = 0)
plotarrow(showarr and needexitup ? 1 : na, colorup = black, colordown = black, transp = 0)
plotarrow(showarr and needexitdn ? -1 : na, colorup = black, colordown = black, transp = 0)

//Trading
if up1 or up2
    strategy.entry("Long", strategy.long, needlong == false ? 0 : na)

if dn1 or dn2
    strategy.entry("Short", strategy.short, needshort == false ? 0 : na)
    
if time > timestamp(toyear, tomonth, today, 00, 00) or exit
    strategy.close_all()