Estrategia mejorada de la media móvil del RSI MACD

El autor:¿ Qué pasa?, Fecha: 2024-01-05 16:11:23
Las etiquetas:

img

Resumen general

Esta es una estrategia combinada que utiliza el RSI, el MACD y los promedios móviles. Incorpora las señales de sobrecompra / sobreventa del RSI, la sensibilidad del MACD y el efecto indicador de los promedios móviles al determinar los puntos de entrada.

Estrategia lógica

La estrategia evalúa principalmente las cuatro condiciones siguientes para decidir la entrada a largo plazo:

  1. el histograma MACD es mayor que el nivel de entrada largo establecido;
  2. RSI es superior a 50, lo que indica estado de sobrecompra;
  3. La EMA de corto plazo se cruza por encima de la EMA de largo plazo, formando una cruz de oro;
  4. El precio de cierre rompe la EMA a largo plazo y es superior a la EMA a largo plazo más el intervalo de stop loss ATR.

Cuando se cumplan las dos condiciones de salida siguientes, la estrategia cerrará las posiciones para detener la pérdida:

  1. el histograma MACD es inferior al nivel de stop loss establecido;
  2. La EMA a corto plazo se cruza por debajo de la EMA a largo plazo, formando una cruz muerta.

Por lo tanto, la estrategia detiene las pérdidas oportunamente y evita grandes pérdidas cuando se obtiene ganancia o se retracera.

Análisis de ventajas

La mayor ventaja de esta estrategia radica en la combinación de indicadores, dando pleno uso a los méritos de cada indicador:

  1. La aplicación del RSI evita la pérdida de comisiones de transacción causada por la apertura repetida de posiciones en mercados de rango.

  2. La sensibilidad del indicador del histograma MACD garantiza la captura oportuna de los puntos de inflexión.

  3. Las medias móviles filtran el ruido del mercado a corto plazo y dan pleno juego al efecto del indicador.

Riesgos y soluciones

Los principales riesgos de esta estrategia incluyen:

  1. El mayor riesgo de promedio móvil como las estrategias de tendencia es el gran retroceso causado por la inversión de tendencia. Esto puede controlarse activamente mediante el tamaño de la posición, el stop loss, etc.

  2. Dificultad en la optimización de parámetros. Las estrategias combinadas de múltiples indicadores tienen mayor dificultad en el ajuste y optimización de parámetros.

Orientaciones para la mejora

La estrategia se puede optimizar aún más en los siguientes aspectos:

  1. Aumentar los filtros adicionales para evitar aún más señales falsas, por ejemplo, combinar con indicadores de volumen, volatilidad, etc.

  2. Diferencias de parámetros de ensayo para adaptar más productos Ajustar parámetros para adaptar más variedades.

  3. Optimizar la media móvil de los parámetros de configuración.

  4. Investiga las medias móviles adaptativas, cambia diferentes conjuntos de parámetros basados en los regímenes del mercado.

Conclusión

En conclusión, esta estrategia es una versión optimizada típica de la media móvil y la estrategia de seguimiento de tendencias. Absorbe los puntos fuertes de los indicadores convencionales como MACD y RSI en aspectos de entrada de tiempo y detención de pérdidas.


/*backtest
start: 2022-12-29 00:00:00
end: 2024-01-04 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Improved RSI MACD Strategy with Moving Averages", overlay=true)

// Inputs
src = input(close, title="RSI Source")

// RSI Settings
lengthRSI = input.int(14, minval=1)

// Stop Loss Settings
stopLossPct = input.float(0.09, title="Stop Loss Percentage")
takeProfitPct = input.float(0.15, title="Take Profit Percentage")

// MACD Settings
fastlen = input(12)
slowlen = input(26)
siglen = input(9)

// Strategy Settings
longEntry = input(0, title="Long Entry Level")
exitLevel = input(0, title="Exit Level")

// EMA Settings
emaShortLength = input(8, title="Short EMA Length")
emaLongLength = input(21, title="Long EMA Length")

atrMultiplier = input.float(2, title="atrMultiplier")
atrLength = input.int(20, title="atrLength")

// Indicators
rsi1 = ta.rsi(src, lengthRSI)
[macd, signal, hist] = ta.macd(src, fastlen, slowlen, siglen)

// Calculate EMAs
emaShort = ta.ema(src, emaShortLength)
emaLong = ta.ema(src, emaLongLength)

// Calculate ATR
atr = ta.atr(atrLength)

// Variables
var bool canEnterLong = na

// Strategy conditions
longCondition = hist > longEntry and rsi1 > 50 and emaShort > emaLong and close > emaLong + atrMultiplier * atr

// Entries and Exits
if hist < exitLevel and emaShort < emaLong
    canEnterLong := true
    strategy.close("Long")
    
// Store last entry price
var lastEntryPrice = float(na)
var lastEntryPrice2 = float(na)
if longCondition
    strategy.entry("Long", strategy.long)
    canEnterLong := false
    lastEntryPrice := close
if lastEntryPrice < close
    lastEntryPrice := close
// Calculate Stop Loss and Take Profit Levels based on last entry price
stopLossLevel = lastEntryPrice * (1 - stopLossPct)

// Check for stop loss and take profit levels and close position if triggered
if (strategy.position_size > 0)
    last_buy = strategy.opentrades[0]
    if (close < stopLossLevel)
        strategy.close("Long", comment="Stop Loss Triggered")
    if (close * (1 - takeProfitPct) > strategy.opentrades.entry_price(strategy.opentrades - 1) )
        strategy.close("Long", comment="Take Profit Triggered")

Más.