Estrategia de cruce dorado de media móvil RSI MACD


Fecha de creación: 2024-01-05 16:11:23 Última modificación: 2024-01-05 16:11:23
Copiar: 0 Número de Visitas: 649
1
Seguir
1617
Seguidores

Estrategia de cruce dorado de media móvil RSI MACD

Descripción general

La estrategia es una combinación de estrategias que utilizan el RSI, el MACD y las medias móviles. Al determinar el momento de la entrada en el mercado, combina la señal de sobreventa del RSI, la sensibilidad del MACD y el efecto indicador de las medias móviles.

Principio de estrategia

La estrategia se basa en los siguientes cuatro criterios para tomar una decisión sobre una adquisición:

  1. La columna del MACD es mayor que el parámetro de entrada múltiple establecido;
  2. El RSI es mayor que 50, lo que significa que estamos sobrecomprados.
  3. Los EMA a corto plazo se superan a los EMA a largo plazo para formar un cruce dorado.
  4. El precio de cierre lleva el EMA largo y es superior al EMA largo más el stop loss ATR.

La estrategia se detiene cuando se cumplen las siguientes dos condiciones de salida:

  1. La columna del MACD es menor que el parámetro de stop loss establecido;
  2. La EMA a corto plazo se encuentra por debajo de la EMA a largo plazo.

De esta manera, la estrategia se detiene en el momento de la retirada de ganancias, evitando grandes pérdidas.

Análisis de las ventajas

La mayor ventaja de esta estrategia reside en el uso combinado de indicadores que aprovechan las ventajas de cada uno de ellos, concretamente:

  1. La aplicación del RSI evita la pérdida de los gastos de transacción que conlleva abrir posiciones repetidas en situaciones de crisis.
  2. La sensibilidad del indicador en forma de columna del MACD asegura la captura de los puntos de inflexión en el tiempo.
  3. La media móvil filtra el ruido del mercado de la línea corta y ejerce su efecto indicador.

Riesgos y soluciones

La estrategia tiene dos riesgos principales:

  1. El mayor riesgo de las estrategias de tendencia, como las medias móviles, es el mayor riesgo de retracción provocado por la reversión del mercado. Se puede controlar activamente el retracción reduciendo el tamaño de la posición y la configuración de stop loss.

  2. La optimización de parámetros es muy difícil. La configuración y optimización de los parámetros de la estrategia de combinación de múltiples indicadores son muy difíciles. Se pueden usar métodos de optimización de parámetros como el método progresivo y el algoritmo genético para determinar los parámetros óptimos.

Optimización de las ideas

La estrategia puede seguir mejorando en los siguientes aspectos:

  1. Añadir condiciones adicionales para filtrar aún más las falsas señales, como la combinación de indicadores de volumen de transacción, indicadores de volatilidad, etc.

  2. Prueba la diferencia en la configuración de los parámetros de las diferentes variedades. Ajusta los parámetros para adaptarlos a más variedades.

  3. Optimice la configuración de los parámetros de las medias móviles. Pruebe las diferencias entre los parámetros de diferentes longitudes.

  4. El estudio utiliza una media móvil adaptada.

Resumir

En general, esta estrategia es una versión optimizada de una estrategia de seguimiento de tendencias y promedios móviles. Absorbe los beneficios de varios indicadores principales, como el MACD, el RSI, y es única en la determinación del tiempo de entrada al mercado y el stop loss.

Código Fuente de la Estrategia
/*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")