Stratégie de prise de bénéfices à plusieurs niveaux EMA-ADX pour un suivi dynamique des tendances

EMA ADX ATR
Date de création: 2025-02-18 14:08:02 Dernière modification: 2025-02-18 14:08:02
Copier: 0 Nombre de clics: 405
1
Suivre
1617
Abonnés

Stratégie de prise de bénéfices à plusieurs niveaux EMA-ADX pour un suivi dynamique des tendances

Aperçu

La stratégie est un système de trading de suivi de tendance combinant les indicateurs EMA et ADX, optimisant la gestion des fonds grâce à des arrêts à plusieurs niveaux et des arrêts mobiles. La stratégie utilise la ligne de parité EMA pour déterminer la direction de la tendance, l’indicateur ADX pour filtrer la force de la tendance, et un mécanisme de blocage à trois niveaux est conçu pour répartir les bénéfices en lots, tout en utilisant l’ATR pour ajuster dynamiquement la position d’arrêt pour contrôler les risques.

Principe de stratégie

La logique fondamentale de la stratégie comprend les éléments clés suivants :

  1. La direction de la tendance est déterminée à l’aide de l’EMA moyenne à 50 cycles, lorsque le prix dépasse l’EMA en hausse et en baisse.
  2. Filtre les tendances faibles à l’aide de l’indicateur ADX à 14 périodes et confirme les tendances valides lorsque l’ADX est > 20
  3. Basé sur le calcul de l’ATR à 14 cycles pour la position d’arrêt dynamique, les billets plus longs sont déduits de 1 ATR au prix le plus bas et les billets vides sont ajoutés à 1 ATR au prix le plus élevé
  4. Le système de suspension est constitué de trois couches:
    • Première couche: 30% de positions à 1 fois l’ATR
    • Deuxième couche: 50% de positions à 2 fois l’ATR.
    • Troisième couche: 20% des positions utilisent un arrêt mobile de 3 fois ATR
  5. Lorsque le prix atteint la position de stop du deuxième niveau, il efface automatiquement toutes les positions restantes.

Avantages stratégiques

  1. La conception multicouche permet de verrouiller les bénéfices en temps opportun et de ne pas rater le gros lot
  2. Les mécanismes de stop-loss mobiles peuvent s’adapter aux fluctuations du marché et offrir un contrôle dynamique des risques.
  3. Le filtrage ADX est efficace pour éviter les fausses alertes de la bourse
  4. L’EMA et la croisée des prix fournissent un signal d’entrée clair
  5. Le blocage des lots réduit les fluctuations d’humeur et favorise la mise en œuvre à long terme de la stratégie

Risque stratégique

  1. Les entrées et sorties fréquentes peuvent entraîner une augmentation des coûts dans un marché en crise
  2. L’EMA en tant qu’indicateur de retard peut être en retard lors d’une inversion rapide
  3. Les seuils fixes de l’ADX peuvent nécessiter des ajustements dans différentes conditions de marché
  4. Les stop-loss à plusieurs niveaux pourraient être prématurés dans une tendance unilatérale Mesures d’atténuation :
  • Les seuils de l’ADX peuvent être ajustés en fonction de la dynamique des cycles de marché
  • Considérer une augmentation des indicateurs de confirmation de tendance
  • Optimisation plus fine des paramètres pour le rapport d’arrêt

Orientation de l’optimisation de la stratégie

  1. Introduction d’indicateurs de chiffre d’affaires pour renforcer la confirmation des tendances
  2. Adaptation des marges de l’ADX en fonction de la dynamique des fluctuations du marché
  3. Optimiser le ratio de répartition des positions au niveau de la réserve
  4. Augmentation de l’intensité de la tendance pour répondre aux différentes stratégies de freinage
  5. Considérer l’ajout de facteurs saisonniers et de jugements cycliques du marché

Résumer

Il s’agit d’une stratégie de suivi de tendance structurée et logiquement claire, qui équilibre les gains et les risques grâce à plusieurs niveaux de stop-loss et de stop-loss dynamiques. La stratégie est conçue globalement selon les principes fondamentaux de la négociation quantitative, avec une bonne extensibilité et un espace d’optimisation.

Code source de la stratégie
/*backtest
start: 2024-03-06 18:40:00
end: 2025-02-17 00:00:00
period: 4h
basePeriod: 4h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=6
strategy("BTC Optimized Strategy v6", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=250)

// === 參數設定 ===
lengthEMA = input(50, title="EMA 週期")
adxLength = input(14, title="ADX 週期")
atrLength = input(14, title="ATR 週期")
riskReward = input(2.0, title="風險報酬比")
tp1_ratio = input(1.0, title="TP1 (ATR 倍數)")
tp2_ratio = input(2.0, title="TP2 (ATR 倍數)")
trailATR = input(3.0, title="移動止盈 ATR 倍數")

// === 計算技術指標 ===
ema = ta.ema(close, lengthEMA)
atr = ta.atr(atrLength)

// === 計算 ADX ===
upMove = math.max(high - nz(high[1], high), 0)
downMove = math.max(nz(low[1], low) - low, 0)
tr = math.max(math.max(high - low, math.abs(high - nz(close[1], close))), math.abs(low - nz(close[1], close)))
plusDM = upMove > downMove and upMove > 0 ? upMove : 0
minusDM = downMove > upMove and downMove > 0 ? downMove : 0
plusDI = 100 * ta.rma(plusDM, adxLength) / ta.rma(tr, adxLength)
minusDI = 100 * ta.rma(minusDM, adxLength) / ta.rma(tr, adxLength)
dx = 100 * math.abs(plusDI - minusDI) / (plusDI + minusDI)
adx = ta.rma(dx, adxLength)

// === 趨勢過濾條件 ===
isTrending = adx > 20

// === 進場條件 ===
longCondition = ta.crossover(close, ema) and isTrending
shortCondition = ta.crossunder(close, ema) and isTrending

// === 計算止損、止盈價格 ===
longStopLoss = low - atr
shortStopLoss = high + atr
longTP1 = close + tp1_ratio * atr
longTP2 = close + tp2_ratio * atr
shortTP1 = close - tp1_ratio * atr
shortTP2 = close - tp2_ratio * atr

// === 設定進場和出場 ===
if longCondition
    strategy.entry("Long", strategy.long)
    strategy.exit("Long_Exit1", from_entry="Long", qty_percent=30, limit=longTP1, stop=longStopLoss)
    strategy.exit("Long_Exit2", from_entry="Long", qty_percent=50, limit=longTP2, stop=longStopLoss)
    strategy.exit("Long_Trail", from_entry="Long", qty_percent=20, 
                 trail_points=atr * trailATR, 
                 trail_offset=atr * trailATR)

if shortCondition
    strategy.entry("Short", strategy.short)
    strategy.exit("Short_Exit1", from_entry="Short", qty_percent=30, limit=shortTP1, stop=shortStopLoss)
    strategy.exit("Short_Exit2", from_entry="Short", qty_percent=50, limit=shortTP2, stop=shortStopLoss)
    strategy.exit("Short_Trail", from_entry="Short", qty_percent=20, 
                 trail_points=atr * trailATR, 
                 trail_offset=atr * trailATR)

// === 當價格超過 TP2 後,自動平倉 ===
if close >= longTP2
    strategy.close("Long")

if close <= shortTP2
    strategy.close("Short")

// === 畫圖標示 ===
plotshape(series=longCondition, location=location.belowbar, color=color.blue, style=shape.labelup, title="買入")
plotshape(series=shortCondition, location=location.abovebar, color=color.red, style=shape.labeldown, title="賣出")
plot(ema, color=color.orange, title="EMA")