Estrategia de inversión del impulso del RSI


Fecha de creación: 2023-11-07 15:45:15 Última modificación: 2023-11-07 15:45:15
Copiar: 0 Número de Visitas: 773
1
Seguir
1617
Seguidores

Estrategia de inversión del impulso del RSI

Descripción general

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.

Principio de estrategia

La estrategia se ejecuta principalmente a través de las siguientes partes:

  1. Indicador del RSI de Connors

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.

  1. Indicador RSI rápido

El RSI rápido se calcula utilizando el movimiento de los precios, lo que refleja el ciclo de la línea ultracorta.

  1. Filtrado de entidad de línea K

Se requiere más de la línea de sol real, la línea de sol vacía, para evitar falsas rupturas.

  1. Condiciones de espacio libre

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.

  1. Cesación de pérdidas

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.

Análisis de las ventajas

La estrategia tiene las siguientes ventajas:

  1. Combinado con indicadores de línea larga y corta

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.

  1. Filtrado de entidad

Operar solo en caso de una ruptura real puede reducir las pérdidas de una falsa ruptura.

  1. Parámetros ajustables

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.

  1. Es simple e intuitivo.

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.

  1. Fácil de hacer

Utiliza solo indicadores incorporados, tiene poco código y es poco difícil de implementar.

Análisis de riesgos

Los principales riesgos de esta estrategia son los siguientes:

  1. El riesgo de fracaso inverso

El precio continuó su tendencia original después de la emisión de la señal de reversión, lo que provocó pérdidas.

  1. Riesgo de una conmoción

El mercado de las criptomonedas se ha visto afectado por una serie de crisis que han provocado la invalidación de transacciones.

  1. El riesgo de una falsa brecha

El filtro de la entidad no evita por completo la posibilidad de una falsa brecha.

  1. Parámetros de ajuste de riesgo

Los parámetros de RSI están mal configurados y pueden perder oportunidades de negociación o causar múltiples transacciones no válidas.

  1. Riesgo en situaciones especiales

El indicador RSI falla en situaciones especiales y produce una señal errónea.

Dirección de optimización

La estrategia puede ser optimizada en los siguientes aspectos:

  1. Aumentar el mecanismo de suspensión de pérdidas

Optimizar las estrategias de stop loss para que sean más razonables y reducir las pérdidas individuales.

  1. Integración de varios indicadores

Se añaden filtros para MACD, KD y otros indicadores para que la señal sea más fiable.

  1. Aumentar la probabilidad de filtrado

Combinar probabilidades de juicio con tendencias y resistencias de soporte para evitar operaciones de baja probabilidad.

  1. Ajuste de los parámetros de optimización

Prueba de parámetros para diferentes tipos de transacciones y períodos para encontrar los parámetros óptimos.

  1. Evite las situaciones especiales

Identificar situaciones especiales, suspender el comercio y evitar grandes pérdidas.

Resumir

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.

Código Fuente de la Estrategia
/*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()