
Esta estratégia é conhecida como inversão de RSI de duas eixos temporais, e é uma estratégia de negociação quantitativa baseada no índice de força relativa (RSI). A estratégia usa dois períodos diferentes de RSI como sinais de compra e venda para alcançar baixos e altos e obter oportunidades de negociação trazidas pela inversão do preço das ações.
A estratégia usa o RSI de ciclo rápido (de 55 dias por defeito) e o RSI de ciclo lento (de 126 dias por defeito) para construir sinais de negociação. Quando o RSI de ciclo rápido atravessa o RSI de ciclo lento, gera um sinal de compra, e vice-versa, quando o RSI de ciclo rápido atravessa o RSI de ciclo lento, gera um sinal de venda. Comparando a força relativa da dinâmica de preços entre dois intervalos de tempo diferentes, é possível encontrar oportunidades de reversão de tendências de curto e longo prazo.
Após o sinal de entrada, a estratégia configura um ponto de parada de parada. O ponto de parada é 0,9 vezes o preço de entrada por defeito, e o ponto de parada é 3% do preço de entrada por defeito. Ao mesmo tempo, quando o sinal de reversão ocorre novamente, a posição atual é eliminada.
Esta estratégia utiliza a inversão de dois eixos de tempo RSI para capturar oportunidades de reversão de preços de curto prazo, através da comparação de períodos mais rápidos e mais lentos. Esta é uma estratégia típica de negociação de reversão de preços usando uma comparação de indicadores em vários eixos de tempo. O espaço de otimização está no ajuste de parâmetros e na otimização das regras de controle de risco.
/*backtest
start: 2022-11-29 00:00:00
end: 2023-12-05 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
strategy(title="Relative Strength Index", shorttitle="RSI")
slen = input(55, title="Short length")
llen = input(126, title="Long length")
sup = ema(max(change(close), 0), slen)
sdown = ema(-min(change(close), 0), slen)
rsi1 = sdown == 0 ? 100 : sup == 0 ? 0 : 100 - (100 / (1 + sup / sdown))
lup = ema(max(change(close), 0), llen)
ldown = ema(-min(change(close), 0), llen)
rsi2 = ldown == 0 ? 100 : lup == 0 ? 0 : 100 - (100 / (1 + lup / ldown))
ob = input(55, title="Overbought")
os = input(45, title="Oversold")
tp = input(.9, title="Take profit level %")*.01
sl = input(3, title="Stoploss level %")*.01
mid = avg(ob,os)
plot (mid, color=#4f4f4f, transp=0)
hline (ob, color=#4f4f4f)
hline (os, color=#4f4f4f)
long = crossover(rsi1,rsi2)
short = crossunder(rsi1,rsi2)
vall = valuewhen(long,close,0)
lexit1 = high>=(vall*tp)+vall
lexit2 = low<=vall-(vall*sl)
vals = valuewhen(short,close,0)
sexit1 = low<=vals - (vals*tp)
sexit2 = high>=vals + (vals*sl)
bgcolor (color=long?lime:na,transp=50)
bgcolor (color=short?red:na, transp=50)
strategy.entry("Long", strategy.long, when=long)
strategy.close("Long", when=lexit1)
strategy.close("Long", when=lexit2)
strategy.close("Long", when=short)
strategy.entry("Short", strategy.short, when=short)
strategy.close("Short", when=sexit1)
strategy.close("Short", when=sexit2)
strategy.close("Short", when=long)
plot (rsi1, color=orange, transp=0,linewidth=1, title="Short period RSI")
plot (rsi2, color=aqua , transp=0,linewidth=1, title="Long period RSI")