Esta estrategia implementa operaciones rápidas de avance basadas en el indicador RSI y la EMA de los cuerpos de velas.
Calcular el indicador RSI con el período 7 y utilizar RMA para la aceleración.
Calcular la EMA del tamaño del cuerpo del candelabro con el período 30 como referencia para el tamaño del cuerpo.
Si el RSI cruza por encima de la línea límite (default 30) y el cuerpo de la vela actual es mayor que 1/4 del tamaño promedio del cuerpo, vaya largo.
Si el RSI cruza por debajo de la línea límite (default 70) y el cuerpo de la vela actual es mayor que 1/4 del tamaño promedio del cuerpo, corta.
Si ya está en posición, cierre cuando el RSI cruce la línea límite.
Se pueden configurar parámetros como longitud del RSI, límite, precio de referencia.
Se pueden configurar parámetros como el período EMA del cuerpo, el multiplicador de chroot de posición abierta.
El número de cruces RSI se puede configurar.
Utilice el atributo de reversión del RSI para capturar las reversiones a tiempo.
RMA acelera la formación de RSI para inversiones más sensibles.
Filtrar pequeñas consolidaciones de rango con grandes cuerpos de candelabro.
Los datos de pruebas previas suficientes garantizan la fiabilidad.
Los parámetros personalizables se adaptan a los diferentes entornos del mercado.
Una lógica simple y clara.
El RSI tiene sesgo en las pruebas posteriores, el rendimiento real debe ser validado.
Los grandes organismos no pueden filtrar completamente los mercados agitados.
Los parámetros predeterminados pueden no ser adecuados para todos los productos, se necesita optimización.
La tasa de ganancias puede no ser alta, necesita soportar pérdidas consecutivas mentalmente.
Riesgo de falla en el avance, necesita un stop loss oportuno.
Optimizar los parámetros del índice de rendimiento para diferentes períodos y productos.
Optimice el período de EMA del cuerpo para suavizar el tamaño del cuerpo.
Optimice el multiplicador de cuerpo para posiciones abiertas para controlar la frecuencia de entrada.
Agregue el stop loss móvil para garantizar la tasa de ganancia.
Añadir un filtro de tendencia para evitar la negociación contra tendencia.
Optimizar la gestión del dinero para controlar el riesgo.
En resumen, esta es una estrategia de reversión muy simple y directa. Utiliza tanto el atributo de reversión del RSI como el impulso de los grandes cuerpos de velas para entrar rápidamente durante las reversiones del mercado. Aunque los resultados de las pruebas de retroceso parecen buenos, el rendimiento real aún no se ha validado. La optimización de parámetros y el control de riesgos son necesarios al aplicarlo. En general, es una estrategia con gran valor y vale la pena aplicar y mejorar constantemente en el comercio en vivo.
/*backtest start: 2023-09-23 00:00:00 end: 2023-10-23 00:00:00 period: 3h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy(title = "Noro's Fast RSI Strategy v1.2", shorttitle = "Fast RSI str 1.2", 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") 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)) 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) //Signals bar = close > open ? 1 : close < open ? -1 : 0 up = bar == -1 and (strategy.position_size == 0 or close < strategy.position_avg_price) and dnrsi and body > emabody / 4 dn = bar == 1 and (strategy.position_size == 0 or close > strategy.position_avg_price) and uprsi and body > emabody / 4 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 //Trading if up 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 dn 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()