El cruce de la media móvil doble es una estrategia de scalping simple y efectiva que utiliza señales de cruce entre el precio y las medias móviles como señales de entrada y salida para capturar los movimientos de tendencia a corto plazo.
La estrategia emplea dos promedios móviles de diferentes períodos: una línea de MA a corto plazo y una línea de MA a largo plazo. Genera señales de compra cuando el MA de período más corto cruza por encima del MA de período más largo desde abajo. Las señales de venta se generan cuando el MA más corto cruza por debajo del MA más largo desde arriba.
La estrategia primero define la variable
Para filtrar algunas señales no válidas, se agregan filtros adicionales como
Por último, las posiciones existentes se cierran cuando el precio cruza las líneas MA a la inversa.
Los riesgos pueden mitigarse mediante el uso de períodos de MA dinámicos basados en la volatilidad, los trailing stops o los percentage stops, etc.
La estrategia puede mejorarse de varias maneras:
Optimizar dinámicamente los parámetros de MA en función de la volatilidad.
Añadir filtros adicionales como picos de volumen para mejorar la calidad de la señal.
Utilice paradas flotantes o en porcentaje para reducir las paradas prematuras.
Combinar con otros indicadores como MACD, RSI para la validación de múltiples condiciones.
Añadir la gestión automática de riesgos como el tamaño dinámico de la posición para controlar la pérdida por operación.
Utilice el aprendizaje automático para un modelo de generación de señales más preciso.
La estrategia de cruce de doble MA es un sistema efectivo para el comercio a corto plazo. Los parámetros de ajuste fino, la gestión de riesgos y la combinación con otras herramientas pueden mejorar aún más su rentabilidad. En general, es simple de entender e implementar para el scalping de movimientos intradiarios más pequeños.
/*backtest start: 2023-09-29 00:00:00 end: 2023-10-29 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("MovingAvg Cross", overlay=true) length = input(50) confirmBars = input(2) price = close ma = sma(price, length) bcond = price > ma bcount = 0 bcount := bcond ? nz(bcount[1]) + 1 : 0 clc=close[0]>close[1] clc0=close[0]>open[0] clc1=close[1]>open[1] if clc and clc0 and clc1 and (bcount == confirmBars) strategy.entry("buy", strategy.long) scond = price < ma scount = 0 scount := scond ? nz(scount[1]) + 1 : 0 csc=close[0]<close[1] csc0=close[0]<open[0] csc1=close[1]<open[1] if csc and csc0 and csc1 and (scount == confirmBars) strategy.entry("sell", strategy.short) strategy.close("buy", when=scond) strategy.close("sell",when=bcond) plot(ma, color=color.red) //plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_areabr)