Esta estrategia utiliza la media móvil exponencial doble (DEMA) para calcular la volatilidad de los precios y suaviza aún más la volatilidad para detectar tendencias en las fluctuaciones de precios, yendo largo cuando la volatilidad aumenta y corto cuando la volatilidad cae.
Calcular la media móvil exponencial doble (DEMA) del precio, fórmula: DEMA = 2*EMA (precio, N) - EMA (precio, N), N)
Calcular la volatilidad de los precios en relación con DEMA: Volatilidad = (precio - DEMA) / precio * 100%
Aplicar el suavizado DEMA en la volatilidad de nuevo para obtener la señal de tendencia de la volatilidad
Cuando la volatilidad suavizada cruza por encima de un nivel, vaya largo.
Se puede establecer para el comercio sólo durante un período de tiempo específico.
DEMA detecta los cambios de tendencia más rápido que los promedios móviles simples.
La volatilidad refleja el sentimiento del mercado, el aumento de la volatilidad representa el dominio de los toros, la caída representa los osos.
La suavización de la volatilidad filtra el ruido a corto plazo y capta la tendencia principal.
La negociación en períodos de tiempo específicos evita costos innecesarios de deslizamiento.
Las estrategias de stop loss y salida controlan el riesgo.
DEMA puede retrasarse durante las tendencias fuertes, perdiendo los mejores puntos de entrada.
El índice de volatilidad puede dar señales falsas, debe combinarse con otros indicadores.
Debería poner un stop loss para evitar pérdidas ampliadas.
Oportunidades perdidas fuera del período de negociación.
El período de tiempo de negociación necesita pruebas en datos históricos, un tiempo inadecuado puede reducir las ganancias.
Optimiza los parámetros de DEMA, usa valores N más pequeños.
Combine otros indicadores como RSI, MACD para confirmar.
Establecer un stop loss basado en datos históricos y pérdida máxima tolerable.
Optimizar la selección del período de tiempo de negociación.
Prueba los tiempos óptimos de negociación por separado para diferentes productos.
Prueba diferentes combinaciones de parámetros DEMA para obtener el mejor suavizado.
Prueba otras medias móviles como EMA, SMA.
La volatilidad se suavizará con otros parámetros.
Añadir otros indicadores para la verificación multifactorial.
Utilice el aprendizaje automático para optimizar automáticamente los parámetros de entrada y salida.
Los parámetros óptimos se ensayarán por separado para los diferentes productos.
Añadir estrategias de stop loss y salida para controlar el riesgo.
Esta estrategia captura los cambios de tendencia en el sentimiento del mercado mediante el cálculo de la volatilidad suavizada de DEMA, yendo largo cuando la volatilidad aumenta y corto cuando cae. Pero el retraso de DEMA y las señales falsas son riesgos. Los parámetros deben optimizarse, implementarse un estricto stop loss y otros indicadores combinados para la confirmación. Si se usa correctamente, esta estrategia puede detectar inversiones de tendencia y proporcionar buenos retornos de inversión.
/*backtest start: 2022-10-17 00:00:00 end: 2023-10-23 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version= 2 strategy("DEMA of DPD Strategy ",shorttitle="DPD% DEMA " ,overlay=false) buyper =input(-2) sellper=input(2) demalen = input(50,title="Dema Length") e1= ema(close,demalen) e2=ema(e1,demalen) demaprice = 2 * e1 - e2 price=close demadifper = ((price-demaprice)/price)*100 OverDemaPer = input(1, title="Band for OverBought") UnderDemaPer= input(-1,title="Band for OverSold") band1 = hline(OverDemaPer) band0 = hline(UnderDemaPer) zeroline=0 fill(band1, band0, color=green, transp=90) demalen2 = input(21,title="DEMA to Calculate dema of DPD") demaofdpd =ema(demadifper,demalen2) demaofdpd2 =ema(demaofdpd,demalen2) resultstrategy = 2*demaofdpd - demaofdpd2 plot(resultstrategy,color=blue) yearfrom = input(2018) yearuntil =input(2019) monthfrom =input(6) monthuntil =input(12) dayfrom=input(1) dayuntil=input(31) if ( crossover(resultstrategy,buyper) ) strategy.entry("BUY", strategy.long, stop=close, oca_name="TREND", comment="BUY") else strategy.cancel(id="BUY") if ( crossunder(resultstrategy,sellper) ) strategy.entry("SELL", strategy.short,stop=close, oca_name="TREND", comment="SELL") else strategy.cancel(id="SELL")