- Cuadrado
- Estrategia de reversión de tendencia basada en el cruce entre EMA y SMA
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:
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
- 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.
- 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.
- 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.
- 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:
- Las medias móviles pueden filtrar eficazmente parte del ruido del mercado e identificar tendencias a medio y largo plazo.
- Los crossovers son fáciles de operar y identifican claramente los cambios en el impulso del mercado.
- El parámetro de 20 períodos funciona bien para la mayoría de las acciones y los plazos sin necesidad de ajustes frecuentes.
- El uso del precio de cierre en relación con la EMA evita algunas señales falsas.
- 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:
- Los promedios móviles tienen retraso y pueden perder inversiones bruscas de tendencia a corto plazo.
- Los cruces pueden generar señales ruidosas, afectando la estabilidad.
- El parámetro fijo de 20 períodos puede no funcionar bien para algunas acciones, lo que requiere ajustes.
- No hay un stop loss, lo que permite grandes operaciones perdedoras.
Soluciones:
- Acortar los períodos de media móvil para aumentar la capacidad de respuesta.
- Añadir filtros para evitar señales falsas.
- Prueba y optimización de parámetros y categorías de existencias.
- Incorporar el stop loss para controlar el riesgo.
Direcciones de optimización
La estrategia también puede mejorarse en los siguientes aspectos:
- Se añadirán otros indicadores para construir una estrategia compuesta, por ejemplo, volumen, RSI.
- Prueba y optimiza períodos y símbolos, establece parámetros adaptativos.
- Construye mecanismos de salida dinámicos como el stop loss, basado en el tiempo.
- Añadir capacidades de comercio algorítmico para la automatización.
- 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.