Estratégia dupla de sobrecompra/supervenda baseada no indicador RSI

Autora:ChaoZhang, Data: 2023-09-13 16:58:55
Tags:

Esta estratégia é chamada de Estratégia de Supercompra/Supervenda Dupla Baseada no Indicador RSI. Ela usa tanto o indicador RSI quanto o indicador Stoch RSI para determinar condições de supercompra e supervenda para sinais comerciais mais confiáveis.

O indicador RSI reflete os níveis de sobrecompra / sobrevenda nos preços. RSI acima de 70 sugere estado de sobrecompra, enquanto abaixo de 30 é sobrevenda. O indicador Stoch RSI mostra se o próprio RSI entrou em zonas de sobrecompra ou sobrevenda.

A lógica de negociação é:

Quando o RSI cruza acima da linha de sobrecompra definida pelo usuário, ele sinaliza condições de sobrecompra para considerar negociações curtas.

Quando o RSI cai abaixo da linha de sobrevenda definida pelo usuário, ele sinaliza condições de sobrevenda para considerar negociações longas.

Enquanto isso, o Stoch RSI também precisa mostrar sinais de sobrecompra ou sobrevenda para confirmar os sinais de entrada correspondentes.

Esta condição dupla combina-se para filtrar sinais mais ambíguos e evitar falsos fugas.

A vantagem desta estratégia é a utilização de vários indicadores derivados do RSI para um julgamento mais preciso do intervalo de sobrecompra / sobrevenda.

Em resumo, as combinações de indicadores precisam de um equilíbrio cuidadoso.


/*backtest
start: 2023-01-01 00:00:00
end: 2023-09-12 00:00:00
period: 4d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("test1","t1",overlay=true, default_qty_type = strategy.percent_of_equity,default_qty_value=100,initial_capital=200, currency=currency.USD)
//user input
k_param = input(title = "k length", type = input.integer, defval = 14)
d_param = input(title = "d length", type = input.integer, defval = 3)
rsi_param = input(title = "RSI", type = input.integer, defval = 5)
upper = input(title = "over brought", type = input.integer, defval = 80)
lower = input(title = "over sold", type = input.integer, defval = 20)

//calculation
rsi = rsi(close,rsi_param)
stochastic = 100*(rsi - lowest(rsi,k_param))/(highest(rsi,k_param)-lowest(rsi,k_param))
SMA = sma(stochastic,d_param)

//DRAW
plot(upper,color = color.blue,linewidth = 2, title ="超买")
plot(lower,color = color.blue,linewidth = 2, title ="超卖")
plot(rsi,color = rsi>upper ?color.red:rsi<lower? color.green:color.black, linewidth=2,title ="ris超买超卖")
plot(stochastic,color = color.purple,title="震荡指数")
plot(SMA, color = color.orange,title="移动平均")

//trading
shortposition = crossover(rsi,upper)
longposition = crossunder(rsi,lower)
strategy.entry("卖",false,when =(shortposition))
strategy.entry("买",true,when = (longposition))
strategy.exit("止盈",profit = close*0.013/syminfo.mintick)

Mais.