Esta estrategia utiliza el método de cruce de la media móvil doble de impulso para implementar la negociación de bajo riesgo. Utiliza dos promedios móviles de diferentes períodos, una línea rápida y una línea lenta, para determinar las señales de entrada y salida basadas en su cruce.
La estrategia genera señales comerciales basadas en el cruce de una línea WMA rápida y una línea WMA lenta. El período de la línea rápida es la mitad del período de la línea lenta. Una señal de compra se genera cuando la línea rápida cruza por encima de la línea lenta desde abajo. Una señal de venta se genera cuando la línea rápida cruza por debajo de la línea lenta desde arriba. Para filtrar las señales falsas, también incorpora un indicador de impulso basado en la diferencia entre dos promedios móviles. Una señal comercial solo se genera cuando el cruce de MA ocurre simultáneamente con el indicador de impulso que cumple con los requisitos de forma.
Específicamente, la lógica clave incluye:
Definir los datos de entrada y los parámetros de precios: obtener datos de precios OHLC; definir parámetros HullMA período z, datos de precios p.
Calcular las MAs duales: calcular las MAs n2ma de dos períodos, las MAs nma de período z.
Calcular la diferencia de MA: calcular la diferencia entre dos MA diferentes.
Calcular el indicador de momento: calcular la media móvil de la diferencia - n1, n2, n3 con el período sqn.
Determinar el cruce: marcar n1 sobre n2 en verde, en caso contrario en rojo.
Forma de la gráfica: gráfica n1 y n2.
Identificar señales: generar señales cuando n1, n2, n3 se alineen en la misma dirección.
Entrar y salir: ir largo cuando la línea rápida por encima de la línea lenta y el indicador de impulso coinciden; ir corto cuando la línea rápida por debajo de la línea lenta y el indicador de impulso coinciden.
La combinación de un doble cruce MA e indicador de impulso, esta estrategia puede filtrar eficazmente las señales falsas y generar operaciones solo al comienzo de los cambios de tendencia, produciendo así un buen rendimiento de la estrategia.
El cruce de MA detecta cambios en la tendencia, aprovechando las tendencias.
El indicador de impulso filtra señales falsas, evitando ser engañado por fluctuaciones a corto plazo.
Sólo el comercio en cambios de tendencia importantes reduce la frecuencia innecesaria de las operaciones.
La optimización de parámetros se ajusta a las características de diferentes productos.
Permitir cierto grado de pirámide alarga los ciclos de ganancias.
También hay algunos riesgos a tener en cuenta:
El cruce de doble MA tiene retraso en la detección de cambios de tendencia, potencialmente perdiendo el mejor momento.
La configuración incorrecta de los parámetros en el indicador de impulso puede generar señales incorrectas.
Existe un desequilibrio entre los períodos de retención largos y cortos.
La estrategia carece de mecanismos para manejar bien las condiciones inestables del mercado.
Existe el riesgo de una optimización excesiva que requiere una optimización gradual de los parámetros.
Algunas soluciones:
Considere la posibilidad de añadir otros indicadores principales para detectar los cambios de precios a tiempo.
Optimice los parámetros del indicador de impulso para encontrar las mejores combinaciones.
Indicador de volatilidad para el período de retención de control.
Limitar el tamaño de las posiciones para reducir las pérdidas individuales.
Prueba de la robustez de los parámetros para evitar la sobre-optimización.
La estrategia puede mejorarse en los siguientes aspectos:
Prueba diferentes tipos de AMP para encontrar los parámetros óptimos para cada producto.
Agregue otros indicadores como MACD, Bandas de Bollinger para determinar los cambios de tendencia.
Optimice el tiempo de entrada para determinar con precisión los puntos de inflexión.
Optimice las salidas usando paradas de trailing para bloquear las ganancias.
Realizar la optimización de parámetros de acuerdo con las características del producto.
Emplear el aprendizaje automático para encontrar combinaciones óptimas de parámetros.
Construir mecanismos dinámicos de dimensionamiento de la posición para controlar los riesgos.
Agregue métricas cuantitativas como la proporción de Sharpe, el factor de ganancia para la evaluación de la estrategia.
Evalúa el rendimiento de los datos históricos utilizando el motor de backtesting.
En resumen, esta estrategia de doble MA de impulso identifica los principales puntos de reversión de tendencia utilizando el cruce de MA y el impulso, lo que permite una negociación de bajo riesgo. Tiene ventajas como ganancias estables y una implementación simple, pero también problemas para mejorar como la optimización de parámetros y el control de riesgos. Podemos refinar áreas como el tiempo de entrada / salida, el tamaño dinámico de la posición para adaptarnos mejor a las condiciones del mercado. La validación y evaluación extensiva son fundamentales para garantizar un rendimiento robusto de la estrategia. En general, esta estrategia proporciona un enfoque simple pero efectivo para la negociación cuantitativa, pero requiere optimizaciones y validaciones continuas para generar retornos de inversión consistentes.
/*backtest start: 2022-11-10 00:00:00 end: 2023-11-16 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 //OCTOPUS Indicator Strategy strategy("FAVEL corp. Indicator Strategy", shorttitle="FAVEL corp. Monarch", overlay=true, default_qty_type=strategy.percent_of_equity, max_bars_back=420, default_qty_value=20, calc_on_order_fills= true, calc_on_every_tick=true, pyramiding=0) z=input(defval=60,title="HullMA cross") p=input(ohlc4,title="Price data") n2ma=2*wma(p,round(z/2)) nma=wma(p,z) diff=n2ma-nma sqn=round(sqrt(z)) n2ma1=2*wma(p[1],round(z/2)) nma1=wma(p[1],z) diff1=n2ma1-nma1 sqn1=round(sqrt(z)) n2ma2=2*wma(p[2],round(z/2)) nma2=wma(p[2],z) diff2=n2ma2-nma2 sqn2=round(sqrt(z)) n1=wma(diff,sqn) n2=wma(diff1,sqn) n3=wma(diff2,sqn) c=n1>n2?green:red n1e=plot(n1, color=c, linewidth=1, offset=2) n2e=plot(n2, color=c, linewidth=1, offset=2) fill(n1e, n2e, color=c, transp=75) plot(cross(n1, n2) ? n1 : na, style = circles,color=c, linewidth = 4) closelong = p<p[1] and n1<n3 if (closelong) strategy.close("BUY") closeshort = p>p[1] and n1>n3 if (closeshort) strategy.close("SELL") longCondition = strategy.opentrades<1 and n1>n2 and p>p[1] and n1>n3 if (longCondition) strategy.entry("BUY",strategy.long) shortCondition = strategy.opentrades<1 and n1<n2 and p<p[1] and n1<n3 if (shortCondition) strategy.entry("SELL",strategy.short)