Stratégie de suivi des tendances de volatilité dynamique basée sur l'indicateur DI combiné au système stop-profit et stop-loss ATR

DI DMI ATR SMA MA
Date de création: 2025-01-06 16:18:01 Dernière modification: 2025-01-06 16:18:01
Copier: 1 Nombre de clics: 383
1
Suivre
1617
Abonnés

Stratégie de suivi des tendances de volatilité dynamique basée sur l’indicateur DI combiné au système stop-profit et stop-loss ATR

Aperçu

Cette stratégie est un système de suivi de tendance qui combine l’indice de mouvement directionnel (DMI) et l’Average True Range (ATR). Le cœur de la stratégie consiste à identifier la direction et la force des tendances du marché grâce aux indicateurs DI+ et DI-, et à utiliser l’ATR pour ajuster dynamiquement les positions take-profit et stop-loss. En introduisant la moyenne mobile filtrée par tendance comme confirmation auxiliaire, la fiabilité des signaux de trading est encore améliorée. La conception de la stratégie prend pleinement en compte la volatilité du marché et présente une bonne adaptabilité.

Principe de stratégie

La stratégie repose sur les mécanismes fondamentaux suivants :

  1. Utilisez les indicateurs DI+ et DI- pour mesurer la direction et la force de la tendance. Lorsque DI+ est supérieur à DI- et que la différence dépasse le seuil, cela indique qu’une tendance à la hausse est établie ; sinon, une tendance à la baisse est confirmée.
  2. Présentez la moyenne mobile filtrée par tendance (SMA) comme outil de confirmation de tendance. Le signal ne sera déclenché que lorsque les positions de prix et de moyenne mobile se confirmeront mutuellement.
  3. Utilisez l’indicateur ATR pour calculer dynamiquement les positions stop loss et take profit afin de garantir que la gestion des risques puisse s’adapter à différents environnements de marché.
  4. Respectez strictement les délais lors de l’exécution des transactions et évitez de négocier trop fréquemment.

Avantages stratégiques

  1. Forte capacité d’ajustement dynamique – L’adaptation aux fluctuations du marché est obtenue grâce à l’ATR.
  2. Contrôle des risques amélioré - un mécanisme dynamique de stop-loss et de take-profit basé sur la volatilité est mis en place.
  3. Fiabilité élevée du signal - Réduisez les faux signaux grâce à la validation croisée de plusieurs indicateurs.
  4. Paramètres flexibles et ajustables - Les paramètres de stratégie peuvent être optimisés en fonction de différentes caractéristiques du marché.
  5. Logique d’exécution claire - conditions d’entrée et de sortie claires, facile à utiliser en temps réel.

Risque stratégique

  1. Risque de marchés volatils : des stops continus peuvent se produire dans un marché en fourchette. Suggestion : ajouter un filtre oscillateur ou ajuster le seuil des paramètres.

  2. Risque de dérapage – Vous pouvez être confronté à un dérapage important pendant les périodes de forte volatilité. Suggestion : Relâchez la position du stop loss de manière appropriée et laissez de la place au glissement.

  3. Risque de fausse cassure – mauvaise appréciation possible des points de retournement de tendance. Recommandation : combinez des indicateurs tels que le volume des transactions pour confirmer les signaux.

  4. Sensibilité des paramètres - différentes combinaisons de paramètres peuvent avoir des performances très différentes. Recommandation : trouver une plage de paramètres avec une forte stabilité grâce au backtesting.

Orientation de l’optimisation de la stratégie

  1. Optimisation du signal - L’indicateur ADX peut être introduit pour évaluer la force de la tendance, ou un mécanisme de confirmation du volume peut être ajouté.

  2. Gestion des positions - Ajustez dynamiquement la taille de la position en fonction de la force de la tendance pour obtenir un contrôle des risques plus sophistiqué.

  3. Période de temps - Une analyse sur plusieurs périodes de temps peut être envisagée pour améliorer la fiabilité du signal.

  4. Adaptabilité du marché – Des mécanismes d’ajustement adaptatif des paramètres peuvent être développés en fonction des caractéristiques de différentes variétés.

Résumer

Cette stratégie permet un suivi dynamique des tendances et un contrôle des risques en combinant des indicateurs de tendance et des indicateurs de volatilité. La conception de la stratégie met l’accent sur l’aspect pratique et l’opérabilité et présente une forte adaptabilité au marché. Il existe encore une marge d’amélioration de la stratégie grâce à l’optimisation des paramètres et à l’amélioration du signal. Il est conseillé aux investisseurs de procéder à des tests suffisants dans des applications réelles et de procéder à des ajustements ciblés en fonction des caractéristiques spécifiques du marché.

Code source de la stratégie
/*backtest
start: 2019-12-23 08:00:00
end: 2025-01-04 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("使用 DI+ 和 DI- 的策略 (最終完整修正且含圖表止損止盈線)", overlay=true)

// 輸入參數
diLength = input.int(title="DI 長度", defval=14)
adxSmoothing = input.int(title="ADX Smoothing", defval=14)
trendFilterLength = input.int(title="趨勢過濾均線長度", defval=20)
strengthThreshold = input.int(title="趨勢強度門檻值", defval=20)
atrLength = input.int(title="ATR 長度", defval=14)
atrMultiplierStop = input.float(title="ATR 停損倍數", defval=1.5)
atrMultiplierTakeProfit = input.float(title="ATR 止盈倍數", defval=2.5)

// 計算 DI+ 和 DI-
[diPlus, diMinus, _] = ta.dmi(diLength, adxSmoothing)

// 計算趨勢過濾均線
trendFilterMA = ta.sma(close, trendFilterLength)

// 判斷趨勢方向和強度
strongUpTrend = diPlus > diMinus + strengthThreshold and close > trendFilterMA
strongDownTrend = diMinus > diPlus + strengthThreshold and close < trendFilterMA

// 計算 ATR
atr = ta.atr(atrLength)

// 追蹤止損止盈價格 (使用 var 宣告,只在進場時更新)
var float longStopPrice = na
var float longTakeProfitPrice = na
var float shortStopPrice = na
var float shortTakeProfitPrice = na

// 進場邏輯
longCondition = strongUpTrend
shortCondition = strongDownTrend

if (longCondition)
    strategy.entry("多單", strategy.long)
    longStopPrice := close - atr * atrMultiplierStop // 進場時計算並更新止損價
    longTakeProfitPrice := close + atr * atrMultiplierTakeProfit // 進場時計算並更新止盈價

if (shortCondition)
    strategy.entry("空單", strategy.short)
    shortStopPrice := close + atr * atrMultiplierStop // 進場時計算並更新止損價
    shortTakeProfitPrice := close - atr * atrMultiplierTakeProfit // 進場時計算並更新止盈價


// 出場邏輯 (使用 time 限制和 ATR)
inLongPosition = strategy.position_size > 0
inShortPosition = strategy.position_size < 0

lastEntryTime = strategy.opentrades.entry_bar_index(strategy.opentrades - 1)

if (inLongPosition and time > lastEntryTime)
    strategy.exit("多單出場", "多單", stop=longStopPrice, limit=longTakeProfitPrice)

if (inShortPosition and time > lastEntryTime)
    strategy.exit("空單出場", "空單", stop=shortStopPrice, limit=shortTakeProfitPrice)

// 繪製 DI+、DI- 和趨勢過濾均線
plot(diPlus, color=color.green, title="DI+")
plot(diMinus, color=color.red, title="DI-")
plot(trendFilterMA, color=color.blue, title="趨勢過濾均線")

// 繪製止損止盈線 (使用 plot 函數繪製)
plot(strategy.position_size > 0 ? longStopPrice : na, color=color.red, style=plot.style_linebr, linewidth=2, title="多單停損")
plot(strategy.position_size > 0 ? longTakeProfitPrice : na, color=color.green, style=plot.style_linebr, linewidth=2, title="多單止盈")
plot(strategy.position_size < 0 ? shortStopPrice : na, color=color.red, style=plot.style_linebr, linewidth=2, title="空單停損")
plot(strategy.position_size < 0 ? shortTakeProfitPrice : na, color=color.green, style=plot.style_linebr, linewidth=2, title="空單止盈")