Esta estratégia projeta um sistema de negociação automatizado para longo e curto com base no indicador de Relative Strength Index (RSI).
A estratégia calcula os valores do RSI na faixa de 0-100 com base nos aumentos e quedas de preços dentro de um determinado período. Quando o RSI está abaixo de 30, é o estado de sobrevenda. Quando o RSI está acima de 70, é o estado de sobrecompra. De acordo com esta regra, a estratégia automaticamente vai longo quando o RSI atinge a zona de sobrevenda e vai curto quando o RSI atinge a zona de sobrecompra.
Especificamente, a estratégia primeiro calcula o RSI de 15 períodos. Quando o RSI cai abaixo de 20, é considerado sobrevendo. Neste momento, quando o preço ultrapassa a média móvel de 200 dias, uma posição longa é aberta. Quando o RSI sobe acima de 80, é considerado sobrecomprado. Neste momento, uma posição curta é aberta. Depois de ir longo ou curto, as posições take profit e stop loss são definidas para sair.
Além disso, a estratégia desenha linhas de referência e rótulos correspondentes quando ocorrem sinais de preço para tornar os sinais de negociação mais intuitivos.
As medidas de controlo do risco incluem: a otimização dos parâmetros do RSI, o ajustamento dos limiares de sobrecompra e sobrevenda para se adequarem aos diferentes produtos, a definição razoável de stop loss, a combinação com indicadores de tendência para evitar a negociação contra a tendência.
No geral, esta é uma estratégia de negociação automatizada que usa o indicador RSI para julgar as condições de sobrecompra e sobrevenda. Ele gera sinais de negociação quando o RSI atinge níveis extremos de sobrecompra ou sobrevenda e pode realizar automaticamente negociações longas e curtas. A ideia da estratégia é simples e clara, fácil de implementar e adequada como uma estratégia de negociação automatizada básica. Mas o indicador RSI tem algum atraso, por isso é recomendável otimizá-lo com outros indicadores para melhorar a precisão do sinal. Além disso, deve-se prestar atenção ao controle de risco, otimizando o mecanismo de stop loss, desenvolvendo módulos de controle de risco para reduzir os riscos de negociação. Se otimizado e verificado na negociação ao vivo, a estratégia pode se tornar um sistema automatizado eficaz para negociação longa e curta.
/*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)