Esta estrategia diseña un sistema de negociación automatizado para compras largas y cortas basado en el indicador del índice de fuerza relativa (RSI).
La estrategia calcula los valores del RSI en el rango de 0-100 basados en los aumentos y caídas de precios dentro de un cierto período. Cuando el RSI está por debajo de 30, es un estado de sobreventa. Cuando el RSI está por encima de 70, es un estado de sobrecompra. De acuerdo con esta regla, la estrategia automáticamente va largo cuando el RSI alcanza la zona de sobreventa y va corto cuando el RSI alcanza la zona de sobrecompra.
Específicamente, la estrategia primero calcula el RSI de 15 períodos. Cuando el RSI cae por debajo de 20, se considera sobreventa. En este momento, cuando el precio se rompe por encima del promedio móvil de 200 días, se abre una posición larga. Cuando el RSI se eleva por encima de 80, se considera sobrecomprada. En este momento, se abre una posición corta. Después de ir largo o corto, se establecen las posiciones de salida take profit y stop loss.
Además, la estrategia dibuja líneas y etiquetas de referencia correspondientes cuando se producen señales de precio para hacer que las señales de negociación sean más intuitivas.
Las medidas de control del riesgo incluyen: optimizar los parámetros del RSI, ajustar los umbrales de sobrecompra y sobreventa para adaptarse a diferentes productos, establecer razonablemente el stop loss, combinarse con indicadores de tendencia para evitar negociar contra la tendencia.
En general, esta es una estrategia de trading automatizada que utiliza el indicador RSI para juzgar las condiciones de sobrecompra y sobreventa. Genera señales de trading cuando el RSI alcanza niveles extremos de sobrecompra o sobreventa, y puede realizar automáticamente operaciones largas y cortas. La idea de la estrategia es simple y clara, fácil de implementar y adecuada como una estrategia de trading automática básica. Pero el indicador RSI tiene algunos retrasos, por lo que se recomienda optimizarlo con otros indicadores para mejorar la precisión de la señal. Además, se debe prestar atención al control de riesgos, optimizar el mecanismo de stop loss, desarrollar módulos de control de riesgos para reducir los riesgos comerciales. Si se optimiza y verifica en el trading en vivo, la estrategia puede convertirse en un sistema automatizado efectivo para operaciones largas y cortas.
/*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)