Stratégie de filtre de momentum EMA Supertrend multi-périodes

ATR EMA DEMA RSI supertrend VOLUME SL TP
Date de création: 2025-08-15 11:33:46 Dernière modification: 2025-08-15 11:33:46
Copier: 0 Nombre de clics: 286
2
Suivre
319
Abonnés

Stratégie de filtre de momentum EMA Supertrend multi-périodes Stratégie de filtre de momentum EMA Supertrend multi-périodes

Aperçu

La stratégie est un système de suivi de tendance avancé qui combine l’indicateur de tendance supérieure (Supertrend) avec un filtre à dynamique multiple, conçu pour capturer les tendances fortes. Son cœur est l’indicateur de tendance supérieure, ajusté dynamiquement à l’aide de l’ATR (Average de la portée réelle moyenne), associé à l’EMA (Average mobile de l’indice) et au DEMA (Average mobile de la double indice) comme outil de confirmation de tendance, tout en intégrant le RSI (Indicateur relativement faible) et le filtre de volume de transactions pour améliorer la fiabilité du signal d’entrée.

Principe de stratégie

Les principes centraux de cette stratégie reposent sur un mécanisme de confirmation de signaux à plusieurs niveaux, qui constitue un cadre complet pour la prise de décision en matière de transactions:

  1. Système de signalisation du noyau hypertrendique: Utilisez l’ATR pour calculer les bandes de tendance dynamiques, générant un signal d’achat lorsque le prix de clôture se déplace vers le bas et un signal de vente lorsqu’il se déplace vers le haut. Le cycle et le multiplicateur de l’ATR peuvent être ajustés pour s’adapter à la volatilité des différents environnements de marché.

  2. Filtre de confirmation de la puissanceExigez que le prix soit au-dessus de l’EMA à court terme (cycle 21 par défaut) et du DEMA à long terme (cycle 200 par défaut) afin de s’assurer que la direction des transactions est en accord avec les tendances majeures et d’éviter les transactions contraires.

  3. Vérification de la puissance du signal: Confirmation de la dynamique des prix par le RSI (exigence par défaut > 50), ainsi que du volume de transactions supérieur à son EMA (cycle par défaut de 20) Confirmation de la participation au marché, amélioration de la qualité du signal d’entrée.

  4. La réintégration intelligente: dans une tendance haussière confirmée, la stratégie sera de nouveau activée lorsque le prix reviendra à l’EMA après un redressement et que d’autres conditions seront remplies, afin de saisir efficacement l’occasion de la poursuite de la tendance.

  5. Système de gestion des risques

    • Le stop loss est de 1 ATR (par défaut) en dessous du prix d’entrée.
    • Le stop est placé 3 ATR au-dessus du prix d’entrée (optionnel)
    • Une fois que vous avez gagné plus d’un ATR, lancez un mécanisme de suivi des pertes et verrouillez une partie de vos bénéfices
  6. Préconfiguration des paramètres à périodes multiples

    • “Auto-1H/4H”: ATR cycle 10, multiplié par 3, adapté aux opérations à bascule à court terme
    • “Auto-1D”: ATR cycle 14, multiplié par 3, adapté au suivi des tendances du jour
    • “Auto-1W”: cycle ATR 20, multiplié par 4, adapté à la capture de tendances à long terme

Avantages stratégiques

Cette stratégie, analysée en profondeur, présente les avantages suivants:

  1. Une grande capacité d’adaptationL’indicateur hypertrend est basé sur l’ajustement dynamique de l’ATR et peut s’adapter automatiquement aux changements de volatilité du marché et rester efficace dans différents environnements de marché.

  2. Confirmation à plusieurs niveaux pour réduire les faux signauxLe risque de faux signaux a été considérablement réduit et la qualité des transactions a été améliorée grâce à la vérification multiple des EMA, DEMA, RSI et du volume des transactions.

  3. La réintégration de l’intelligence capture la continuitéLa logique de réentrée innovante permet de réentrer après un rebond dans une tendance haussière, en exploitant efficacement les fluctuations de la tendance et en améliorant l’efficacité de l’utilisation des fonds.

  4. Un système complet de gestion des risquesLe système intégré d’arrêt, de blocage et de suivi des pertes basé sur l’ATR limite les pertes de transactions individuelles, protège efficacement les bénéfices réalisés et réduit le risque de retrait.

  5. Préconfiguration simplifiée à cycles multiples: paramètres prédéfinis pour différents délais, permettant une stratégie facile à mettre en œuvre sur plusieurs cycles de négociation, adaptée aux préférences de temps des différents traders.

  6. L’aide visuelle à l’intuition claire: Le remplissage de couleurs permet de distinguer les tendances à la hausse et à la baisse, avec des marqueurs de signaux d’achat et de vente clairs, ce qui permet de voir l’état du marché et facilite les décisions de négociation.

  7. Vérifié par des tests de retour: affiche une probabilité de victoire d’environ 60% et un facteur de profit supérieur à 4 sur le cycle de la ligne solaire, particulièrement adapté à un environnement de marché marqué par une tendance.

Risque stratégique

Bien que cette stratégie soit conçue de manière globale, les risques potentiels sont les suivants:

  1. Le marché de la victoireLa solution consiste à suspendre la négociation lorsque la structure du marché est incertaine, ou à augmenter le multiplicateur ATR pour réduire la sensibilité du signal.

  2. Les conditions de filtrage peuvent manquer certaines opportunités: Les conditions de filtrage multiples améliorent la qualité du signal, mais peuvent également entraîner la perte de certaines opportunités de tendance initiale. Les traders peuvent envisager d’ajuster la rigueur des conditions de filtrage en fonction de leurs préférences personnelles en matière de risque.

  3. Paramètre SensibilitéLes réglages ATR cycliques et multiplicatifs ont un impact significatif sur les performances de la stratégie. Différentes conditions de marché peuvent nécessiter des paramètres différents. Il est recommandé d’optimiser les paramètres de certains marchés en effectuant des tests de retour.

  4. Les risques de retrait: Les analyses montrent que des retraits plus importants peuvent survenir lorsque la position est pleine (jusqu’à 100%+). Il faut appliquer une gestion de fonds stricte, le risque par transaction étant contrôlé entre 1 et 2% [2].

  5. Limitation des données historiquesLes stratégies sont principalement retestées dans des marchés et des périodes spécifiques, et il peut y avoir un risque de sur-adaptation. Des tests plus larges sur les marchés et les périodes devraient être effectués avant leur application sur le terrain.

  6. Absence de tests dans des conditions de marché extrêmes: La stratégie n’a peut-être pas été testée dans des situations extrêmes telles que de fortes fluctuations du marché ou des crises de liquidité, et sa performance dans de telles situations est inconnue.

Direction d’optimisation

Grâce à une analyse approfondie du code, la stratégie peut être optimisée dans les directions suivantes:

  1. Adaptation des paramètres: Développer des mécanismes d’ajustement des multiples et des cycles d’ATR en fonction de la dynamique de la volatilité du marché, permettant ainsi aux stratégies de s’adapter automatiquement aux changements d’état du marché. Par exemple, augmenter le multiple d’ATR lorsque la volatilité augmente et réduire le multiple d’ATR lorsque la volatilité diminue.

  2. Classification des états de marché intégrésIntroduction d’un module de reconnaissance de l’état du marché (tels que l’utilisation de la bande passante de Brin, ADX, etc.), afin d’ajuster automatiquement les paramètres de la stratégie ou de suspendre les transactions en fonction de la tendance ou de la volatilité du marché.

  3. Cadre d’analyse à cycles multiples: Ajout de fonctionnalités d’analyse multi-périodes, qui exigent que les tendances des périodes de temps plus élevées soient cohérentes avec les périodes actuelles pour exécuter des transactions, améliorant l’exactitude des jugements de tendances.

  4. Optimisation de la logique de réintégration: affiner les conditions de réadmission, en envisageant d’augmenter le niveau de rappel de Fibonacci ou la confirmation des supports critiques, améliorer la précision des points de réadmission.

  5. Optimisation de la gestion des fonds: la gestion dynamique des positions, l’ajustement automatique de la taille des positions en fonction de la volatilité du marché, de la valeur nette des comptes et des pertes consécutives, l’optimisation de la performance de la courbe de fonds.

  6. Ajout d’un indicateur de sentiment du marché: Intégrer des indicateurs de l’humeur du marché tels que l’indice VIX (indice de volatilité) ou le taux de variation du volume des transactions, afin d’ajuster les actions stratégiques en cas de panique ou d’optimisme excessif du marché.

  7. Optimisation du machine learning: Optimiser la sélection des paramètres et le timing d’entrée en bourse à l’aide d’algorithmes d’apprentissage automatique, et prédire la meilleure combinaison de paramètres de négociation à l’aide de modèles de formation de données historiques.

Résumer

La stratégie de filtrage dynamique EMA hypercyclique est un système de suivi de la tendance bien conçu, qui crée un cadre complet de décision de négociation en combinant des indicateurs hypercycliques et des filtres dynamiques multiples. Son avantage central réside dans la capacité d’adaptation, la confirmation à plusieurs niveaux pour réduire les faux signaux, la réentrée intelligente pour capturer les comportements persistants et un système de gestion du risque complet.

Cependant, cette stratégie peut être sous-performante dans un marché en crise et présente des risques de sensibilité aux paramètres et de retrait potentiel. Pour améliorer encore la robustesse de la stratégie, il peut être envisagé de développer des ajustements de paramètres adaptatifs, d’intégrer une classification de l’état du marché, de construire un cadre d’analyse multi-cycle, d’optimiser la logique de réentrée, d’améliorer la gestion des fonds, d’augmenter les indicateurs de l’humeur du marché et d’appliquer des techniques d’apprentissage automatique.

En fin de compte, la stratégie fournit un cadre de trading de suivi de tendances avec des indicateurs techniques rigoureux et une bonne gestion des risques, mais il faut toujours garder à l’esprit l’importance du contrôle des risques, limiter le risque de chaque transaction à une plage acceptable et ajuster les paramètres de la stratégie en fonction du style de trading individuel et de l’environnement du marché.

Code source de la stratégie
/*backtest
start: 2024-08-15 00:00:00
end: 2025-08-13 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/

//@version=5
strategy("Supertrend EMA Strategy _V29", overlay=true, format=format.price, precision=2, initial_capital=1000)
// Inputs
tf_preset = input.string("Manual", title="Timeframe Preset", options=["Manual", "Auto-1H/4H", "Auto-1D", "Auto-1W"])
atr_period = input.int(10, title="ATR Period")
src = hl2
atr_multiplier = input.float(3.0, title="ATR Multiplier", step=0.1)
change_atr = input.bool(true, title="Change ATR Calculation Method?")
show_signals = input.bool(true, title="Show Buy/Sell Signals?")
highlighting = input.bool(true, title="Highlighter On/Off?")
ema_length = input.int(21, title="EMA Length")
dema_length = input.int(200, title="DEMA Length")
tp_multiplier = input.float(3.0, title="Take Profit Multiplier (ATR, 0=off)", step=0.5)

allow_long = input.bool(true, title="Allow Long Trades")
allow_short = input.bool(false, title="Allow Short Trades")
sl_multiplier = input.float(1.0, title="Stop Loss Multiplier (ATR, 0=off)", step=0.5)
use_vol_filter = input.bool(true, title="Use Volume Filter?")
vol_ema_length = input.int(20, title="Volume EMA Length", minval=1)
use_rsi_filter = input.bool(true, title="Use RSI Filter?")
rsi_length = input.int(14, title="RSI Length")
rsi_threshold = input.int(50, title="RSI Buy Threshold")
// Auto-adjust
int atr_period_final = atr_period
float atr_mult_final = atr_multiplier
string preset_label = tf_preset
if tf_preset == "Auto-1H/4H"
    atr_period_final := 10
    atr_mult_final := 3.0
    preset_label := "1H/4H"
else if tf_preset == "Auto-1D"
    atr_period_final := 14
    atr_mult_final := 3.0
    preset_label := "Daily"
else if tf_preset == "Auto-1W"
    atr_period_final := 20
    atr_mult_final := 4.0
    preset_label := "Weekly"
// Show settings
if barstate.islast
    label.new(x=bar_index[barstate.isrealtime ? 0 : 50], y=high, text="Preset: " + preset_label + "\nATR: " + str.tostring(atr_period_final) + "\nMult: " + str.tostring(atr_mult_final), color=color.white, style=label.style_label_left, textcolor=color.black, size=size.small, yloc=yloc.abovebar)
// Calculations
atr2 = ta.sma(ta.tr, atr_period_final)
atr = change_atr ? ta.atr(atr_period_final) : atr2
up = src - (atr_mult_final * atr)
up1 = nz(up[1], up)
up := close[1] > up1 ? math.max(up, up1) : up
dn = src + (atr_mult_final * atr)
dn1 = nz(dn[1], dn)
dn := close[1] < dn1 ? math.min(dn, dn1) : dn
trend = 1
trend := nz(trend[1], trend)
trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend
buy_signal = trend == 1 and trend[1] == -1
sell_signal = trend == -1 and trend[1] == 1
ema = ta.ema(close, ema_length)
ema1 = ta.ema(close, dema_length)
dema = 2 * ema1 - ta.ema(ema1, dema_length)
vol_ema = ta.ema(volume, vol_ema_length)
rsi = ta.rsi(close, rsi_length)
// Plots (global)
up_plot = plot(trend == 1 ? up : na, title="Up Trend", style=plot.style_linebr, linewidth=2, color=color.green)
dn_plot = plot(trend == -1 ? dn : na, title="Down Trend", style=plot.style_linebr, linewidth=2, color=color.red)
plot(dema, title="DEMA 200", color=color.blue, style=plot.style_linebr, linewidth=2)
plotshape(buy_signal ? up : na, title="UpTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.green)
plotshape(buy_signal and show_signals ? up : na, title="Buy", text="Buy", location=location.absolute, style=shape.labelup, size=size.tiny, color=color.green, textcolor=color.white)
plotshape(sell_signal ? dn : na, title="DownTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.red)
plotshape(sell_signal and show_signals ? dn : na, title="Sell", text="Sell", location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.red, textcolor=color.white)
m_plot = plot(ohlc4, title="", style=plot.style_circles, linewidth=1)
long_fill_color = highlighting ? (trend == 1 ? color.new(color.green, 90) : color.white) : color.white
short_fill_color = highlighting ? (trend == -1 ? color.new(color.red, 90) : color.white) : color.white
fill(m_plot, up_plot, title="UpTrend Highlighter", color=long_fill_color)
fill(m_plot, dn_plot, title="DownTrend Highlighter", color=short_fill_color)
plot(ema, title="EMA", color=color.blue, linewidth=2)
// Strategy Logic with Re-Entry (in if for skip)

var float entry_price = na
vol_condition = not use_vol_filter or volume > vol_ema
rsi_condition = not use_rsi_filter or rsi > rsi_threshold
buy_cond_met = buy_signal and close > ema and close > dema and allow_long and vol_condition and rsi_condition
re_entry_cond = trend == 1 and strategy.position_size == 0 and close[1] < ema and close > ema and close > dema and vol_condition and rsi_condition
sell_cond_met = sell_signal and strategy.position_size > 0 and (close < dema or true)
if buy_cond_met or re_entry_cond
    strategy.entry("Long", strategy.long)
    entry_price := close
if sell_cond_met
    strategy.close("Long")
    entry_price := na
if sell_signal and close < ema and close < dema and allow_short and vol_condition
    strategy.entry("Short", strategy.short)
    entry_price := close
if buy_signal and strategy.position_size < 0
    strategy.close("Short")
    entry_price := na
// SL & TP with Trailing
if strategy.position_size != 0 and not na(entry_price)
    if sl_multiplier > 0
        sl_price = strategy.position_size > 0 ? entry_price - (sl_multiplier * atr) : entry_price + (sl_multiplier * atr)
        trail_condition = strategy.position_size > 0 ? (close - entry_price > atr) : (entry_price - close > atr)
        trail_sl = strategy.position_size > 0 ? up : dn
        final_sl = trail_condition ? trail_sl : sl_price
        strategy.exit("SL Exit", stop=final_sl)
    if tp_multiplier > 0
        tp_price = strategy.position_size > 0 ? entry_price + (tp_multiplier * atr) : entry_price - (tp_multiplier * atr)
        strategy.exit("TP Exit", limit=tp_price)
// Alerts
alertcondition(buy_signal, title="SuperTrend Buy", message="SuperTrend Buy!")
alertcondition(sell_signal, title="SuperTrend Sell", message="SuperTrend Sell!")
change_cond = trend != trend[1]
alertcondition(change_cond, title="SuperTrend Direction Change", message="SuperTrend has changed direction!")