
A estratégia baseia-se em um indicador de força relativa (RSI) para projetar um sistema de negociação automática de longo prazo. Ele pode emitir automaticamente um sinal de longo prazo para negociação automática quando o RSI atinge uma área de sobrecompra e sobrevenda.
A estratégia obteve um valor de RSI entre 0 e 100 por meio da calculação de oscilações de ações em um determinado período. Quando o RSI está abaixo de 30, é um estado de sobrevenda, e quando está acima de 70, é um estado de sobrevenda. De acordo com esta regra, a estratégia faz um aumento automático quando o RSI atinge a zona de sobrevenda e um fechamento automático quando atinge a zona de sobrevenda.
Especificamente, a estratégia primeiro calcula o valor do RSI de 15 ciclos. Quando o RSI cai para menos de 20, é considerado um estado de sobrevenda, e quando ele quebra a média móvel de 200 dias acima, faz-se uma entrada adicional. Quando o RSI sobe para mais de 80, é considerado um estado de sobrecompra, e então é feito um empréstimo.
Além disso, a estratégia também traça linhas de marcação e etiquetas relevantes quando ocorrem sinais de preço, tornando os sinais de negociação mais intuitivos.
As medidas de controle de risco incluem: otimização dos parâmetros do RSI, ajuste do limiar de sobrevenda e sobrevenda para as diferentes variedades, configuração razoável do ponto de parada e, em combinação com indicadores de tendência, evitar negociações adversas.
A estratégia geral é uma estratégia de negociação automática que usa o indicador RSI para determinar o excesso de compra e venda. Ela emite um sinal de negociação quando o RSI atinge a região extrema do excesso de compra e venda. O conceito da estratégia é simples, claro e fácil de implementar.
/*backtest
start: 2023-10-22 00:00:00
end: 2023-10-29 00:00:00
period: 15m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("RSI Improved strategy", overlay=true)
higherTF1 = input.timeframe('15' , "Resolution", options = ['5', '15', '1H', 'D', 'W', 'M'])
dailyopen = request.security(syminfo.tickerid, higherTF1, close)
Reward = input(1600)
Risk = input(1600)
length = input( 5 )
overSold = input( 30 )
overBought = input( 70 )
EMA = input(200)
price = close
vrsi = ta.rsi(price, length)
RSIlowest = vrsi[1] > vrsi ? true : false
RSIhighest = vrsi[1] < vrsi ? true : false
//ro = ta.crossunder(vrsi, 20)
//ru = ta.crossover(vrsi, 80)
co = ta.crossunder(vrsi, overSold)
cu = ta.crossunder(vrsi, overBought)
plot(ta.ema(close, EMA))
plot(ta.ema(close, 50), color = color.orange)
UponEMA = close > ta.ema(close, EMA) ? true : false
belowEMA = close < ta.ema(close, EMA) ? true : false
//transfer 'float' to 'int' to 'string'
r = int(vrsi)
value = str.tostring(r)
m = int(strategy.openprofit)
money = str.tostring(m)
if (not na(vrsi))
//when price stand up on 200ema and rsi is at oversold area, open long position
// if (co and UponEMA)
// strategy.order("Rsi long", strategy.long, 1 , comment = "Rsi long")
if(vrsi < 20 and RSIlowest)
// line1 = line.new(x1=bar_index, y1=dailyopen, x2=bar_index+1, y2=dailyopen, xloc=xloc.bar_index, style=line.style_solid,extend=extend.right, color=color.aqua, width = 2)
// line.delete(line1[1]) // remove the previous line when new bar appears
// label1 = label.new(x=bar_index, y=dailyopen,yloc=yloc.belowbar, text = value,textcolor = color.white, color = color.green, style = label.style_label_up)
// label.delete(label1[1])
strategy.order("Rsi long", strategy.long, 1 , comment = "Rsi long")
strategy.exit("exit", "Rsi long", profit = Reward, loss = Risk, comment = "Rsi long exit")
//strategy.close("Rsi short", comment = "Rsi close")
if(vrsi > 80 and RSIhighest)
// line2 = line.new(x1=bar_index, y1=dailyopen, x2=bar_index+1, y2=dailyopen, xloc=xloc.bar_index, style=line.style_solid,extend=extend.right, color = #e65100, width = 2)
// line.delete(line2[1]) // remove the previous line when new bar appears
// label2 = label.new(x=bar_index, y=dailyopen,yloc=yloc.abovebar, text = value, textcolor = color.white, color = color.red)
// label.delete(label2[1])
strategy.order("Rsi short",strategy.short, 1, comment = "Rsi short ")
strategy.exit("exit", "Rsi short", profit = Reward,loss = Risk, comment = "Rsi short exit")
// if(UponEMA)
// strategy.close("Rsi short", comment = "Rsi short close")
//plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_cross)
//plotshape(confirmPH, title="Label",offset = 1,text="Bull",style=shape.labeldown,location=location.abovebar,color=color.green,textcolor=color.green)
//when Rsi reaches overbought, draw a Horizontal Ray to close prices, similarly when it comes to oversold.(accomplished)
//detects when there is more lower/higher RSI values, adjust horizontal Ray and label to new posistion.(accomplished)