Stratégie de négociation des moyennes mobiles de DMI

Auteur:ChaoZhang est là., Date: 2023-09-13 14:42:19
Les étiquettes:

Récemment, j'ai développé une nouvelle stratégie quantitative de négociation basée principalement sur l'indicateur DMI pour identifier les bas et les sommets du marché.

La logique de la stratégie

L'indicateur DMI, abréviation de l'indice de mouvement directionnel moyen, a été créé par Welles Wilder dans les années 1970 pour mesurer la tendance et la force du marché.

  • +DI: représente la force de la tendance haussière
  • -DI: représente la force de la tendance à la baisse
  • ADX: représentant la force globale de la tendance

Lorsque +DI dépasse -DI, il indique un renforcement de la tendance haussière et une position longue peut être envisagée.

La logique de base de cette stratégie est la suivante:

  1. Passez long lorsque +DI tombe en dessous de 10 et que -DI dépasse 40
  2. Faire du short lorsque le -DI tombe en dessous de 10 et que le +DI dépasse 40

C'est-à-dire que lorsque l'indice inverse s'écarte sensiblement de l'indice à terme, on peut juger que la tendance actuelle est susceptible d'être inversée et une position de négociation inverse peut être prise de manière appropriée.

Pour filtrer le bruit, cette stratégie adopte la moyenne mobile de DI avec des paramètres définis comme suit:

  • Période de +DI et -DI est de 11
  • La période d'assouplissement de l'ADX est de 11

En ajustant les paramètres de la moyenne mobile, la fréquence des signaux de négociation peut être ajustée.

Cette stratégie est principalement appliquée à la négociation d'options sur l'indice NIFTY50. Elle peut également être utilisée sur d'autres produits. Spécifiquement pour la négociation, choisissez des options à l'argent, définissez un stop loss à 20%, ajoutez des positions si la perte dépasse 10%, mais arrêtez-vous si la perte dépasse 20% du capital initial.

Les avantages de la stratégie

Comparée aux stratégies croisées de DI simples, cette stratégie utilise des moyennes mobiles de DI pour filtrer le bruit et réduire les transactions, réduisant ainsi les coûts de transaction et les glissades.

Comparée aux stratégies de suivi de tendance pure, cette stratégie est plus précise pour détecter les points d'inversion de tendance, permettant des entrées en temps opportun autour des virages.

L'optimisation de la stratégie est simple avec des paramètres flexibles pour l'ajustement des performances.

Alertes au risque

Cette stratégie ne fournit que des signaux directifs. Des exigences spécifiques en matière de stop loss et de take profit devraient être fixées en fonction des préférences personnelles en matière de risque.

Le DMI peut produire de nombreux faux signaux pendant les périodes de plage.

Les croisements de DI ne peuvent pas prédire pleinement les renversements de tendance. Il pourrait y avoir des erreurs de synchronisation. D'autres indicateurs devraient être utilisés pour valider les signaux de trading.

Conclusion

Cette stratégie permet d'identifier efficacement les opportunités d'inversion de tendance en utilisant des moyennes mobiles de DI. Elle présente l'avantage d'une meilleure reconnaissance de l'inversion par rapport aux autres stratégies de suivi de tendance.


/*backtest
start: 2023-09-05 00:00:00
end: 2023-09-12 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © email_analysts
// This code gives indication on the chart to go long based on DMI and exit based on RSI. 
//Default value has been taken as 14 for DMI+ and 6 for RSI.
//@version=5
strategy(title="DMI Strategy", overlay=false)
lensig = input.int(11, title="ADX Smoothing", minval=1, maxval=50)
len = input.int(11, minval=1, title="DI Length")
up = ta.change(high)
down = -ta.change(low)
plusDM = na(up) ? na : (up > down and up > 0 ? up : 0)
minusDM = na(down) ? na : (down > up and down > 0 ? down : 0)
trur = ta.rma(ta.tr, len)
plus = fixnan(100 * ta.rma(plusDM, len) / trur)
minus = fixnan(100 * ta.rma(minusDM, len) / trur)
sum = plus + minus
adx = 100 * ta.rma(math.abs(plus - minus) / (sum == 0 ? 1 : sum), lensig)
//plot(adx, color=#F50057, title="ADX")
plot(plus, color=color.green, title="+DI")
plot(minus, color=color.red, title="-DI")
hlineup = hline(40, color=#787B86)
hlinelow = hline(10, color=#787B86)

buy = plus < 10 and minus > 40
if buy
    strategy.entry('long', strategy.long)

sell = plus > 40 and minus < 10
if sell
    strategy.entry('short', strategy.short)



Plus de