Estrategia de recuperación de media móvil RSI bidireccional


Fecha de creación: 2023-10-23 15:46:33 Última modificación: 2023-10-23 15:46:33
Copiar: 0 Número de Visitas: 671
1
Seguir
1617
Seguidores

Estrategia de recuperación de media móvil RSI bidireccional

Descripción general

La estrategia de respuesta de línea media RSI bidireccional es una estrategia de seguimiento de tendencias que utiliza dos indicadores RSI de diferentes períodos de tiempo para identificar situaciones de sobreventa y sobreventa. La estrategia tiene como objetivo obtener ganancias al hacer más después de la sobreventa y hacer menos después de la sobreventa.

Lógica de estrategia

La estrategia utiliza dos indicadores RSI con diferentes períodos, uno en el gráfico de 5 minutos y otro en el gráfico de 1 hora. Para el indicador RSI, el nivel de sobreventa se identifica como inferior a 30 y el nivel de sobreventa es superior a 70.

Se trata de un indicador que sigue el RSI para ver si el RSI se encuentra en una zona de sobreventa o de sobrecompra durante un período de tiempo determinado, lo que indica que se ha producido una situación de sobreventa o de sobrecompra de expansión.

Además, utiliza una media móvil asimetrica suavizada para comprobar la dirección de la tendencia mediante la verificación de la línea K roja o verde de un período determinado antes de entrar en una operación. El filtro de color de la posición ayuda a evitar falsas señales.

Cuando se cumplen las condiciones de RSI y desviación y promedio móvil, la estrategia hace más después de la sobreventa, se hace más baja después de la sobreventa y el precio de apuesta vuelve a la línea media.

Al final de cada día, despeje sus posiciones para evitar mantenerlas durante la noche.

Análisis de las ventajas

  • Utiliza múltiples marcos de tiempo para identificar sobrecompras y sobreventas
  • Filtro de ruido de media móvil asimetrica para identificar la dirección de la tendencia
  • El filtro de color para evitar señales falsas
  • Reglas claras de apertura y cierre de posición de acuerdo con dos indicadores
  • Riesgo de control de la posición cerrada antes del día

Análisis de riesgos

  • Si la tendencia fuerte continúa, el RSI podría sufrir un temblor después de una señal de sobreventa
  • La brecha en el mercado podría desencadenar un cierre de pérdidas
  • El retraso de la media móvil puede retrasar la apertura de posiciones y perder el mercado
  • El beneficio que se puede obtener al despojarse de la posición durante la noche antes de que finalice el día

Dirección de optimización

  • Añadir filtros adicionales como volumen de transacciones o volatilidad para confirmar la señal
  • Optimización de los ciclos RSI y los parámetros de los niveles de sobrecompra y sobreventa
  • Considere el control de posiciones dinámicas basado en la volatilidad
  • Prueba el stop-loss y la salida, no el cierre de la posición antes del final del día
  • Prueba el efecto en diferentes variedades y ajusta los parámetros

Resumir

La estrategia de respuesta a la línea media de RSI de dos vías utiliza un método de regularización de la dinámica comercial. A través de la combinación de dos marcos de tiempo, el indicador de sobreventa y sobreventa, el análisis de la forma de la línea K y el filtro de apertura de posiciones, su objetivo es identificar oportunidades de retorno a la línea media de alta probabilidad.

Código Fuente de la Estrategia
/*backtest
start: 2023-09-01 00:00:00
end: 2023-09-30 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Gidra
//2018

//@version=2
strategy(title = "Gidra's Vchain Strategy v0.1", shorttitle = "Gidra's Vchain Strategy v0.1", overlay = false, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 100)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot, %")
rsiperiod = input(14, defval = 14, minval = 2, maxval = 100, title = "RSI period")
rsilimit = input(30, defval = 30, minval = 1, maxval = 50, title = "RSI limit")
rsibars = input(3, defval = 3, minval = 1, maxval = 20, title = "RSI signals")
useocf = input(true, defval = true, title = "Use Open Color Filter")
openbars = input(2, defval = 2, minval = 1, maxval = 20, title = "Open Color, Bars")
showrsi = input(true, defval = true, title = "Show indicator RSI")
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")


//Heikin Ashi Open/Close Price
o=open
c=close
h=high
l=low
haclose = (o+h+l+c)/4
haopen = na(haopen[1]) ? (o + c)/2 : (haopen[1] + haclose[1]) / 2
hahigh = max (h, max(haopen,haclose))
halow = min (l, min(haopen,haclose))
col=haopen>haclose ? red : lime
plotcandle(haopen, hahigh, halow, haclose, title="heikin", color=col)

//RSI
uprsi = rma(max(change(close), 0), rsiperiod)
dnrsi = rma(-min(change(close), 0), rsiperiod)
rsi = dnrsi == 0 ? 100 : uprsi == 0 ? 0 : 100 - (100 / (1 + uprsi / dnrsi))
uplimit = 100 - rsilimit
dnlimit = rsilimit
rsidn = rsi < dnlimit ? 1 : 0
rsiup = rsi > uplimit ? 1 : 0

//RSI condition
rsidnok = highest(rsidn, rsibars) == 1? 1 : 0
rsiupok = highest(rsiup, rsibars) == 1? 1 : 0

//Color Filter
bar = haclose > haopen ? 1 : haclose < haopen ? -1 : 0
gbar = bar == 1 ? 1 : 0
rbar = bar == -1 ? 1 : 0
openrbarok = sma(gbar, openbars) == 1 or useocf == false
opengbarok = sma(rbar, openbars) == 1 or useocf == false

//Signals
up = openrbarok and rsidnok
dn = opengbarok and rsiupok

lot = strategy.position_size == 0 ? strategy.equity / close * capital / 100 : lot[1]

//Indicator RSI
colbg = showrsi == false ? na : rsi > uplimit ? red : rsi < dnlimit ? lime : na
bgcolor(colbg, transp = 20)

//Trading
if up
    strategy.entry("Long", strategy.long, needlong == false ? 0 : lot, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))

if dn
    strategy.entry("Short", strategy.short, needshort == false ? 0 : lot, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
    
if time > timestamp(toyear, tomonth, today, 23, 59)// or exit
    strategy.close_all()