La estrategia se basa en el indicador de oscilación dinámica (DMI) para negociar. El DMI determina la tendencia calculando el porcentaje de desviación del precio con respecto a la media de diferentes longitudes.
La lógica de la transacción es la siguiente:
Calcula el porcentaje de desviación del precio con respecto a la media de largo período (por ejemplo, 200 días), como el 1er DMI
Calcula el porcentaje de desviación del precio respecto a la media periódica (por ejemplo, 50 días) como el segundo DMI
Calcula el porcentaje de desviación de los precios con respecto a la media de corto período (por ejemplo, 20 días) como 3 DMI
Cuando el 3er DMI es más bajo que el 1er DMI es bajista; cuando el 3er DMI es más bajo que el 2er DMI es bajista
Generación de señales de transacción según las relaciones DMI
El DMI determina el punto de inflexión de la tendencia del mercado comparando dinámicamente la intensidad relativa de los diferentes ciclos de la línea media. La optimización de los parámetros se puede adaptar a los diferentes ciclos.
DMI, combinado con un juicio de varios ciclos, es más amplio
Comparar la intensidad relativa y evitar el juicio numérico absoluto
Parámetros de ciclo flexibles para adaptarse al mercado
DMI tiene un poco de atraso y podría perder el turno
Necesidad de ajustar cuidadosamente los parámetros de ciclo
Puede generar señales no válidas varias veces
La estrategia de DMI juzga el giro a través de la relación de fuerza y debilidad de un mayor número de ciclos de línea media. Se puede optimizar el parámetro para adaptarse a diferentes entornos de mercado. Sin embargo, existe un retraso y se necesita la ayuda de otros indicadores para juzgar.
/*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")