La estrategia de cruce de promedios móviles es una estrategia de negociación cuantitativa basada en promedios móviles simples (SMA).
Específicamente, esta estrategia calcula el SMA de 9 períodos y 45 períodos. Cuando el precio cruza por encima de ambas líneas SMA, se genera una señal de compra. Cuando el precio cruza por debajo de ambas líneas, se activa una señal de venta.
La lógica central de esta estrategia se basa en los principios de cruce dorado y cruce muerto de los promedios móviles. Los promedios móviles pueden filtrar eficazmente el ruido del mercado e indicar cambios de tendencia importantes. Cuando el MA a corto plazo cruza por encima del MA a largo plazo, indica una inversión de tendencia al alza. El cruce opuesto indica una tendencia a la baja.
En particular, esta estrategia utiliza los promedios móviles simples de 9 períodos y 45 períodos. La línea de 9 períodos representa tendencias a corto plazo, mientras que la línea de 45 períodos captura movimientos a largo plazo. Cuando el precio cruza por encima de ambas líneas SMA, indica que el precio está en canales ascendentes a corto y largo plazo, lo que desencadena una entrada larga. El cruce opuesto sugiere un debilitamiento del impulso alcista y solicita señales de salida.
Desde el punto de vista del código, la estrategia primero calcula los valores de SMA de 9 períodos y 45 períodos. Luego utiliza las funciones ta.crossover y ta.crossunder para detectar cruces doradas y cruces muertas entre las dos líneas MA. Cuando se activan las señales de compra y venta, las funciones de gráficos dibujan triángulos y triángulos invertidos en el gráfico de precios.
Además, se implementa la lógica de stop-loss para gestionar las salidas de operaciones. Específicamente, los precios altos y bajos de la barra anterior se extraen como el precio de stop-loss después de abrir nuevas operaciones. Esto permite que la estrategia bloquee las ganancias y evite grandes pérdidas.
La configuración de la media móvil dual captura los cambios de tendencia a medio y largo plazo mientras se filtran los ruidos a corto plazo, mejorando la calidad de la señal.
El mecanismo de stop-loss controla eficazmente los riesgos y bloquea las ganancias.
Lógica sencilla y fácil de implementar, adecuada para principiantes.
Alta utilización del capital para obtener ganancias compuestas.
Las estrategias de doble MA tienden a generar problemas y señales inválidas durante los mercados agitados.
Colocación de stop loss conservadora incapaz de rastrear las tendencias de manera efectiva.
La selección de parámetros no óptimos puede dar lugar a un exceso de operaciones o a una frecuencia de operaciones insuficiente.
Incapaz de adaptarse a grandes inversiones de tendencia.
Soluciones:
Optimizar los parámetros de MA para reducir las señales falsas
Implementar paradas dinámicas de tendencia
Añadir filtros con otros indicadores
Anulación manual en caso de reversión mayor
Otras mejoras de la estrategia:
Utilice MAs adaptativas o exponenciales para capturar mejor las tendencias.
Añadir un filtro de volatilidad para evitar señales falsas durante los mercados variados.
Realizar la optimización de parámetros para obtener las mejores combinaciones de parámetros.
Incorporar mecanismos de seguimiento de tendencias en la lógica de stop-loss.
Añadir análisis de soporte-resistencia para evitar señales alrededor de los niveles clave.
Aprovechar el aprendizaje automático para filtrar aún más la calidad de la señal.
El sistema de cruce de promedios móviles es un enfoque simple pero efectivo de seguimiento de tendencias. Al filtrar el ruido y rastrear las tendencias a medio plazo, genera señales de calidad. Con las pérdidas de parada adecuadas, permite el comercio de tendencias gestionadas por riesgo. La lógica simple también lo hace ideal para que los principiantes lo pongan en práctica.
/*backtest start: 2022-12-15 00:00:00 end: 2023-12-21 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("SMA Crossover Strategy", overlay=true) // Input parameters fast_length = input(9, title="Fast SMA Length") slow_length = input(45, title="Slow SMA Length") // Calculate moving averages fast_sma = ta.sma(close, fast_length) slow_sma = ta.sma(close, slow_length) // Buy condition buy_condition = ta.crossover(close, fast_sma) and ta.crossover(close, slow_sma) // Sell condition sell_condition = ta.crossunder(close, fast_sma) and ta.crossunder(close, slow_sma) // Calculate stop loss levels prev_low = request.security(syminfo.tickerid, "1D", low[1], lookahead=barmerge.lookahead_on) prev_high = request.security(syminfo.tickerid, "1D", high[1], lookahead=barmerge.lookahead_on) // Plot signals on the chart plotshape(buy_condition, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small) plotshape(sell_condition, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small) // Strategy exit conditions long_stop_loss = sell_condition ? prev_low : na short_stop_loss = buy_condition ? prev_high : na strategy.exit("Long Exit", from_entry="Long", when=sell_condition, stop=long_stop_loss) strategy.exit("Short Exit", from_entry="Short", when=buy_condition, stop=short_stop_loss) strategy.entry("Long", strategy.long, when=buy_condition) strategy.entry("Short", strategy.short, when=sell_condition)