En la carga de los recursos... Cargando...

Estrategia de reversión de tendencia del RSI

El autor:¿ Qué pasa?, Fecha: 2024-04-28 13:33:19
Las etiquetas:Indicador de riesgoEl ATR

img

Resumen general

La estrategia de inversión de tendencia RSI es una estrategia de trading cuantitativa basada en el índice de fuerza relativa (RSI) y el rango verdadero promedio (ATR). Ajusta dinámicamente los niveles de take profit y stop loss (TP/SL) para adaptarse a las rápidas fluctuaciones del mercado y capturar oportunidades de inversión de tendencia. La estrategia se centra en el RSI, combinado con ATR para medir la volatilidad, y construye dos bandas dinámicas adaptativas como base para la apertura y cierre de posiciones.

Principio de la estrategia

El núcleo de la estrategia de inversión de tendencia del RSI radica en la construcción de bandas dinámicas TP/SL. Primero, utiliza las funciones personalizadas highest_custom y lowest_custom para encontrar los precios más altos y más bajos desde el último cruce, formando la base de las bandas. Luego, calcula el RSI y ATR con una longitud especificada por el usuario y realiza los siguientes cálculos:

  1. En el caso de las entidades de crédito, el valor de las pérdidas se calculará de acuerdo con el método de cálculo de las pérdidas.
  2. La banda superior = precio más bajo × [1 + (ATR/Precio + 1/(RSI banda superior × multiplicador))]

Aquí, el multiplicador es un factor de expansión de la banda definido por el usuario. Si el precio se rompe por encima de la banda superior, va largo; si se rompe por debajo de la banda inferior, va corto. Los colores de estas dos bandas también cambian de acuerdo con la posición del precio en relación con las bandas, por lo que es fácil de observar.

Ventajas estratégicas

  1. Alta adaptabilidad: Las bandas TP/SL pueden ajustarse automáticamente en función de la volatilidad de los precios, respondiendo rápidamente a los cambios del mercado.
  2. Parámetros ajustables: mediante el ajuste de parámetros como la longitud y el multiplicador, la sensibilidad de la estrategia se puede controlar de manera flexible.
  3. Lógica clara: La estructura del código es razonable y fácil de entender y desarrollar.
  4. Amplia aplicabilidad: puede utilizarse de forma independiente como una estrategia o añadir funcionalidad TP/SL a otras estrategias.
  5. Eficiencia computacional: Al usar funciones personalizadas como highest_custom, evita los cálculos repetitivos masivos causados por el uso de tipos de serie.

Riesgos estratégicos

  1. Por ejemplo, una pequeña longitud puede conducir a operaciones frecuentes, y un multiplicador grande puede conducir a pérdidas de parada demasiado sueltas.
  2. El rendimiento puede ser deficiente en condiciones específicas de mercado, como la consolidación frecuente y las falsas rupturas en un mercado volátil, lo que puede dar lugar a más operaciones perdedoras.
  3. La estrategia en sí misma no tiene una función de juicio de tendencia y debe utilizarse en combinación con otras señales.

Direcciones para la optimización de la estrategia

  1. Considere la posibilidad de añadir indicadores de tendencia, como las medias móviles, para negociar únicamente en los puntos de reversión en la dirección de la tendencia principal.
  2. Optimizar los parámetros para encontrar la mejor combinación de longitud, multiplicador, etc.
  3. Combinar con otros indicadores técnicos o con indicadores del sentimiento del mercado para mejorar la precisión de los puntos de entrada y salida.
  4. Añadir la gestión de posiciones para controlar estrictamente la exposición al riesgo de cada operación.

Resumen de las actividades

La estrategia de inversión de tendencia del RSI utiliza el RSI y el ATR para construir bandas adaptativas que pueden ajustar dinámicamente los puntos TP / SL y responder rápidamente a los cambios del mercado. La estrategia tiene una lógica clara, una amplia aplicabilidad y puede ser una poderosa herramienta para los operadores cuantitativos. Sin embargo, en el uso práctico, todavía se necesita prestar atención a la selección de parámetros y control de riesgos, y se recomienda usarla en combinación con otras señales de indicadores para mejorar el rendimiento general. La estrategia tiene más espacio para la optimización, como la adición de filtros de tendencia y la optimización de parámetros.


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

//@version=5
strategy("RSI Trend Reversal", overlay=true, max_bars_back = 4999, calc_on_every_tick = false)


//INPUTS 
rsi_length = input.int(title = "Lenght", defval = 8)
rsi_mult = input.float(title = "Multiplier", defval = 1.5, step = .05)
lookback = input.int(title = "Delay to prevent idealization", defval = 1)
sltp = input.float(title = "Minimum Difference", defval = 10)
src = input.source(title = "Source Input", defval = close)

//PARAMETERS INITILIZATION
hclose = request.security(ticker.heikinashi(syminfo.tickerid), timeframe.period, src)
//FUNCTION INITILIZATION
highest_custom(src, length) =>
    x = src
    for i = 0 to length
        if src[i] > x
            x := src[i]
    x
lowest_custom(src, length) => 
    x = src
    for i = 0 to length
        if src[i] < x
            x := src[i]
    x
rsilev(src, length, mult, sltp) =>
    sl = (100 - sltp) / 100
    tp = (100 + sltp) / 100
    var bool crossup = na
    var bool crossdown = na
    var float dir = na
    dir_change = ta.change(dir)
    var float BearGuy = 0
    BullGuy = ta.barssince(crossup or crossdown)
    if na(BullGuy)
        BearGuy += 1
    else
        BearGuy := BullGuy
    var float upper = na
    var float lower = na
    rsilower = ta.rsi(src, length)
    rsiupper = math.abs(ta.rsi(src, length) - 100)
    atr = ta.atr(length) / src
    lower := highest_custom(math.max(highest_custom(highest_custom(src, BearGuy) * (1 - (atr + ((1 / (rsilower) * mult)))), BearGuy), src * sl), BearGuy)
    upper := lowest_custom(math.min(lowest_custom(lowest_custom(src, BearGuy) * (1 + (atr + ((1 / (rsiupper) * mult)))), BearGuy), src * tp), BearGuy)
    var float thresh = na
    if na(thresh)
        thresh := lower
    if na(dir)
        dir := 1
    if crossdown
        dir := -1
    if crossup
        dir := 1
    if dir == 1
        thresh := lower
    if dir == -1
        thresh := upper
    crossup := ta.crossover(src, thresh)
    crossdown := ta.crossunder(src, thresh)
    thresh

rsiclose = rsilev(hclose, rsi_length, rsi_mult, sltp)

//PLOTTING
var color col = color.lime
if hclose > rsiclose
    col := color.lime
if hclose < rsiclose
    col := color.red
plot(rsiclose, linewidth = 2, color = col)

//STRATEGY
buy = ta.crossover(hclose, rsiclose)
sell = ta.crossunder(hclose, rsiclose)

if buy[lookback]
    strategy.entry("long", strategy.long)
if sell[lookback]
    strategy.entry("Short", strategy.short)

Relacionados

Más.