A estratégia baseia-se em um indicador de oscilação dinâmica (DMI) para negociar. O DMI é usado para avaliar a tendência, calculando o percentual de desvio do preço em relação às médias de diferentes comprimentos.
A lógica da transação é a seguinte:
Calcule o percentual de desvio entre o preço e a média de longo período (por exemplo, 200 dias), como o 1o DMI
Calcula o percentual de desvio do preço em relação à média periódica (como 50 dias), como o 2o DMI
Calcula o percentual de desvio do preço em relação à média de curto período (como 20 dias), como o 3o DMI
Baixo quando o 3o DMI é superior ao 1o DMI; positivo quando o 3o DMI é inferior ao 2o DMI
Geração de sinais de transação com base na relação DMI
O DMI julga o ponto de viragem da tendência do mercado comparando dinamicamente a intensidade relativa de diferentes ciclos de linha média. A otimização dos parâmetros pode ser adaptada a diferentes ciclos.
DMI combinado com julgamento de múltiplos ciclos, mais abrangente
Comparar a intensidade relativa, evitando julgamentos numéricos absolutos
Parâmetros de ciclo flexíveis para o mercado
DMI tem um atraso e pode ter perdido o turno
Parâmetros de ciclo precisam ser cuidadosamente definidos
Pode produzir vários sinais de invalidez
A estratégia de DMI julga a reversão por meio de relações de força e fraqueza de mais ciclos de linha média. Os parâmetros podem ser otimizados para se adaptar a diferentes condições de mercado. Mas há atraso e outros indicadores devem auxiliar o julgamento.
/*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")