Estrategia SMA de reversión de la media de HYE

El autor:¿ Qué pasa?, Fecha: 2023-12-15 16:51:23
Las etiquetas:

img

Resumen general

La HYE Mean Reversion SMA Strategy es una estrategia de negociación de reversión media que utiliza promedios móviles simples y el índice de fuerza relativa (RSI). Genera señales de compra y venta cuando el precio se desvía del promedio móvil en un cierto porcentaje, combinado con el filtrado del indicador RSI. Es una estrategia comercial a corto plazo.

Estrategia lógica

La estrategia se basa principalmente en las siguientes normas:

  1. Cuando la media móvil simple de 2 períodos cae un 3% por debajo de la media móvil simple de 5 períodos, se considera que el precio se desvía de la media y se genera una señal de compra.

  2. Cuando la SMA de 2 períodos cruza la SMA de 5 períodos, se considera que el precio vuelve a la media y se genera una señal de venta.

  3. En combinación con el promedio móvil exponencial del RSI de 5 períodos, las señales de compra solo se generan cuando el RSI está por debajo de 30 y las señales de venta cuando el RSI está por encima de 70, para evitar operaciones innecesarias.

La idea principal es capturar las oportunidades de reversión media mediante el uso de fluctuaciones de precios a corto plazo. Compre cuando el precio cae en un cierto porcentaje, venda cuando el precio reverte cerca del promedio móvil, para obtener ganancias. Mientras tanto, el indicador RSI puede identificar condiciones de sobrecompra y sobreventa para filtrar algunas señales comerciales ruidosas.

Análisis de ventajas

La estrategia tiene las siguientes ventajas:

  1. Simple de implementar con bajos costes de seguimiento.

  2. Captura las oportunidades de reversión a corto plazo utilizando la desviación del precio de las medias móviles.

  3. El indicador RSI puede filtrar eficazmente el ruido del comercio y evitar perseguir picos y valles de muerte.

  4. Ajuste flexible de los parámetros, adaptable a los diferentes entornos del mercado.

  5. Apoya el comercio solo largo, solo corto o en ambas direcciones para satisfacer diferentes preferencias.

Análisis de riesgos

También hay algunos riesgos:

  1. La reversión media se basa en que el precio vuelva a la media móvil.

  2. La configuración incorrecta de los parámetros puede conducir a un exceso de negociación o a oportunidades perdidas.

  3. El rendimiento está muy correlacionado con el mercado, pero su desempeño es inferior en los mercados de rango y volátiles.

Contramedidas:

  1. Establezca el stop loss adecuado para controlar la pérdida de una sola operación.

  2. Optimizar gradualmente los parámetros y evaluar los rendimientos ajustados al riesgo.

  3. Combinar con el índice de acciones para mejorar la adaptabilidad.

Direcciones de optimización

La estrategia se puede optimizar en los siguientes aspectos:

  1. Prueba diferentes combinaciones de medias móviles para encontrar parámetros óptimos.

  2. Trate de incorporar otros indicadores para identificar tendencias y mejorar la tasa de ganancia.

  3. Añadir mecanismos de stop loss para reducir el extracto máximo.

  4. Optimizar las reglas de entrada y salida para mejorar los factores de ganancia.

  5. Adoptar técnicas de aprendizaje automático para construir parámetros adaptativos.

Conclusión

La HYE Mean Reversion SMA Strategy es una estrategia de reversión de media a corto plazo simple y práctica. Utiliza la desviación de precio de las medias móviles para generar señales de negociación, filtrando el ruido con el indicador RSI. Demostró buenos resultados en las pruebas de retroceso. La estrategia es fácil de implementar con parámetros ajustables adaptables a diferentes entornos de mercado.


/*backtest
start: 2022-12-08 00:00:00
end: 2023-12-14 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// @version=4

strategy("HYE Mean Reversion SMA [Strategy]", overlay = true )
  
//Strategy inputs
source = input(title = "Source", defval = close)
tradeDirection = input(title="Trade Direction", type=input.string,
     options=["Long Only", "Short Only", "Both"], defval="Long Only") 
smallMAPeriod = input(title = "Small Moving Average", defval = 2)
bigMAPeriod = input(title = "Big Moving Average", defval = 5)
percentBelowToBuy = input(title = "Percent below to buy %", defval = 3)
percentAboveToSell = input(title = "Percent above to sell %", defval = 3)
rsiPeriod = input(title = "Rsi Period", defval = 2)
rsiLevelforBuy = input(title = "Maximum Rsi Level for Buy", defval = 30)
rsiLevelforSell = input(title = "Minimum Rsi Level for Sell", defval = 70)
     
longOK  = (tradeDirection == "Long Only") or (tradeDirection == "Both")
shortOK = (tradeDirection == "Short Only") or (tradeDirection == "Both")

// Make input options that configure backtest date range
startDate = input(title="Start Date", type=input.integer,
     defval=1, minval=1, maxval=31)
startMonth = input(title="Start Month", type=input.integer,
     defval=1, minval=1, maxval=12)
startYear = input(title="Start Year", type=input.integer,
     defval=2020, minval=1800, maxval=2100)

endDate = input(title="End Date", type=input.integer,
     defval=31, minval=1, maxval=31)
endMonth = input(title="End Month", type=input.integer,
     defval=12, minval=1, maxval=12)
endYear = input(title="End Year", type=input.integer,
     defval=2021, minval=1800, maxval=2100)
     
inDateRange = true

//Strategy calculation 
rsiValue = rsi(source, rsiPeriod)
rsiEMA   = ema(rsiValue, 5)
smallMA = sma(source, smallMAPeriod)
bigMA =  sma(source, bigMAPeriod) 
buyMA = ((100 - percentBelowToBuy) / 100) * sma(source, bigMAPeriod)[0]
sellMA = ((100 + percentAboveToSell) / 100) * sma(source, bigMAPeriod)[0]

if(crossunder(smallMA, buyMA) and rsiEMA < rsiLevelforBuy and inDateRange and longOK)
    strategy.entry("BUY", strategy.long) 

if(crossover(smallMA, bigMA) or not inDateRange)
    strategy.close("BUY")

if(crossover(smallMA, sellMA) and rsiEMA > rsiLevelforSell and inDateRange and shortOK)
    strategy.entry("SELL", strategy.short)

if(crossunder(smallMA, bigMA) or not inDateRange)
    strategy.close("SELL")



Más.