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.
La estrategia evalúa principalmente las cuatro condiciones siguientes para decidir la entrada a largo plazo:
Cuando se cumplan las dos condiciones de salida siguientes, la estrategia cerrará las posiciones para detener la pérdida:
Por lo tanto, la estrategia detiene las pérdidas oportunamente y evita grandes pérdidas cuando se obtiene ganancia o se retracera.
La mayor ventaja de esta estrategia radica en la combinación de indicadores, dando pleno uso a los méritos de cada indicador:
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.
La sensibilidad del indicador del histograma MACD garantiza la captura oportuna de los puntos de inflexión.
Las medias móviles filtran el ruido del mercado a corto plazo y dan pleno juego al efecto del indicador.
Los principales riesgos de esta estrategia incluyen:
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.
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.
La estrategia se puede optimizar aún más en los siguientes aspectos:
Aumentar los filtros adicionales para evitar aún más señales falsas, por ejemplo, combinar con indicadores de volumen, volatilidad, etc.
Diferencias de parámetros de ensayo para adaptar más productos Ajustar parámetros para adaptar más variedades.
Optimizar la media móvil de los parámetros de configuración.
Investiga las medias móviles adaptativas, cambia diferentes conjuntos de parámetros basados en los regímenes del mercado.
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")