Estrategia de reversión de tendencia basada en el cruce entre EMA y SMA

El autor:¿ Qué pasa?, Fecha: 2024-01-04 17:59:04
Las etiquetas:

img

Resumen general

El objetivo de esta estrategia es identificar posibles puntos de inversión de tendencia observando el cruce entre la media móvil exponencial (EMA) de 20 períodos y la media móvil simple (SMA) de 20 períodos.

Estrategia lógica

  1. Cuando la EMA de 20 períodos se cruza por encima de la SMA de 20 períodos y el precio de cierre está por encima de la EMA de 20 períodos, vaya largo.
  2. Cuando la EMA de 20 períodos se cruce por debajo de la SMA de 20 períodos y el precio de cierre está por debajo de la EMA de 20 períodos, sea corto.
  3. Para las posiciones largas, cierre la operación cuando la EMA de 20 períodos se cruce por debajo de la SMA de 20 períodos.
  4. Para las posiciones cortas, cierre la operación cuando la EMA de 20 períodos cruce por encima de la SMA de 20 períodos.

La estrategia utiliza las funciones crossover y crossunder de la biblioteca ta para detectar los crossovers de la media móvil.

Análisis de ventajas

La estrategia combina la capacidad de seguimiento de tendencias de las medias móviles y la generación de señales de eventos cruzados, teniendo las siguientes ventajas:

  1. Las medias móviles pueden filtrar eficazmente parte del ruido del mercado e identificar tendencias a medio y largo plazo.
  2. Los crossovers son fáciles de operar y identifican claramente los cambios en el impulso del mercado.
  3. El parámetro de 20 períodos funciona bien para la mayoría de las acciones y los plazos sin necesidad de ajustes frecuentes.
  4. El uso del precio de cierre en relación con la EMA evita algunas señales falsas.
  5. Las reglas son simples y fáciles de entender, adecuadas para inversores menos sofisticados.

Análisis de riesgos

La estrategia también presenta los siguientes riesgos:

  1. Los promedios móviles tienen retraso y pueden perder inversiones bruscas de tendencia a corto plazo.
  2. Los cruces pueden generar señales ruidosas, afectando la estabilidad.
  3. El parámetro fijo de 20 períodos puede no funcionar bien para algunas acciones, lo que requiere ajustes.
  4. No hay un stop loss, lo que permite grandes operaciones perdedoras.

Soluciones:

  1. Acortar los períodos de media móvil para aumentar la capacidad de respuesta.
  2. Añadir filtros para evitar señales falsas.
  3. Prueba y optimización de parámetros y categorías de existencias.
  4. Incorporar el stop loss para controlar el riesgo.

Direcciones de optimización

La estrategia también puede mejorarse en los siguientes aspectos:

  1. Se añadirán otros indicadores para construir una estrategia compuesta, por ejemplo, volumen, RSI.
  2. Prueba y optimiza períodos y símbolos, establece parámetros adaptativos.
  3. Construye mecanismos de salida dinámicos como el stop loss, basado en el tiempo.
  4. Añadir capacidades de comercio algorítmico para la automatización.
  5. Incorporar aprendizaje automático para la optimización adaptativa.

Resumen de las actividades

La estrategia es relativamente simple y práctica en general, identificando puntos de reversión de tendencia potenciales a través de la teoría del cruce de promedios móviles.


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

//@version=5
strategy("EMA-SMA Crossover Strategy", overlay=true)

// Define the length of the moving averages
emaLength = 20
smaLength = 20

// Calculate moving averages
emaValue = ta.ema(close, emaLength)
smaValue = ta.sma(close, smaLength)

// Buy condition
buyCondition = ta.crossover(emaValue, smaValue) and close > emaValue

// Short sell condition
sellCondition = ta.crossunder(emaValue, smaValue) and close < emaValue

// Exit conditions for both Buy and Short sell
exitBuyCondition = ta.crossunder(emaValue, smaValue)
exitSellCondition = ta.crossover(emaValue, smaValue)

// Strategy logic
if (buyCondition)
    strategy.entry("Buy", strategy.long)

if (sellCondition)
    strategy.entry("Sell", strategy.short)

if (exitBuyCondition)
    strategy.close("Buy")

if (exitSellCondition)
    strategy.close("Sell")

// Plot the moving averages
plot(emaValue, color=color.blue, title="20 EMA")
plot(smaValue, color=color.red, title="20 SMA")


Más.