La estrategia de media móvil dual es una estrategia de trading a corto plazo comúnmente utilizada. Juzga la dirección de la tendencia del mercado mediante el cálculo de medias móviles de diferentes períodos y lo utiliza para entrar en operaciones. Cuando el promedio móvil de corto período cruza por encima del promedio móvil de largo período, vaya largo. Cuando el promedio móvil de corto período cruza por debajo del promedio móvil de largo período, vaya corto.
La lógica central de esta estrategia es la siguiente:
Calcular dos promedios móviles de períodos diferentes, uno es el período largo MA, el otro es el período corto MA.
Juzga si el MA del período corto ha cruzado el MA del período largo. Cuando el MA corto cruza por encima del MA largo, indica una tendencia alcista en el mercado y podemos ir largo. Cuando el MA corto cruza por debajo del MA largo, indica una tendencia descendente y podemos ir corto.
Introduzca operaciones de acuerdo con la dirección de la tendencia. Específicamente, cuando el período corto de MA cruza por encima del período largo de MA, ir largo. Cuando el período corto de MA cruza por debajo del período largo de MA, ir corto.
Establezca un stop loss y obtenga ganancias basándose en las condiciones reales del mercado.
La estrategia utiliza la capacidad de juicio de tendencias de los MA para determinar la relación entre las tendencias a corto y largo plazo, con el fin de capturar los movimientos a corto plazo.
La estrategia de doble OMA tiene las siguientes ventajas:
La lógica es simple y fácil de entender e implementar.
Tiene criterios claros de entrada y salida.
Los períodos de autorización pueden ajustarse para adaptarse a los diferentes entornos de mercado.
Captura tanto la tendencia como la inversión media, lo que le permite beneficiarse de los movimientos a mediano plazo.
Hay una lógica de stop loss para controlar los riesgos.
También existen algunos riesgos con la estrategia de doble OMA:
El stop loss se puede activar con frecuencia durante los mercados de rango.
Las señales MA pueden ser demasiado frecuentes durante los mercados volátiles, lo que dificulta mantener posiciones.
Los propios MAs tienen retraso y pueden perder oportunidades de reversión a corto plazo.
Para que la estrategia funcione, es necesario optimizar los períodos de gestión.
Los cruces MA tienen un poco de retraso, causando entradas retrasadas.
Algunas maneras de mejorar esta estrategia:
Optimizar los períodos de admisión para diferentes condiciones de mercado mediante pruebas de retroceso.
Se pueden considerar otros indicadores como filtros para evitar cambios en los mercados de rango.
Añadir indicadores de fuerza de tendencia para evitar el comercio cuando no hay una tendencia clara.
Considere los indicadores de volumen para juzgar la dirección de la brecha.
Optimizar el stop loss cerca de los principales niveles de soporte/resistencia.
La estrategia de doble MA es una estrategia simple a corto plazo basada en cruces de MA para determinar la tendencia. Los pros son su simplicidad y facilidad de uso. Los contras son que puede ser cambiado por mercados variados y tiene retrasos. Podemos optimizarlo por sintonización de parámetros, añadiendo filtros, etc. para hacerlo más robusto para entornos de mercado complejos.
/*backtest start: 2022-10-26 00:00:00 end: 2023-11-01 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy("GetTrendStrategy timing", overlay=true) tim=input('370') ////////////////////////////////////////////////////////////////////// // Component Code Start testStartYear = input(2017, "Backtest Start Year") testStartMonth = input(10, "Backtest Start Month") testStartDay = input(25, "Backtest Start Day") testStartHour = input(7, "Backtest Start Hour") testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,testStartHour,0) testStopYear = input(2017, "Backtest Stop Year") testStopMonth = input(10, "Backtest Stop Month") testStopDay = input(30, "Backtest Stop Day") testStopHour = input(13, "Backtest stop Hour") testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,testStartHour,0) testPeriod() => true // Component Code Stop ////////////////////////////////////////////////////////////////////// out1 = request.security(syminfo.tickerid, tim, open) out2 = request.security(syminfo.tickerid, tim, close) plot(out1,color=red) plot(out2,color=green) longCondition = crossover(request.security(syminfo.tickerid, tim, close),request.security(syminfo.tickerid, tim, open)) if testPeriod() if (longCondition) strategy.entry("long", strategy.long) shortCondition = crossunder(request.security(syminfo.tickerid, tim, close),request.security(syminfo.tickerid, tim, open)) if testPeriod() if (shortCondition) strategy.entry("short", strategy.short)