Esta estrategia utiliza el indicador RSI rápido para identificar el fenómeno de sobreventa y sobrecompra, para realizar operaciones de reversión. La estrategia se combina con las fluctuaciones de tamaño y tamaño de las entidades de la línea K, para evitar quedar atrapadas. La estrategia busca un juicio rápido del fenómeno de sobreventa y sobrecompra, para capturar oportunamente las oportunidades de reversión.
Principio de la estrategia:
Calcula el índice RSI rápido y establece los umbrales de sobreventa y sobreventa.
Calcule el promedio de la EMA del tamaño de la entidad de la línea K para determinar el tamaño de la entidad.
El RSI está sobre la línea de compra y la entidad es más grande que la mitad de la media. El RSI está sobre la línea de venta y la entidad es más grande que la mitad de la media.
El RSI vuelve a cruzar la línea de referencia original y la entidad es mayor que el valor medio para cerrar la posición.
También se puede combinar el valor mínimo con el valor máximo para una verificación adicional.
Las ventajas de esta estrategia:
El RSI Rápido es un indicador de compras y ventas rápidas para evitar retrasos.
El filtro de tamaño de entidad puede saltar las líneas K no visibles.
La verificación del valor mínimo y máximo mejora la calidad de la señal.
El riesgo de esta estrategia:
Las filtraciones de tamaño de entidad pueden filtrar parte de la señal efectiva.
El RSI puede dar falsas señales en situaciones de crisis.
Se requiere una gestión estricta de los fondos para hacer frente al riesgo de inversiones.
En resumen, la estrategia utiliza el RSI rápido y el indicador de tamaño de la entidad de la línea K para combinar el comercio y el control del riesgo al mismo tiempo que se determina rápidamente la sobrecompra y la sobreventa, lo que puede tener un mejor efecto. Sin embargo, debe estar alerta a los problemas de filtración y al mismo tiempo desplegar buenas herramientas de administración de fondos.
/*backtest
start: 2023-01-01 00:00:00
end: 2023-09-11 00:00:00
period: 2d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
strategy(title = "Noro's Fast RSI Strategy v1.3", shorttitle = "Fast RSI str 1.3", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 5)
//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
rsiperiod = input(7, defval = 7, minval = 2, maxval = 50, title = "RSI Period")
limit = input(30, defval = 30, minval = 1, maxval = 100, title = "RSI limit")
rsisrc = input(close, defval = close, title = "RSI Price")
rb = input(1, defval = 1, minval = 1, maxval = 5, title = "RSI Bars")
usemm = input(false, defval = false, title = "Use Min/Max")
showarr = input(false, defval = false, title = "Show Arrows")
fromyear = input(2018, defval = 2018, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")
//Fast RSI
fastup = rma(max(change(rsisrc), 0), rsiperiod)
fastdown = rma(-min(change(rsisrc), 0), rsiperiod)
fastrsi = fastdown == 0 ? 100 : fastup == 0 ? 0 : 100 - (100 / (1 + fastup / fastdown))
//Limits
bar = close > open ? 1 : close < open ? -1 : 0
uplimit = 100 - limit
dnlimit = limit
//RSI Bars
ur = fastrsi > uplimit
dr = fastrsi < dnlimit
uprsi = rb == 1 and ur ? 1 : rb == 2 and ur and ur[1] ? 1 : rb == 3 and ur and ur[1] and ur[2] ? 1 : rb == 4 and ur and ur[1] and ur[2] and ur[3] ? 1 : rb == 5 and ur and ur[1] and ur[2] and ur[3] and ur[4] ? 1 : 0
dnrsi = rb == 1 and dr ? 1 : rb == 2 and dr and dr[1] ? 1 : rb == 3 and dr and dr[1] and dr[2] ? 1 : rb == 4 and dr and dr[1] and dr[2] and dr[3] ? 1 : rb == 5 and dr and dr[1] and dr[2] and dr[3] and dr[4] ? 1 : 0
//Body
body = abs(close - open)
emabody = ema(body, 30)
//MinMax
min = min(close, open)
max = max(close, open)
//Signals
up1 = bar == -1 and (strategy.position_size == 0 or close < strategy.position_avg_price) and dnrsi and body > emabody / 4
dn1 = bar == 1 and (strategy.position_size == 0 or close > strategy.position_avg_price) and uprsi and body > emabody / 4
up2 = min < min[1] and bar == -1 and bar[1] == -1 and usemm
dn2 = max > max[1] and bar == 1 and bar[1] == 1 and usemm
exit = ((strategy.position_size > 0 and fastrsi > dnlimit and bar == 1) or (strategy.position_size < 0 and fastrsi < uplimit and bar == -1)) and body > emabody / 2
//Arrows
col = exit ? black : up1 or dn1 ? blue : up2 or dn2 ? red : na
needup = up1 or (up2 and usemm)
needdn = dn1 or (dn2 and usemm)
needexitup = exit and strategy.position_size < 0
needexitdn = exit and strategy.position_size > 0
plotarrow(showarr and needup ? 1 : na, colorup = blue, colordown = blue, transp = 0)
plotarrow(showarr and needdn ? -1 : na, colorup = blue, colordown = blue, transp = 0)
plotarrow(showarr and needexitup ? 1 : na, colorup = black, colordown = black, transp = 0)
plotarrow(showarr and needexitdn ? -1 : na, colorup = black, colordown = black, transp = 0)
//Trading
if up1 or up2
strategy.entry("Long", strategy.long, needlong == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 00, 00)))
if dn1 or dn2
strategy.entry("Short", strategy.short, needshort == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 00, 00)))
if time > timestamp(toyear, tomonth, today, 00, 00) or exit
strategy.close_all()