Esta estrategia utiliza el indicador RSI para juzgar las tendencias del mercado y generar señales comerciales cuando ocurren condiciones de sobrecompra o sobreventa. Su objetivo es capturar movimientos de reversión a corto plazo en el mercado. También incorpora promedios móviles y lógica de toma de ganancias / stop-loss para filtrar las señales y controlar los riesgos.
Calcule el RSI de 14 períodos y establezca la línea de sobrecompra en 67 y la línea de sobreventa en 44.
Cuando el RSI cruza por encima de la línea de sobrecompra, se genera una señal de venta.
Añadir filtro de promedio móvil. Las señales de venta solo ocurren cuando el cierre está por debajo del MA del día anterior; Las señales de compra solo ocurren cuando el cierre está por encima del MA del día anterior.
Incorpore la lógica de toma de ganancias y stop-loss. Se pueden usar puntos fijos o salidas basadas en RSI.
Captura las oportunidades de reversión a corto plazo utilizando los niveles de sobrecompra/sobreventa del RSI.
El filtro de media móvil evita el comercio contra la tendencia.
La toma de ganancias y el stop-loss controlan la pérdida de una sola operación.
Puede detectar oportunidades de inversión de tendencia temprano.
El retraso del RSI puede causar señales falsas. Ajuste los parámetros o combine con otros indicadores.
El stop-loss fijo puede ser demasiado ancho o demasiado estrecho.
La toma de ganancias fijas puede salir demasiado temprano o el objetivo demasiado pequeño.
No puede filtrar los mercados, causando sobre-negociación y pérdidas.
Prueba los parámetros del RSI en diferentes plazos.
Ajustar los niveles de RSI sobrecomprados/sobrevendidos.
Pruebe con otras medias móviles u otros filtros.
Prueba objetivos/paradas de ganancias fijos frente a objetivos/paradas dinámicas.
Optimizar los valores de ganancia/detención para adaptarse a la volatilidad del mercado.
Añadir filtros para evitar los golpes en los mercados variados.
Considere la confluencia de múltiples marcos de tiempo para mejorar la calidad de la señal.
Esta estrategia opera inversiones utilizando el RSI combinado con promedios móviles y lógica de toma de ganancias / stop-loss. Su objetivo es capturar los giros a corto plazo en el mercado. Una mayor optimización de parámetros y filtros adicionales pueden mejorar la rentabilidad al tiempo que reducen los riesgos. Es adecuado para inversores que son sensibles a los movimientos a corto plazo y buscan operaciones frecuentes.
/*backtest start: 2022-09-21 00:00:00 end: 2023-09-27 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //© профешинил хомячело //@version = 4 strategy("RSI Strategy Professional Хомячело", overlay=false) length = input( 14 ) overSold = input( 44 ) overBought = input( 67 ) price = open rsi = rsi(price, length) band1 = hline(overSold, "overSold12", color=#C0C0C0) band0 = hline(overBought, "overBought12", color=#C0C0C0) plot(rsi, "RSI", color=color.red) fill(band1, band0, color=color.black, transp=90, title="Background") src = close a = sma(src, 1) aaa = strategy.opentrades + 1 n = input(defval = 0.0576923077, title = "AvgPrice - n") //n = 0.0576923077 buysignal = crossover(rsi, overSold) and (a < (strategy.position_avg_price - n) or strategy.opentrades == 0) sellsignal = crossunder(rsi, overBought) and (a > (strategy.position_avg_price + n) or strategy.opentrades == 0) // crossover(rsi, overSold) // crossunder(rsi, overBought) if (not na(rsi)) if(buysignal) strategy.entry("LONG", strategy.long, comment = tostring(a) + "\n(" + tostring(aaa) + ")") n += 1000 if(sellsignal) strategy.entry("SHORT", strategy.short, comment = tostring(a) + "\n(" + tostring(aaa) + ")") n += 1000 //лонги орні if(rsi < 15 and strategy.opentrades != 5 and a < (strategy.position_avg_price - n)) strategy.entry("LONG", strategy.long, comment = "ЙОБАНИЙ НАСРАВ ТА БЕРИ ЛОНГ НА ВСЬО ШО Є НАХУЙ\n" + tostring(a) + "\n(" + tostring(aaa) + "!!!)") if(rsi < 20 and strategy.opentrades != 5 and a < (strategy.position_avg_price - n)) strategy.entry("LONG", strategy.long, comment = "ЛОНГ НА ВСЮ КОТЛЄТУ\n" + tostring(a) + "\n(" + tostring(aaa) + "!!!)") //шорти орні if(rsi > 85 and strategy.opentrades != 5 and a < (strategy.position_avg_price - n)) strategy.entry("SHORT", strategy.short, comment = "ЙОБАНИЙ НАСРАВ ТА БЕРИ ШОРТ НА ВСЬО ШО Є НАХУЙ\n" + tostring(a) + "\n(" + tostring(aaa) + "!!!)") if(rsi > 80 and strategy.opentrades != 5 and a < (strategy.position_avg_price - n)) strategy.entry("SHORT", strategy.short, comment = "ШОРТ НА ВСЮ КОТЛЄТУ\n" + tostring(a) + "\n(" + tostring(aaa) + "!!!)") //стоп-лосс і ціль //rsi rsion = input(defval = false, title = "Тейк-профіт по RSI") rcl = input(defval = 73.0, title = "RSI тейк по лонгу") rcs = input(defval = 44.0, title = "RSI тейк по шорту") possize = input(defval = 250.0, title = "Маржа") posp = input(defval = 3.0, title = "Плече") //tick ut = input(defval = false, title = "Тейк-профіт") tar = input(defval = 4500.0, title = "Тейк-профіт у тіках") us = input(defval = false, title = "Стоп-лосс") stop = input(defval = 0.0, title = "Стоп-лосс у тіках") tar:=tar/syminfo.mintick stop:=stop/syminfo.mintick if(ut==true and us==false) strategy.exit(id="LX", from_entry = "LONG", profit = tar, comment = "ТейкL") strategy.exit(id="SX", from_entry = "SHORT", profit = tar, comment = "ТейкS") if(us==true and ut==false) strategy.exit(id="LX", from_entry = "LONG", loss = stop, comment = "СтопL") strategy.exit(id="SX", from_entry = "SHORT", loss = stop, comment = "СтопS") if(ut==true and us==true) strategy.exit(id="LX", from_entry = "LONG", profit = tar, loss = stop, comment ="Тейк/СтопL") strategy.exit(id="SX", from_entry = "SHORT", profit = tar, loss = stop, comment ="Тейк/СтопS") //закриття по rsi if(rsion == 1 ) pr = round(((a / strategy.position_avg_price - 1) * possize * posp), 2) ppr = round(((a / strategy.position_avg_price - 1) * 100 * posp), 2) spr = round((1 - (a / strategy.position_avg_price)) * possize * posp, 2) sppr = round((100 - (a / strategy.position_avg_price * 100)) * posp, 2) if(rsi > rcl) strategy.close(id="LONG", comment = "LT\n" + tostring(ppr) + "%\n" + tostring(pr) + "$\n" + tostring(a)) if(rsi < rcs) strategy.close(id="SHORT", comment = "ST\n" + tostring(sppr) + "%\n" + tostring(spr) + "$\n" + tostring(a))