Análise rápida da estratégia RSI

Autora:ChaoZhang, Data: 2023-12-04 14:40:02
Tags:

img

Nome da estratégia

Estratégia de tendência de RSI extrema bidirecional

Resumo

Esta estratégia utiliza o indicador RSI para determinar as tendências de preços rapidamente.

Princípio da estratégia

A estratégia usa um indicador RSI melhorado para julgar o estado de sobrecompra e sobrevenda dos preços, combinado com a filtragem do corpo da vela para reduzir o ruído.

Análise das vantagens

A estratégia responde rapidamente e pode capturar tendências de curto prazo mais rápidas. Enquanto isso, a filtragem do corpo ajuda a reduzir o ruído e evitar ser enganada por falsos breakouts.

Análise de riscos

A estratégia é bastante sensível às mudanças de preço, facilmente enganada por falsos sinais no mercado. Além disso, as perdas de parada podem ser desencadeadas com freqüência no mercado de alta volatilidade.

Orientações de otimização

Podemos testar diferentes parâmetros periódicos dos indicadores para otimizar a estratégia e encontrar a melhor combinação de parâmetros. Além disso, a incorporação de outros indicadores como as regras de Turtle Trading pode ajudar ainda mais na filtragem de sinais.

Resumo

No geral, esta é uma estratégia de curto prazo eficiente e responsiva. Com alguma otimização de parâmetros e modelos, tem o potencial de melhorar ainda mais a estabilidade e a lucratividade. Merece pesquisa e rastreamento contínuos por comerciantes quant.


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

//@version=3
strategy(title = "Noro's Fast RSI Strategy v1.1", shorttitle = "Fast RSI str 1.1", 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")
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 Source")
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))
uplimit = 100 - limit
dnlimit = limit

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

//Signals
bar = close > open ? 1 : close < open ? -1 : 0
up = bar == -1 and fastrsi < dnlimit and body > emabody
dn = bar == 1 and fastrsi > uplimit and body > emabody
exit = ((strategy.position_size > 0 and fastrsi > dnlimit) or (strategy.position_size < 0 and fastrsi < uplimit)) and body > emabody

//Trading
if up
    strategy.entry("Long", strategy.long, needlong == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 00, 00)))

if dn
    strategy.entry("Short", strategy.short, needshort == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 00, 00)))
    
if time > timestamp(toyear, tomonth, today, 00, 00) or exit
    strategy.close_all()

Mais.