La stratégie est basée sur l’indicateur de fluctuation dynamique (DMI) pour la négociation. Le DMI est utilisé pour juger de la tendance en calculant le pourcentage d’écart entre les prix et les moyennes de différentes longueurs.
La logique de l’opération est la suivante:
Calculer le pourcentage de déviation du prix par rapport à la moyenne à long terme (par exemple 200 jours) comme 1er DMI
Calculer le pourcentage d’écart entre le prix et la moyenne périodique (par exemple 50 jours) comme 2e DMI
Calculer le pourcentage d’écart entre le prix et la moyenne à court terme (par exemple 20 jours) comme 3e DMI
Baisse lorsque le 3e DMI est supérieur au 1er DMI; baisse lorsque le 3e DMI est inférieur au 2e DMI
Génération de signaux de transaction en fonction de la relation DMI
Le DMI détermine le point de basculement de la tendance du marché en comparant dynamiquement l’intensité relative des différentes périodes de la moyenne. L’optimisation des paramètres peut s’adapter aux différentes périodes.
Le DMI est plus complet en combinant plusieurs cycles de jugement.
Comparer les intensités relatives pour éviter les jugements numériques absolus
Paramètres cycliques flexibles pour s’adapter au marché
DMI est en retard et risque de rater un virage
Paramètres de périodes à régler avec précaution
Peut générer plusieurs signaux invalides
La stratégie DMI juge les virages en comparant les forces et les faiblesses de plus de cycles de moyenne ligne. Les paramètres peuvent être optimisés pour s’adapter aux différents environnements du marché.
/*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")