RSI Estrategia de negociación automatizada larga y corta

El autor:¿ Qué pasa?, Fecha: 2023-10-30 17:13:24
Las etiquetas:

img

Resumen general

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).

Estrategia lógica

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.

Ventajas de la estrategia

  • La idea de la estrategia es clara y fácil de entender e implementar
  • Basado en el indicador RSI, el juicio de sobrecompra y sobreventa es preciso
  • Negociación totalmente automatizada sin intervención manual
  • Se determinan las pérdidas por tomar beneficios y las pérdidas por detener para controlar eficazmente los riesgos
  • Las señales de trading son intuitivas y fáciles de controlar

Riesgos de la estrategia

  • El indicador RSI tiene un poco de retraso, puede causar un error de juicio
  • Los límites fijos de sobrecompra y sobreventa no son adecuados para todos los productos
  • La configuración incorrecta de stop loss puede causar mayores pérdidas
  • El comercio con la tendencia principal en los mercados de tendencia puede causar pérdidas

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.

Direcciones para la optimización de la estrategia

  • Optimizar los parámetros del RSI para mejorar la precisión de la evaluación de la sobrecompra y sobreventa
  • Confirmar las señales comerciales con otros indicadores como KDJ, MACD, etc.
  • Optimizar la configuración de stop loss de acuerdo con las condiciones del mercado
  • Añadir el juicio de tendencia para evitar operaciones inversas
  • Se trata de la curva de equidad establecida para el seguimiento de pérdidas de detención.
  • Desarrollar un módulo de control de riesgos para controlar los riesgos individuales y generales

Resumen de las actividades

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)

Más.