Stratégie de suivi des tendances avec 3 EMA, DMI et MACD

Auteur:ChaoZhang est là., Date: 2024-01-25 15:48:59 Je suis désolé
Les étiquettes:

img

Résumé

La logique de la stratégie

La logique de base repose sur trois EMA - 34, 89 et 200 - calculées sur le calendrier M5 pour identifier la tendance globale.

Les signaux d'achat sont déclenchés lorsque:

  • Prix de clôture dépasse 34 EMA
  • +DI (mouvement haussier dans la direction) > 17
  • L'exposition au risque est calculée sur la base de l'exposition au risque.

Les signaux de vente sont générés lorsque:

  • Prix de clôture inférieur à 34 EMA
  • -DI (mouvement directionnel baissier) > 17
  • ADX > +DI

Une confirmation supplémentaire provient de l'indicateur MACD avant les entrées.

Les avantages

Cette stratégie présente plusieurs avantages clés:

  1. Capture précoce de l'orientation de la tendance à l'aide d'un croisement EMA à court terme
  2. Utilise plusieurs EMA pour mesurer la force de la tendance sur différents délais
  3. Les filtres DMI aident à éviter les faux signaux en vérifiant les mouvements directionnels forts
  4. Le MACD fournit une confirmation de l'élan pour les configurations à plus grande probabilité
  5. La combinaison d'indicateurs améliore la précision et le calendrier des entrées

Les risques

Les principaux risques à prendre en considération:

  1. Les signaux d'avertissement et les faux signaux si l'on utilise uniquement le croisement EMA
  2. Décalage potentiel de la génération du signal suite à des confirmations multiples
  3. Vulnérables à des renversements soudains de tendance

Méthodes d'atténuation

  • Utiliser le stop-loss approprié, le dimensionnement des positions
  • Optimiser les longueurs EMA pour les conditions actuelles du marché
  • Regardez l'action du prix pour une confirmation visuelle

Des possibilités d'amélioration

D'autres améliorations de la stratégie:

  1. Ajouter des filtres supplémentaires tels que RSI pour les niveaux de surachat/survente
  2. Incorporer l'analyse du volume pour des signaux plus forts
  3. Tester et optimiser les indicateurs et les paramètres en fonction des actifs et des délais
  4. Utiliser l'apprentissage automatique pour apprendre continuellement à partir de nouvelles données de marché

Conclusion


/*backtest
start: 2023-01-18 00:00:00
end: 2024-01-24 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("2 EMA di+ Buy Sell, strategy ", overlay=true)

// Define the EMA calculation function
ema(src, length) =>
    ta.ema(src, length)

// Calculate and plot EMA on M5
ema34_M5 = ema(close, 34)
ema89_M5 = ema(close, 89)
ema200_M5 = ema(close, 200)

// Plot EMAs
plot(ema34_M5, color=color.green, title="EMA 34 M5", linewidth=2)
plot(ema89_M5, color=color.blue, title="EMA 89 M5", linewidth=2)
plot(ema200_M5, color=color.black, title="EMA 200 M5", linewidth=2)

// Define DMI parameters
len = input(14, 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)
plusDI = 100 * ta.rma(plusDM, len) / trur
minusDI = 100 * ta.rma(minusDM, len) / trur

// Calculate ADX
adxValue = 100 * ta.rma(math.abs(plusDI - minusDI) / (plusDI + minusDI == 0 ? 1 : plusDI + minusDI), len)

// Define MACD parameters
fastLength = input(12, title="Fast Length")
slowLength = input(26, title="Slow Length")
signalLength = input(9, title="Signal Length")

// Calculate MACD
[macdLine, signalLine, _] = ta.macd(close, fastLength, slowLength, signalLength)

// Create buy/sell conditions
buyCondition = close > ema34_M5 and plusDI > 17 and adxValue > minusDI 
sellCondition = close < ema34_M5 and minusDI > 17 and adxValue > plusDI 

// Strategy logic
strategy.entry("Buy", strategy.long, when = buyCondition)
strategy.entry("Sell", strategy.short, when = sellCondition)

// Create alerts for buy/sell signals
alertcondition(buyCondition, title="Buy Signal", message="Buy Signal")
alertcondition(sellCondition, title="Sell Signal", message="Sell Signal")

// Plot buy/sell arrows on the price chart
bgcolor(buyCondition ? color.new(color.green, 90) : sellCondition ? color.new(color.red, 90) : na)

plotarrow(buyCondition ? 1 : sellCondition ? -1 : na, colorup=color.new(color.green, 0), colordown=color.new(color.red, 0), offset=-1)


Plus de