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:
Calcular la desviación porcentual del precio respecto de un MA largo (por ejemplo, de 200 días) como 1er DMI
Calcular la desviación de un MA medio (por ejemplo, 50 días) como 2a DMI
Calcular la desviación de un MA corto (por ejemplo, 20 días) como 3er DMI
Cuando el 3er DMI es mayor que el 1er DMI, bajista.
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.
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
DMI tiene retraso y puede perder inversiones
Optimización cuidadosa de los parámetros del período
Propenso a múltiples señales falsas
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")