La estrategia de negociación de promedios móviles dobles es una estrategia de negociación cuantitativa que construye señales comerciales utilizando dos líneas de promedio móviles con ciclos diferentes.
La técnica principal que utiliza esta estrategia es el análisis de dos líneas de promedio móvil. La estrategia define una línea de promedio móvil de ciclo corto de 5 días y una línea de promedio móvil de ciclo largo de 21 días. Al comparar los valores de diferencia osc0 entre el precio y ma0 y osc1 entre ma0 y ma1, la estrategia determina el estado de la tendencia actual.
Cuando osc0>0 y osc1>0, significa que la línea media móvil a corto plazo ha cruzado por encima de la línea a largo plazo, lo que indica una tendencia alcista. Cuando osc0<0 y osc1<0, significa que la línea a corto plazo ha cruzado por debajo, lo que indica una tendencia bajista. La estrategia toma posición larga cuando se identifica una tendencia alcista y toma posición corta cuando se identifica una tendencia bajista.
Después de tomar posiciones, la estrategia sigue monitoreando el cambio en tiempo real de osc0 y osc1 para juzgar el rango de ganancias de la posición. Cuando osc0<0 y osc1<0 después de tomar una posición larga, significa una inversión de tendencia, por lo que la posición larga debe cerrarse. Cuando osc0>0 y osc1>0 después de tomar una posición corta, también significa una inversión, por lo que la posición corta debe cerrarse.
La estrategia de negociación de media móvil doble tiene las siguientes ventajas:
Principio simple y fácil de entender e implementar, adecuado para principiantes en el comercio cuantitativo;
Seguimiento de tendencias, bueno en el seguimiento de tendencias de los mercados con un beneficio decente;
Los parámetros del ciclo de las medias móviles pueden ajustarse a las diferentes condiciones del mercado;
Puede combinarse con otros indicadores o estrategias para obtener mayores beneficios.
También hay algunos riesgos con esta estrategia:
No poder salir de las posiciones a tiempo cuando la tendencia se invierte, puede conducir a pérdidas enormes;
Dificultad para obtener ganancias en los mercados de rango limitado debido a la frecuencia del stop loss;
Difícil de optimizar parámetros como ciclos de 5 días y 21 días;
Las señales comerciales atrasadas, la entrada tardía en el mercado, pueden influir en la tasa de ganancia.
La estrategia de negociación de la media móvil doble puede optimizarse en los siguientes aspectos:
Combinar con VOL para confirmar el inicio de la tendencia real, evitar falsas rupturas;
Añadir otros filtros como la ruptura de precios, la expansión de volumen para garantizar la fiabilidad de la señal;
Establecer paradas dinámicas para reducir las pérdidas a tiempo;
Optimizar parámetros como el umbral de la diferencia de la media móvil para reducir los errores;
Utilice el aprendizaje automático para optimizar automáticamente los ciclos de las medias móviles.
En conclusión, la estrategia de negociación de media móvil dual es una estrategia bastante clásica y práctica de seguimiento de tendencias. Tiene una lógica simple para que los principiantes la practiquen, es bueno para rastrear tendencias, es muy extensible para combinarla con otras técnicas. Pero también tiene algunos defectos, se necesitan más optimizaciones para manejar condiciones excepcionales de mercado, reducir el riesgo y mejorar la estabilidad.
/*backtest start: 2023-12-01 00:00:00 end: 2023-12-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy("[STRATEGY][RS]MA Strategy test V0", overlay=true) length0 = input(5) length1 = input(21) isinsession = not na(time('1', '0400-1500')) price = open ma0 = ema(ema(price, length0), length0) ma1 = ema(ema(price, length1), length1) plot(ma0, color=navy) plot(ma1, color=black) osc0 = price-ma0 osc1 = ma0-ma1 isbull = osc0 > 0 and osc1 > 0 buy_condition = isinsession and isbull and not isbull[1] buy_exit_condition = osc0 < 0 and osc1 < 0 strategy.entry("buy", strategy.long, comment="buy", when=buy_condition) strategy.close(id='buy', when=buy_exit_condition) isbear = osc0 < 0 and osc1 < 0 sell_condition = isinsession and isbear and not isbear[1] sell_exit_condition = osc0 > 0 and osc1 > 0 strategy.entry("sell", strategy.short, comment="sell", when=sell_condition) strategy.close(id='sell', when=sell_exit_condition) //plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)