Estrategia de cruce de la media móvil y el RSI

El autor:¿ Qué pasa?, fecha: 2024-02-01 11:48:51
Las etiquetas:

img

Esta estrategia integra una doble media móvil e indicador RSI para construir una estrategia de negociación cruzada entre posiciones largas y cortas.

Estrategia lógica

Esta estrategia adopta dos conjuntos de promedios móviles, que consisten en promedios móviles rápidos (EMA 59 y EMA 82) y promedios móviles lentos (EMA 96 y EMA 95).

Específicamente, cuando la EMA rápida se rompe por encima de la EMA lenta, se genera una señal larga. Si el RSI está por debajo de 30 (área de sobreventa) en este momento, vaya largo. Cuando la EMA rápida se rompe por debajo de la EMA lenta, se produce una señal corta. Si el RSI supera 70 (área de sobreventa) en este punto, vaya corto.

La ventaja de utilizar una media móvil dual es reconocer mejor los cambios en las tendencias a medio y largo plazo.

Ventajas

  • Captar las tendencias a medio y largo plazo con medias móviles dobles
  • Negociación de ruido de filtro con indicador RSI
  • Combinar el seguimiento de tendencias y la inversión media de inversión
  • Una lógica sencilla y clara

Análisis de riesgos

  • En los mercados en gran parte limitados al rango, las señales de media móvil pueden estar sujetas a cambios
  • El indicador RSI también falla en ciertas condiciones de mercado
  • La colocación de stop loss requiere prudencia para evitar que sea demasiado suelta o demasiado apretada

Áreas de mejora

  • Prueba de combinaciones de medias móviles de ciclo más largo
  • Pruebe diferentes ajustes de parámetros, por ejemplo, umbrales de áreas de sobrecompra/sobreventa del RSI
  • Añadir filtros adicionales como el volumen de operaciones
  • Optimizar las estrategias de stop loss, incorporar stop loss dinámico con ATR, etc.

Resumen de las actividades

Esta estrategia integra el seguimiento de tendencias de medias móviles duales y el comercio de reversión media del indicador RSI. Las EMA duales rastrean las direcciones de tendencia a medio y largo plazo, mientras que el RSI confirma la validez de las señales de negociación y la parada de pérdida. Esta es una estrategia de cruce simple y práctica entre largo y corto. Se puede adaptar a diferentes entornos de mercado a través de la puesta a punto y optimización de parámetros.


/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("Swing Hull/rsi/EMA Strategy", overlay=true,default_qty_type=strategy.cash,default_qty_value=10000,scale=true,initial_capital=10000,currency=currency.USD)

//A Swing trading strategy that use a combination of indicators, rsi for target, hull for overall direction enad ema for entering the martket.
// hull ma copied from syrowof HullMA who copied from mohamed982 :) thanks both
// Performance 

n=input(title="period",defval=500)

n2ma=2*wma(close,round(n/2))
nma=wma(close,n)
diff=n2ma-nma
sqn=round(sqrt(n))

n2ma1=2*wma(close[1],round(n/2))
nma1=wma(close[1],n)
diff1=n2ma1-nma1
sqn1=round(sqrt(n))

n1=wma(diff,sqn)
n2=wma(diff1,sqn)
c=n1>n2?green:red
ma=plot(n1,color=c)



// RSi and Moving averages

length = input( 14 )
overSold = input( 70)
overBought = input( 30)
point = 0.0001
dev= 2

fastLength = input(59)
fastLengthL = input(82)
slowLength = input(96)
slowLengthL = input(95)
price = close

mafast = ema(price, fastLength)
mafastL= ema(price, fastLengthL)
maslow = ema(price, slowLength)
maslowL = ema(price, slowLengthL)
vrsi = rsi(price, length)
cShort =  (crossunder(vrsi, overBought))

condDown = n2 >= n1
condUp = condDown != true
closeLong =  (crossover(vrsi, overSold))
closeShort = cShort 


// Strategy Logic
longCondition = n1> n2
shortCondition = longCondition != true

col =condUp ? lime : condDown ? red : yellow
plot(n1,color=col,linewidth=3)


if (not na(vrsi))
    if shortCondition    
        if (price[0] < maslow[0] and price[1] > mafast[1]) //cross entry
            strategy.entry("SYS-SHORT", strategy.short, comment="short")
strategy.close("SYS-SHORT", when=closeShort) //output logic

if (not na(vrsi))
    if longCondition // swing condition          
        if (price[0] < mafast[0] and price[1] > mafast[1]) //cross entry
            strategy.entry("SYS-LONG", strategy.long, comment="long")
strategy.close("SYS-LONG", when=closeLong) //output logic


// Stop Loss 


sl = input(75)
Stop = sl * 10
Q = 100


strategy.exit("Out Long", "SYS-LONG", qty_percent=Q, loss=Stop)
strategy.exit("Out Short", "SYS-SHORT", qty_percent=Q, loss=Stop)



//plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)

Más.