Esta estrategia utiliza dos líneas EVWMA con períodos diferentes para generar cruces y producir señales de compra y venta. Cuando la línea de período corto cruza la línea de período largo, genera una señal de compra. Cuando la línea de período corto cruza debajo de la línea de período largo, genera una señal de venta.
La estrategia identifica los cambios de tendencia mediante el cálculo y el cruce de dos líneas EVWMA con períodos diferentes.
Específicamente, primero calcula dos líneas EVWMA:
Línea de período corto m1, con duración de período1, por defecto a 5
Línea de período largo m2, con duración de período2, por defecto a 40
Luego utiliza las funciones de cruce y de cruce para determinar las situaciones de cruce entre m1 y m2:
Si m1 cruza sobre m2, genera una señal de compra y ejecuta una operación larga
Si m1 cruza por debajo de m2, genera una señal de venta y ejecuta una operación corta
Tenga en cuenta que la EVWMA da más peso a los datos recientes en comparación con la media móvil simple.
data = (nz(data[1]) * (nb_floating_shares - volume)/nb_floating_shares) + (volume_price/nb_floating_shares)
Donde nz ((data[1]) es el valor EVWMA del período anterior, nb_floating_shares es el volumen total del período, el volumen es el volumen del período actual y el volumen_precio es la facturación del período actual. Esto logra el efecto de asignar pesos más altos a los datos recientes.
Las ventajas de esta estrategia incluyen:
EVWMA responde más rápidamente a los cambios de precios y mejora las oportunidades de ganancia
El cruce de dos líneas EVWMA identifica los puntos de inflexión oportunamente
Lógica sencilla y fácil de implementar
Duración del período personalizable para adaptarse a los diferentes entornos del mercado
No se necesita optimización de parámetros complejos y fácil para el comercio en vivo
También hay algunos riesgos con esta estrategia:
Los cruces pueden generar excesivas señales no válidas sin filtrar el ruido del mercado
Dificultad para identificar los puntos de reversión de tendencia y riesgos de falta de reversiones
No hay stop loss ni take profit, no es capaz de controlar eficazmente los riesgos
Optimización de parámetros insuficiente conduce a la configuración incorrecta del período
Algunas direcciones para mejorar la estrategia:
Añadir stop loss y take profit para controlar estrictamente los riesgos
Optimizar las longitudes de período para encontrar los mejores parámetros
Añadir filtro de volumen para reducir las operaciones no válidas
Combinar con indicadores de reversión para evitar reversiones perdidas
Optimización dinámica de los parámetros en función de los cambios del mercado
Diferenciar los mercados alcista y bajista y utilizar diferentes parámetros
Introducir modelos de aprendizaje automático para determinar el momento de negociación basado en grandes volúmenes de datos
En resumen, esta estrategia cruzada EVWMA puede identificar de manera efectiva los cambios de tendencia y generar señales comerciales mediante el cálculo y cruce de líneas EVWMA duales. La lógica es simple, pero hay riesgos y direcciones de mejora. Al optimizar el stop loss, la selección de parámetros, la integración de otros indicadores, etc., la estrategia se puede fortalecer para el comercio en vivo.
/*backtest start: 2023-08-18 00:00:00 end: 2023-08-26 00:00:00 period: 2h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy("Elastic Volume Weighted Moving Average Cross Strategy", shorttitle="EVWMA Cross", overlay=true) length1=input(5, title="EVWMA Short") length2=input(40, title="EVWMA Long") nbfs1=sum(volume, length1) nbfs2=sum(volume, length2) medianSrc=close calc_evwma(price, length, nb_floating_shares) => data = (nz(data[1]) * (nb_floating_shares - volume)/nb_floating_shares) + (volume*price/nb_floating_shares) data m1=calc_evwma(medianSrc, length1, nbfs1) m2=calc_evwma(medianSrc, length2, nbfs2) if (crossover(m1, m2)) strategy.entry("MA2CrossLE", strategy.long, comment="MA2CrossLE") if (crossunder(m1, m2)) strategy.entry("MA2CrossSE", strategy.short, comment="MA2CrossSE") p1=plot(m1,color=orange,linewidth=2, title="evwma") p2=plot(m2,color=orange,linewidth=2, title="evwma")