
Cette stratégie est un système de négociation synchrone multi-indicateurs basé sur des graphiques de jour, qui combine habilement le comportement des prix, le système de moyennes périodiques multiples, l’indicateur de force relative (RSI), l’indice de tendance moyenne (ADX) et le filtre de volume de transaction, afin de trouver des points d’entrée de retournement à haute probabilité dans un environnement de tendance forte. Cette stratégie est spécialement conçue pour les transactions de tendance au niveau du jour.
La logique centrale de la stratégie est basée sur un système de filtrage conditionnel à plusieurs niveaux, dont les principes de fonctionnement sont les suivants:
Système de reconnaissance de tendance: la stratégie exige d’abord que le prix soit au-dessus de la moyenne tendancielle à long terme (EMA à 100 jours) et que la moyenne tendancielle à moyen terme (EMA à 50 jours) soit également au-dessus de la moyenne à long terme pour confirmer une forte tendance à la hausse. Pour les opérations de forex, les conditions opposées sont requises.
Mécanisme de rappel: après la confirmation d’une tendance, la stratégie cherche un redressement vers la moyenne rapide ((EMA du 10e jour) et attend que le prix rebondisse au-dessous de cette moyenne pour former un signal d’entrée clair.
Le RSI confirme sa dynamique: L’entrée nécessite un RSI supérieur à la barre définie (par défaut 55), pour s’assurer que le marché maintient suffisamment d’effet de levier. La négociation de couverture nécessite un RSI inférieur à la barre définie (par défaut 45).
Filtrage de l’intensité de l’ADXLa stratégie utilise l’indicateur ADX calculé sur mesure, permettant de négocier uniquement lorsque l’ADX est supérieur à la barre spécifiée (la valeur par défaut de 20), ce qui permet de filtrer efficacement les tendances faibles ou les marchés de couverture.
Confirmation de la livraisonAfin d’améliorer encore la qualité des transactions, la stratégie exige que le volume des transactions à l’entrée soit supérieur à la moyenne des transactions sur 20 jours, assurant une participation suffisante du marché pour soutenir la tendance des prix.
Système de gestion des risquesLa stratégie utilise des paramètres d’arrêt et d’arrêt dynamiques basés sur l’ATR et prend en charge les arrêts mobiles pour un contrôle de risque précis. Le paramètre d’arrêt par défaut est de 1,5 fois l’ATR, l’arrêt est de 3 fois l’ATR et le stop mobile est de 1 fois l’ATR.
Une analyse approfondie du code de la stratégie nous permet de conclure sur les avantages évidents suivants:
Système de filtration à plusieurs niveauxEn combinant plusieurs conditions de filtrage de la moyenne, du RSI, de l’ADX et du volume de transactions, la stratégie améliore considérablement la qualité du signal de négociation et réduit la production de faux signaux.
Tendances et dynamique en synergieLa stratégie ne se concentre pas uniquement sur la tendance des prix, mais confirme également la dynamique du marché et la force de la tendance via le RSI et l’ADX, ce qui permet un double mécanisme de confirmation “tendance-dynamique”.
Personnalisation flexible des paramètres: La stratégie offre de nombreuses options de paramètres, y compris les cycles de moyenne, les valeurs minimales du RSI, les valeurs minimales de l’ADX, les multiplicateurs de volume de transaction, etc., que l’utilisateur peut ajuster de manière flexible en fonction des différentes conditions du marché.
Une bonne gestion des risquesLe système de stop et stop dynamique basé sur ATR, associé à des mécanismes de stop mobiles optionnels, fournit un cadre de contrôle scientifique des risques pour la stratégie, contrôlant efficacement le seuil de risque de chaque transaction.
Adaptabilité à l’environnement du marchéLe filtrage ADX permet à la stratégie d’identifier automatiquement et d’éviter les marchés en crise et de ne négocier que dans des tendances bien définies, ce qui améliore considérablement la capacité de la stratégie à s’adapter à différents environnements de marché.
Malgré la bonne conception de cette stratégie, les risques et les défis potentiels sont les suivants:
Paramètre Sensibilité: la stratégie dépend de plusieurs paramètres de l’indicateur, différentes combinaisons de paramètres peuvent entraîner des différences significatives de performance, et une optimisation excessive peut entraîner une baisse future de la performance. La solution consiste à effectuer des tests de robustesse de paramètres étendus pour éviter une suradaptation des données historiques.
Le risque d’un renversement: Dans le cas d’un revirement soudain d’une tendance vigoureuse, la stratégie risque de subir de lourdes pertes, même avec plusieurs conditions de filtrage. Il est recommandé de confirmer la tendance avec une période plus longue ou d’augmenter le mécanisme d’alerte au revirement de tendance.
Rareur du signal: En raison de l’utilisation de plusieurs conditions de filtrage strictes, la stratégie peut ne pas produire de signaux de transaction pendant une période prolongée, ce qui entraîne un faible taux d’utilisation des fonds. L’assouplissement approprié de certains paramètres conditionnels peut être envisagé, tout en conservant la logique de base.
Risque de rupture: Dans les cas de forte volatilité ou de manque de liquidité du marché, les arrêts fixes basés sur l’ATR peuvent ne pas être exécutés comme prévu. Il est recommandé d’envisager d’ajouter un filtrage des conditions de temps ou un mécanisme de surveillance de la volatilité du marché.
Différence entre la détection et le disque dur: La performance de la stratégie dans le retest peut différer de celle du marché réel, en particulier en tenant compte de facteurs tels que les points de glissement et les coûts de transaction. Il est recommandé de tester les transactions sur papier avant le marché réel et de les vérifier initialement avec un plus petit montant de fonds.
Sur la base d’une analyse approfondie du code stratégique, voici quelques pistes d’optimisation possibles:
Confirmation de plusieurs périodes: l’introduction d’une confirmation de tendance à des périodes de temps plus élevées (comme les périodes de la lune ou de la lune) qui permet la négociation uniquement lorsque plusieurs périodes de temps sont en phase, ce qui améliore la fiabilité des jugements de tendance.
Paramètres d’adaptation au taux de fluctuation: associer les paramètres clés tels que la distance de stop loss, la longueur de stop loss mobile, etc. à la dynamique de la volatilité du marché, afin de permettre à la stratégie de s’adapter automatiquement aux différentes conditions de volatilité du marché.
Optimisation du machine learningL’utilisation de la technologie d’apprentissage automatique pour ajuster dynamiquement les paramètres ou les poids de la stratégie afin qu’elle puisse mieux s’adapter aux changements de l’environnement du marché et améliorer sa stabilité à long terme.
Ajout de filtres de basePour les transactions d’actifs numériques, il est possible d’envisager d’introduire des données sur la chaîne ou des indicateurs de l’humeur du marché comme conditions de filtrage supplémentaires pour améliorer encore la qualité du signal.
Gestion partielle des positions: mise en œuvre d’un système de gestion de position dynamique qui ajuste automatiquement la taille de la position de chaque transaction en fonction de l’intensité du signal, de la volatilité du marché et de la perte de compte, optimisant l’efficacité de l’utilisation des fonds et le ratio de retour sur risque.
Élargissement de la stratégie de préventionL’objectif est d’améliorer la rentabilité et le taux de réussite de la stratégie en mettant en œuvre des stratégies de stop-loss à plusieurs niveaux, telles que des stop-loss dynamiques basées sur la structure du marché ou des profits par lots.
La stratégie de négociation synchrone multi-indicateurs de type confirmation de tendance est un système de négociation bien conçu qui capture efficacement les opportunités de négociation à haute probabilité sur le marché en combinant des mécanismes multiples tels que l’action des prix, le système de ligne de parité, la confirmation de la dynamique RSI, le filtrage de la force de la tendance ADX et la confirmation du volume. Cette stratégie est particulièrement adaptée à la recherche d’opportunités de réinsertion dans des marchés à tendance claire.
Bien que la stratégie soit confrontée à des défis tels que la sensibilité des paramètres, le risque de renversement de tendance et la rareté des signaux, la stratégie est susceptible de renforcer sa stabilité et son adaptabilité grâce à des orientations d’optimisation recommandées telles que la confirmation de plusieurs périodes de temps, l’adaptation automatique des paramètres aux taux de volatilité, l’optimisation de l’apprentissage automatique, le filtrage de base et la gestion dynamique des positions. Dans l’ensemble, la stratégie fournit aux traders un cadre de négociation systématique et discipliné qui aide à maintenir des décisions commerciales objectivement rationnelles dans des environnements de marché complexes et variables.
/*backtest
start: 2024-06-09 00:00:00
end: 2025-06-08 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
//@version=5
strategy("JonnyBtc Daily Pullback Strategy (Volume + ADX)", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)
// === INPUTS ===
ema_fast_len = input.int(10, title="Fast EMA (Pullback EMA)") // Shorter for daily
ema_trend_len = input.int(100, title="Long-Term Trend EMA") // Shorter than 200
ema_mid_len = input.int(50, title="Mid-Term Trend EMA")
rsi_len = input.int(14, title="RSI Length")
rsi_buy_min = input.int(55, title="Min RSI for Buy")
rsi_sell_max = input.int(45, title="Max RSI for Sell")
adx_len = input.int(14, title="ADX Length")
adx_min = input.float(20, title="Minimum ADX for Trend Strength")
vol_len = input.int(20, title="Volume MA Length")
volume_mult = input.float(1.0, title="Volume Multiplier for Confirmation")
long_only = input.bool(true, title="Only Trade Longs")
use_trailing_stop = input.bool(true, title="Use Trailing Stop")
trail_atr_mult = input.float(1.0, title="ATR Trailing Stop Multiplier", step=0.1)
atr_mult_sl = input.float(1.5, title="Fixed Stop Loss (ATR Multiplier)", step=0.1)
atr_mult_tp = input.float(3.0, title="Take Profit (ATR Multiplier)", step=0.1)
// === INDICATORS ===
price = close
ema_fast = ta.ema(price, ema_fast_len)
ema_trend = ta.ema(price, ema_trend_len)
ema_mid = ta.ema(price, ema_mid_len)
rsi = ta.rsi(price, rsi_len)
atr = ta.atr(14)
vol_sma = ta.sma(volume, vol_len)
// === Manual ADX Calculation ===
up = ta.change(high)
down = -ta.change(low)
plusDM = (up > down and up > 0) ? up : 0
minusDM = (down > up and down > 0) ? down : 0
trur = ta.rma(ta.tr(true), adx_len)
plusDI = 100 * ta.rma(plusDM, adx_len) / trur
minusDI = 100 * ta.rma(minusDM, adx_len) / trur
dx = 100 * math.abs(plusDI - minusDI) / (plusDI + minusDI)
adx = ta.rma(dx, adx_len)
// === TREND FILTERS ===
strong_uptrend = price > ema_trend and ema_mid > ema_trend
strong_downtrend = price < ema_trend and ema_mid < ema_trend
// === VOLUME & ADX CONFIRMATION ===
volume_ok = volume > vol_sma * volume_mult
adx_ok = adx > adx_min
// === ENTRY CONDITIONS ===
long_signal = ta.crossover(price, ema_fast) and strong_uptrend and rsi > rsi_buy_min and price[1] < ema_fast[1] and adx_ok and volume_ok
short_signal = ta.crossunder(price, ema_fast) and strong_downtrend and rsi < rsi_sell_max and price[1] > ema_fast[1] and adx_ok and volume_ok
// === TRADE EXECUTION ===
if long_signal
strategy.entry("Long", strategy.long)
if short_signal and not long_only
strategy.entry("Short", strategy.short)
// === EXITS ===
long_sl = price - atr * atr_mult_sl
long_tp = price + atr * atr_mult_tp
short_sl = price + atr * atr_mult_sl
short_tp = price - atr * atr_mult_tp
trail_offset = atr * trail_atr_mult
if use_trailing_stop
strategy.exit("Exit Long", from_entry="Long", trail_points=trail_offset, trail_offset=trail_offset, limit=long_tp)
strategy.exit("Exit Short", from_entry="Short", trail_points=trail_offset, trail_offset=trail_offset, limit=short_tp)
else
strategy.exit("Exit Long", from_entry="Long", stop=long_sl, limit=long_tp)
strategy.exit("Exit Short", from_entry="Short", stop=short_sl, limit=short_tp)
// === PLOTS ===
plot(ema_fast, title="Fast EMA", color=color.orange)
plot(ema_mid, title="Mid-Term EMA", color=color.aqua)
plot(ema_trend, title="Long-Term EMA", color=color.blue)
// === ALERT CONDITIONS ===
alertcondition(long_signal, title="Buy Alert", message="BTC BUY Signal")
alertcondition(short_signal and not long_only, title="Sell Alert", message="BTC SELL Signal")
// === PLOTS FOR SIGNALS ===
plotshape(long_signal, title="Buy Signal", style=shape.labelup, location=location.belowbar, color=color.green, text="BUY")
plotshape(short_signal and not long_only, title="Sell Signal", style=shape.labeldown, location=location.abovebar, color=color.red, text="SELL")