
La estrategia se basa en el indicador de la fuerza relativa (RSI) para diseñar un sistema de comercio automático de más de la brecha. Se puede emitir automáticamente una señal de más de la brecha para el comercio automático cuando el RSI llega a la zona de sobrecompra y sobreventa.
La estrategia obtiene un valor de RSI en el rango de 0-100 calculando las subidas y bajadas de las acciones en un período determinado. Cuando el RSI está por debajo de 30 es un estado de sobreventa, y cuando está por encima de 70 es un estado de sobreventa. De acuerdo con esta regla, la estrategia se vende automáticamente cuando el RSI llega a la zona de sobreventa y se vende automáticamente cuando llega a la zona de sobreventa.
En concreto, la estrategia primero calcula el valor del RSI de 15 ciclos. Cuando el RSI cae por debajo de 20, se considera que está en un estado de sobreventa, y luego se hace una entrada adicional cuando se rompe la línea de la media móvil de 200 días. Cuando el RSI sube más de 80, se considera que está en un estado de sobreventa, y luego se hace una entrada en blanco.
Además, la estrategia también traza líneas y etiquetas relevantes cuando ocurren señales de precios, lo que hace que las señales de negociación sean más intuitivas.
Las medidas de control de riesgo incluyen: optimización de los parámetros del RSI, ajuste de los umbrales de sobreventa y sobreventa para adaptarse a las diferentes variedades, configuración razonable de los puntos de parada y, en combinación con los indicadores de tendencia, evita el comercio en contra.
La estrategia general es una estrategia de negociación automática que utiliza el indicador RSI para determinar sobrecompra y sobreventa. Emite una señal de negociación cuando el RSI alcanza la zona extrema de sobrecompra y sobreventa y puede realizar operaciones de compra y venta automáticamente. El concepto de la estrategia es simple, claro y fácil de implementar, y se adapta como estrategia básica para el comercio automático.
/*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)