Stratégie de suivi des tendances adaptatives ATR filtrée par des moyennes mobiles doubles

EMA ATR HEIKIN ASHI Trailing Stop TAKE PROFIT
Date de création: 2025-04-25 15:01:18 Dernière modification: 2025-04-25 15:01:18
Copier: 0 Nombre de clics: 403
2
Suivre
319
Abonnés

Stratégie de suivi des tendances adaptatives ATR filtrée par des moyennes mobiles doubles Stratégie de suivi des tendances adaptatives ATR filtrée par des moyennes mobiles doubles

Aperçu

La stratégie combine un système de filtrage double linéaire et un mécanisme de suivi automatique des arrêts de perte ATR pour suivre les tendances avec un taux de victoire élevé en aplatissant les fluctuations des prix grâce à la cartographie Heikin Ashi. Le cœur de la stratégie est d’utiliser les EMA rapides et les EMA lentes dorées comme filtres de direction de la tendance, tout en utilisant des arrêts de perte dynamiques basés sur ATR pour protéger les bénéfices.

Principe de stratégie

  1. Couche de génération de signal

    • Prix après conversion avec Heikin Ashi comme source de données de base (prix d’origine commutable)
    • Calculer le canal ATR: déterminer la largeur du canal dynamique en utilisant la longueur de l’ATR () 20 et le multiplicateur () 1.0
    • Mise en œuvre d’un stop-loss de suivi adaptatif: déclenchement d’un signal de revers lorsque le prix franchit un canal
  2. Filtrage des tendances

    • Utilisation du système double EMA ((10 cycles de ligne rapide/50 cycles de ligne lente)
    • Le surtraitement n’est autorisé que si la ligne rapide est supérieure à la ligne lente, et le vide, au contraire.
  3. Gestion des risques

    • Stop loss suivi dynamique: contrôle de la stop loss par des paramètres trail_step et trail_offset
    • Fixation de points d’arrêt: take_profit_points définit un objectif de profit absolu
  4. Logique d’exécution

    • Ouvrir une position lorsque le prix franchit le canal ATR et est conforme à la direction de l’EMA
    • Signaux de renversement ou toucher le plafond de stop loss / stop loss

Analyse des avantages

  1. Conception à taux de réussite élevéLe système de tri-filtrage ((Heikin Ashi Smooth + ATR Channel + EMA Cross) est efficace pour réduire les fausses signaux
  2. Adaptation au contrôle du ventATR: modifie dynamiquement la position de stop-loss, élargissant automatiquement l’espace de faille lorsque la volatilité du marché augmente
  3. La poursuite de la tendanceLe filtrage EMA assure que les transactions sont uniquement dans le sens des grandes tendances.
  4. Compatibilité avec plusieurs périodes: paramètres modifiables pour différentes variétés volatiles
  5. Aide visuelle: marquage intégré des signaux d’achat et de vente et affichage uniforme pour une vérification manuelle

Analyse des risques

  1. Risque d’inversion de tendanceLe passage de l’ATR pourrait entraîner des pertes excessives en cas d’une forte reprise
    • Optimisation: augmentation de la réserve maximale de rétractation
  2. Paramètres sur-adaptésLe taux de réussite de 90% peut être optimisé en fonction de données historiques spécifiques.
    • Solution d’optimisation: effectuer un test de marche-avant à cycles multiples
  3. Usure du disque horizontalLe réseau de téléphonie mobile de la ville de New York a été démantelé par les forces de l’ordre.
    • Solution d’optimisation: introduire un filtre ADX ou un seuil de volatilité
  4. Effets des points de glissement: les stop loss suivants peuvent être exécutés à des prix défavorables dans un mouvement rapide
    • Solution d’optimisation: définir une tolérance minimale de glissement

Direction d’optimisation

  1. Ajustement des paramètres dynamiques

    • Ajuste automatiquement le multiplicateur ATR en fonction de la volatilité du marché (comme l’indice VIX)
    • Principe d’implémentation: calcul du pourcentage de variation historique ou du décalage standard
  2. Système de filtration composite

    • Ajout d’une confirmation de pondération de transaction: demande une rupture accompagnée d’une augmentation de la transaction
    • Augmenter le filtrage temporel: éviter les délais de publication de données économiques cruciales
  3. Optimisation du machine learning

    • Adaptation de la combinaison de cycles EMA à l’aide d’une dynamique d’apprentissage par renforcement
    • Prévisions de points d’arrêt optimaux par LSTM
  4. Vérification multidimensionnelle

    • Introduction de la confirmation de tendance au niveau de la courbe
    • Ajout d’un décalage RSI comme signal de sortie auxiliaire

Résumer

La stratégie permet une capture de tendance à haute probabilité grâce à la triple architecture Heikin Ashi-ATR-EMA, un mécanisme d’arrêt de perte dynamique protège efficacement les bénéfices. Le principal avantage réside dans l’intégration organique des jugements de tendance (EMA), de l’adaptation au taux de volatilité (ATR) et du filtrage du bruit (Heikin Ashi).

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

//@version=5
strategy("UTBot + EMA Filter (HA + ATR Logic)", overlay = true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

// === INPUTS ===
bandwidth = input.float(8., 'Bandwidth')
atr_mult = input.float(1.0, 'ATR Multiplier')
atr_len = input.int(20, 'ATR Length')
ema_fast_len = input.int(10, 'EMA Fast Length')
ema_slow_len = input.int(50, 'EMA Slow Length')
use_heikin = input.bool(true, title='Use Heikin Ashi Candle')
trail_step = input.float(10.0, title='Trailing Step (Points)', minval=0.1)
trail_offset = input.float(10.0, title='Trailing Offset (Points)', minval=0.1)
take_profit_points = input.float(100.0, title='Take Profit (Points)', minval=0.1)

// === SOURCE ===
sr = use_heikin ? request.security(ticker.heikinashi(syminfo.tickerid), timeframe.period, close) : close

// === ATR Trailing Stop ===
atr = ta.atr(atr_len)
nLoss = atr_mult * atr

var float trail = na
iff_1 = sr > nz(trail[1]) ? sr - nLoss : sr + nLoss
iff_2 = sr < nz(trail[1]) and sr[1] < nz(trail[1]) ? math.min(nz(trail[1]), sr + nLoss) : iff_1
trail := sr > nz(trail[1]) and sr[1] > nz(trail[1]) ? math.max(nz(trail[1]), sr - nLoss) : iff_2

// === EMA FILTER ===
ema_fast = ta.ema(sr, ema_fast_len)
ema_slow = ta.ema(sr, ema_slow_len)

// === ENTRY & EXIT CONDITIONS ===
buy = sr[1] < trail[1] and sr > trail and ema_fast > ema_slow
sell = sr[1] > trail[1] and sr < trail and ema_fast < ema_slow

// === EXIT on opposite signal ===
exit_buy = sell
exit_sell = buy

// === STRATEGY EXECUTION ===
if buy
    strategy.entry("Buy", strategy.long)
if sell
    strategy.entry("Sell", strategy.short)

if exit_buy and strategy.position_size > 0
    strategy.close("Buy")
if exit_sell and strategy.position_size < 0
    strategy.close("Sell")

// === TRAILING STOP + TAKE PROFIT ===
// Long
if strategy.position_size > 0
    strategy.exit("Exit Long", from_entry="Buy", trail_points=trail_step, trail_offset=trail_offset, limit=sr + take_profit_points)

// Short
if strategy.position_size < 0
    strategy.exit("Exit Short", from_entry="Sell", trail_points=trail_step, trail_offset=trail_offset, limit=sr - take_profit_points)

// === PLOTS ===
plotshape(buy, title='Buy Signal', text='Buy', location=location.belowbar, color=color.green, style=shape.labelup, textcolor=color.white, size=size.tiny)
plotshape(sell, title='Sell Signal', text='Sell', location=location.abovebar, color=color.red, style=shape.labeldown, textcolor=color.white, size=size.tiny)

plot(ema_fast, color=color.teal, title='EMA Fast')
plot(ema_slow, color=color.purple, title='EMA Slow')

// === ALERTS ===
alertcondition(buy, title='UTBot Buy', message='UTBot Buy Signal')
alertcondition(sell, title='UTBot Sell', message='UTBot Sell Signal')