
La estrategia de inversión de la dinámica RSI identifica el fenómeno de sobrecompra y sobreventa mediante la combinación del indicador RSI y la dirección de la entidad de la línea K. La estrategia utiliza al mismo tiempo el RSI regular y el RSI rápido, y se combina con el filtro de la entidad de la línea K para identificar eficazmente las oportunidades de reversión.
La estrategia se ejecuta principalmente a través de las siguientes partes:
Calcule el RSI convencional, el RSI de la tasa de ganancias y el RSI de París-Charles, tomando el promedio de los tres como el RSI de Connors.
El RSI rápido se calcula utilizando el movimiento de los precios, lo que refleja el ciclo de la línea ultracorta.
Se requiere más de la línea de sol real, la línea de sol vacía, para evitar falsas rupturas.
Cuando el RSI de Connors está por debajo de 20 y el RSI rápido está por debajo de 25, aparece un rayo sólido y se hace más.
Cuando el RSI de Connors es superior a 80 y el RSI rápido es superior a 75, aparece una línea negativa real y se produce un vacío.
La entidad se retira de la suspensión de pérdidas cuando gira.
El RSI de Connors determina el punto de reversión de la tendencia de la línea larga, el RSI rápido determina el punto de reversión de la línea corta, y la entidad de la línea K asegura la eficacia de la ruptura, de modo que se pueda detectar con eficacia la oportunidad de reversión y abrir posiciones a tiempo para realizar operaciones de reversión en el exceso de compra y venta.
La estrategia tiene las siguientes ventajas:
El RSI de Connors refleja el ciclo de la línea larga, el RSI rápido refleja el ciclo de la línea corta, y la combinación de ambos permite determinar con mayor precisión el punto de inflexión.
Operar solo en caso de una ruptura real puede reducir las pérdidas de una falsa ruptura.
Los parámetros del RSI, el tipo de transacción y el período de negociación se pueden ajustar libremente para adaptarse a diferentes mercados.
El RSI y las entidades de la línea K son indicadores básicos, y la lógica de la estrategia es simple y fácil de entender.
Utiliza solo indicadores incorporados, tiene poco código y es poco difícil de implementar.
Los principales riesgos de esta estrategia son los siguientes:
El precio continuó su tendencia original después de la emisión de la señal de reversión, lo que provocó pérdidas.
El mercado de las criptomonedas se ha visto afectado por una serie de crisis que han provocado la invalidación de transacciones.
El filtro de la entidad no evita por completo la posibilidad de una falsa brecha.
Los parámetros de RSI están mal configurados y pueden perder oportunidades de negociación o causar múltiples transacciones no válidas.
El indicador RSI falla en situaciones especiales y produce una señal errónea.
La estrategia puede ser optimizada en los siguientes aspectos:
Optimizar las estrategias de stop loss para que sean más razonables y reducir las pérdidas individuales.
Se añaden filtros para MACD, KD y otros indicadores para que la señal sea más fiable.
Combinar probabilidades de juicio con tendencias y resistencias de soporte para evitar operaciones de baja probabilidad.
Prueba de parámetros para diferentes tipos de transacciones y períodos para encontrar los parámetros óptimos.
Identificar situaciones especiales, suspender el comercio y evitar grandes pérdidas.
La estrategia de reversión de la dinámica RSI determina la reversión de las líneas largas y cortas a través del RSI de Connor y el RSI rápido, junto con la filtración de la entidad de la línea K para aumentar la eficacia de la señal. La estrategia tiene ventajas como la combinación de indicadores, la flexibilidad de ajuste de parámetros, que puede capturar oportunidades de reversión e intervenir en el comercio a tiempo en el momento de la sobreventa.
/*backtest
start: 2023-10-07 00:00:00
end: 2023-11-06 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//Noro
//2018
//@version=2
strategy(title = "Noro's Connors RSI Strategy v1.0", shorttitle = "CRSI str 1.0", overlay = false, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 10)
//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
usemar = input(false, defval = false, title = "Use Martingale")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Capital, %")
usecrsi = input(true, defval = true, title = "Use CRSI Strategy")
usefrsi = input(true, defval = true, title = "Use FRSI Strategy")
usemod = input(true, defval = true, title = "CRSI+FRSI Mode")
limit = input(25, defval = 25, minval = 1, maxval = 100, title = "RSI limit")
usebod = input(true, defval = true, title = "Use Body-filter")
usecol = input(true, defval = true, title = "Use Color-filter")
fromyear = input(1900, defval = 1900, 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")
//CRSI
rsilen = 3
streaklen = 2
lookback = 100
rsi = rsi(close,rsilen)
upday = close > close[1] ? 1 : 0
downday = close < close[1] ? -1 : 0
upstreak = upday!=0 ? upstreak[1] + upday : 0
downstreak = downday!=0 ? downstreak[1] + downday : 0
streak = upstreak + downstreak
streakrsi = rsi(streak,streaklen)
roc = close/close[1] - 1
roccount = 0
for i=1 to lookback-1
roccount := roc[i]<roc ? roccount + 1 : roccount
crsi = (rsi + streakrsi + roccount) / 3
//Oscilator
// rsiplot = plot(crsi, title="RSI", style=line, linewidth=1, color=blue)
// band1 = hline(80, title="Upper Line", linestyle=dashed, linewidth=1, color=red)
// band0 = hline(20, title="Lower Line", linestyle=dashed, linewidth=1, color=green)
// fill(band1, band0, color=purple, transp=90)
//Fast RSI
fastup = rma(max(change(close), 0), 7)
fastdown = rma(-min(change(close), 0), 7)
fastrsi = fastdown == 0 ? 100 : fastup == 0 ? 0 : 100 - (100 / (1 + fastup / fastdown))
//Body Filter
nbody = abs(close - open)
abody = sma(nbody, 10)
body = nbody > abody / 3 or usebod == false
//Color Filter
bar = close > open ? 1 : close < open ? -1 : 0
gbar = bar == 1 or usecol == false
rbar = bar == -1 or usecol == false
//Signals
up1 = rbar and (strategy.position_size == 0 or close < strategy.position_avg_price) and crsi < limit and body and usecrsi
dn1 = gbar and (strategy.position_size == 0 or close > strategy.position_avg_price) and crsi > 100 - limit and body and usecrsi
up2 = rbar and (strategy.position_size == 0 or close < strategy.position_avg_price) and fastrsi < limit and body and usefrsi
dn2 = gbar and (strategy.position_size == 0 or close > strategy.position_avg_price) and fastrsi > 100 - limit and body and usefrsi
exit = ((strategy.position_size > 0 and bar == 1) or (strategy.position_size < 0 and bar == -1)) and body
//Trading
profit = exit ? ((strategy.position_size > 0 and close > strategy.position_avg_price) or (strategy.position_size < 0 and close < strategy.position_avg_price)) ? 1 : -1 : profit[1]
mult = usemar ? exit ? profit == -1 ? mult[1] * 2 : 1 : mult[1] : 1
lot = strategy.position_size == 0 ? strategy.equity / close * capital / 100 * mult : lot[1]
if ((up1 or up2) and usemod == false) or (up1 and up2 and usemod)
if strategy.position_size < 0
strategy.close_all()
strategy.entry("Long", strategy.long, needlong == false ? 0 : lot)
if ((dn1 or dn2) and usemod == false) or (dn1 and dn2 and usemod)
if strategy.position_size > 0
strategy.close_all()
strategy.entry("Short", strategy.short, needshort == false ? 0 : lot)
if exit
strategy.close_all()