La estrategia utiliza dos medias móviles ponderadas elásticas de diferentes períodos (EVWMA) para operar de forma cruzada para generar señales de compra y venta. Se generan señales de compra cuando la línea de corto período atraviesa la línea de largo período; se generan señales de venta cuando la línea de corto período atraviesa la línea de largo período.
La estrategia determina el cambio de tendencia calculando las líneas EVWMA de diferentes períodos y haciendo que se crucen.
En concreto, primero calcula dos líneas EVWMA:
La línea de corto período m1, el período de longitud 1, por defecto es de 5
La longitud de la línea periódica m2, la longitud periódica 2, por defecto es de 40
Luego, determina el cruce de m1 y m2 con las funciones crossover y crossunder:
Si m1 pasa por m2, genera una señal de compra y ejecuta la operación long
Si m1 pasa por debajo de m2, genera una señal de venta y ejecuta una operación corta
Cabe señalar que el EVWMA, a diferencia de las medias móviles normales, otorga un mayor peso a los datos más recientes para responder más rápidamente a los cambios en los precios. La fórmula de cálculo es la siguiente:
data = (nz(data[1]) * (nb_floating_shares - volume)/nb_floating_shares) + (volume_price/nb_floating_shares)
donde nz ((data[1]) indica el valor EVWMA del ciclo anterior, nb_floating_shares indica el volumen total de transacciones durante el ciclo, volume indica el volumen de transacciones del ciclo actual y volume_price indica el volumen de transacciones del ciclo actual. De esta manera, se logra el efecto de dar mayor peso a los datos más recientes.
La estrategia tiene las siguientes ventajas:
El uso de EVWMA permite una respuesta más rápida a los cambios en los precios y mejora las oportunidades de obtener ganancias
El uso de doble cruce de líneas EVWMA puede detectar puntos de cambio de tendencia y entrar en juego a tiempo
Funcionalidad sencilla y fácil de implementar
La duración del ciclo se puede personalizar para adaptarse a diferentes entornos del mercado
No necesita optimización de parámetros complejos, es fácil de disco duro
La estrategia también tiene sus riesgos:
La intersección de dos líneas no puede filtrar el ruido del mercado y puede generar una gran cantidad de señales no válidas
No se puede determinar el punto de reversión de la tendencia, existe el riesgo de perder la reversión
El mecanismo de suspensión sin pérdidas no permite un control efectivo de los riesgos
Optimización de parámetros insuficiente, el ajuste incorrecto del ciclo de línea puede perder su eficacia
La estrategia puede ser optimizada en los siguientes aspectos:
Aumentar las estrategias de detención de pérdidas y controlar los riesgos
Optimización de la longitud de ciclo de la línea para seleccionar los mejores parámetros
Añadir señales de filtro de volumen de transacciones para reducir las transacciones no válidas
En combinación con otros indicadores, el cambio de tendencia reduce las oportunidades perdidas
Parámetros de optimización dinámica, longitud de ciclo de la línea de ajuste según los cambios en el mercado
Distinguir entre el mercado de capitales y el mercado de capitales, utilizando diferentes parámetros
Algorithms de aprendizaje automático que usan entrenamiento de big data para determinar el momento de comprar y vender
En general, esta estrategia de cruzamiento de promedios móviles de peso elástico, mediante el cálculo y la operación de la cruzamiento de dos líneas EVWMA, puede detectar eficazmente los cambios de tendencia y generar señales de negociación. La estrategia es simple y fácil de manejar, pero existe algunos riesgos y direcciones de optimización.
/*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")