Estrategia de índice de impulso dinámico

El autor:¿ Qué pasa?, Fecha: 14 de septiembre de 2023 16:15:42
Las etiquetas:

Estrategia lógica

Esta estrategia se opera basándose en el Índice de Momento Dinámico (DMI). DMI mide la desviación porcentual entre el precio y las medias móviles de diferentes longitudes para determinar la tendencia.

La lógica de negociación es:

  1. Calcular la desviación porcentual del precio respecto de un MA largo (por ejemplo, de 200 días) como 1er DMI

  2. Calcular la desviación de un MA medio (por ejemplo, 50 días) como 2a DMI

  3. Calcular la desviación de un MA corto (por ejemplo, 20 días) como 3er DMI

  4. Cuando el 3er DMI es mayor que el 1er DMI, bajista.

  5. Señales comerciales generadas sobre la base de la relación DMI

Al comparar la fuerza relativa dinámicamente a través de los períodos de MA, DMI tiene como objetivo identificar los puntos de inflexión de la tendencia.

Ventajas

  • El DMI combina el retroceso de varios períodos para la robustez

  • Compara la fuerza relativa con los niveles absolutos

  • Periodos de admisión flexibles para la adaptación del mercado

Los riesgos

  • DMI tiene retraso y puede perder inversiones

  • Optimización cuidadosa de los parámetros del período

  • Propenso a múltiples señales falsas

Resumen de las actividades

El DMI juzga los puntos de inflexión comparando la dinámica de la fuerza de los períodos multi-MA. La optimización puede adaptarse a diferentes entornos de mercado.


/*backtest
start: 2023-08-14 00:00:00
end: 2023-09-13 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 31/06/2018
// The related article is copyrighted materialfrom Stocks & Commodities Dec 2009
// My strategy modification.
//
// You can change long to short in the Input Settings
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
strategy(title="CMOaDisparity Index Backtest")
LengthFirst = input(200, minval=1)
LengthSecond = input(50, minval=1)
LengthThird = input(20, minval=1)
ShowFirst = input(type=bool, defval=true)
ShowSecond = input(type=bool, defval=true)
ShowThird = input(type=bool, defval=true)
reverse = input(false, title="Trade reverse")
xEMAFirst = ema(close,LengthFirst)
xEMASecond  = ema(close,LengthSecond)
xEMAThird  = ema(close,LengthThird)
xResFirst = 100 * (close - xEMAFirst) / close
xResSecond = 100 * (close - xEMASecond) / close
xResThird = 100 * (close - xEMAThird) / close
pos = iff(xResThird > xResFirst, -1,
       iff(xResThird < xResSecond, 1, nz(pos[1], 0))) 
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1, 1, pos))	   
if (possig == 1) 
    strategy.entry("Long", strategy.long)
if (possig == -1)
    strategy.entry("Short", strategy.short)	   	    
barcolor(possig == -1 ? red: possig == 1 ? green : blue ) 
plot(ShowFirst ? xResFirst : na, color=red, title="DIX 1")
plot(ShowSecond ? xResSecond : na, color=blue, title="DIX 2")
plot(ShowThird ? xResThird : na, color=green, title="DIX 3")

Más.