Estrategia de negociación cuantitativa basada en el RSI de regresión lineal

El autor:¿ Qué pasa?, Fecha: 2024-01-24 11:35:19
Las etiquetas:

img

Resumen general

Esta estrategia está diseñada basándose en el indicador RSI de regresión lineal. Genera señales de compra y venta calculando el cruce entre el RSI de regresión lineal y la EMA. La estrategia también proporciona dos opciones para la lógica de compra que se pueden seleccionar según sea necesario.

Estrategia lógica

La estrategia primero calcula una regresión lineal de 200 períodos, luego calcula un RSI de 21 períodos basado en el resultado de la regresión lineal. Después de eso, se calcula un EMA de 50 períodos. Cuando el RSI cruza por encima de la EMA, se genera una señal de compra. Cuando el RSI cruza por debajo de la EMA, se activa una señal de venta para cerrar la posición.

La estrategia ofrece dos tipos de lógica de compra:

  1. Comprar cuando el RSI cruza por encima de EMA
  2. Comprar cuando el RSI esté por encima de la EMA y también por encima de la línea de sobrecompra

La lógica de compra adecuada puede seleccionarse en función de las condiciones del mercado.

Análisis de ventajas

Esta estrategia combina las fortalezas tanto del RSI de regresión lineal como de la EMA, que filtra efectivamente algo de ruido de precios y genera señales comerciales más confiables.

El RSI de regresión lineal captura mejor la tendencia, y la EMA ayuda a identificar puntos de inflexión.

La estrategia proporciona dos lógicas de compra opcionales para una mayor flexibilidad para adaptarse a diferentes etapas del mercado.

Análisis de riesgos

El principal riesgo de esta estrategia radica en el posible cambio de la relación entre el RSI y la EMA, que puede conducir a señales comerciales incorrectas.

Además, el carácter retrasado de los indicadores RSI y EMA también puede causar ciertos retrasos en las entradas y salidas, al no poder captar perfectamente los puntos de inflexión.

Para mitigar los riesgos, los parámetros como las longitudes de RSI y EMA pueden optimizarse para una mejor coordinación entre los dos.

Direcciones de mejora

La estrategia puede mejorarse en los siguientes aspectos:

  1. Optimizar las longitudes de regresión lineal RSI y EMA para encontrar las mejores combinaciones de parámetros
  2. Añadir otros indicadores como MACD, Bandas de Bollinger, etc. para mejorar la calidad de la señal
  3. Incorporar métricas de volatilidad para ajustar el tamaño de las posiciones
  4. Utilice técnicas de aprendizaje automático para optimizar automáticamente los parámetros

Conclusión

Esta estrategia diseña una estrategia de reversión media basada en RSI y EMA de regresión lineal, identificando oportunidades de reversión dentro de rangos al observar cruces RSI-EMA. También proporciona dos lógicas de compra opcionales para flexibilidad para adaptarse a diferentes mercados. En general, al combinar múltiples indicadores, la estrategia puede descubrir efectivamente las posibilidades de reversión. Con ajuste de parámetros y filtros adicionales, tiene el potencial de un mejor rendimiento.


/*backtest
start: 2023-01-17 00:00:00
end: 2024-01-23 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Linear RSI")

startP = timestamp(input(2017, "Start Year"), input(12, "Month"), input(17, "Day"), 0, 0)
end   = timestamp(input(9999, "End Year"),   input(1, "Month"),   input(1, "Day"),   0, 0)
_testPeriod() => true

//inputs
length = input(defval=200, minval=1, title="LR length")
length2 = input(defval=21, minval=1, title="RSI length")
ema_fast = input(defval=50, minval=1, title="EMA")
lag = 0

overBought = input(50)
overSold = input(50)


//rsi
src = close
Lr = linreg(src, length, lag)
rsi = rsi(Lr, length2)
ema = ema(rsi, ema_fast)

plot(rsi, color = rsi > overBought ? color.green : rsi < overSold ? color.red : color.silver)
plot(overBought, color=color.purple)
plot(overSold, color=color.purple)
plot(ema, color=color.blue)

first_type = input(true, title="Use first logic?")
second_type =  input(false, title="Use second logic?")

long_condition = (first_type ? crossover(rsi, ema) and _testPeriod() : false) or (second_type ? rsi > ema and rsi > overBought and _testPeriod() : false)
strategy.entry('BUY', strategy.long, when=long_condition)  
 
short_condition = crossunder(rsi, ema)
strategy.close('BUY', when=short_condition)

Más.