
Le système de négociation de confirmation de tendance à la moyenne multiple est une stratégie de négociation quantitative basée sur une combinaison de moyennes mobiles indicielles (EMA) pour confirmer la direction de la tendance et les signaux de négociation par l’analyse de plusieurs périodes. Le cœur de la stratégie est d’utiliser l’EMA150 sur la période H4 comme critère principal de jugement de la tendance, en combinant la position relative des moyennes à court terme (EMA36, EMA54, EMA89) et l’interaction des prix avec la ligne de la moyenne pour générer des signaux de négociation.
Le fonctionnement de la stratégie repose sur plusieurs composantes clés:
Identifier les tendances: Utilisation de l’EMA150 sur la période H4 comme critère pour déterminer la direction de la tendance principale. Les prix supérieurs à l’EMA150 sont définis comme tendance à la hausse et les prix inférieurs à l’EMA150 comme tendance à la baisse.
Système multivariéLa stratégie consiste à construire un système de négociation en utilisant les moyennes mobiles des quatre indices (EMA36, EMA54, EMA89 et EMA150). Lorsque la moyenne à court terme est au-dessus de la moyenne à long terme (EMA36 > ema54 > ema89 > ema150), une tendance à la hausse est confirmée; inversement, une tendance à la baisse est confirmée.
Interaction des prix avec la moyenneLa stratégie consiste à rechercher des opportunités de trading à n’importe quelle position de la ligne de parité lors du test de prix (retour vers) qui indique que le marché pourrait rebondir à partir d’un point de support ou de résistance.
Défaillance confirmée:
Stratégie de sortie multi-horaire: Utilisation de l’EMA150 sur la période M15 comme condition de sortie, qui ferme la position lorsque le prix franchit cette ligne moyenne, pour verrouiller efficacement les bénéfices et réduire les retraits.
Confirmation de la transaction: lorsque le volume des transactions augmente soudainement à plus de 2,5 fois le volume moyen des transactions sur 20 cycles, la stratégie le considère comme un signal d’une éventuelle inversion du marché, déclenchant une opération de plafonnement.
Gestion des risquesLa stratégie utilise des paramètres d’arrêt et d’arrêt dynamiques basés sur l’ATR, la distance d’arrêt étant de 1,5 fois l’ATR et le rapport de risque / rendement de 1: 2.
Intégration des mécanismes de confirmation multipleLa stratégie consiste à filtrer les opportunités de transactions à forte probabilité à l’aide de mécanismes de confirmation à plusieurs niveaux (direction de la tendance, relation de parité, comportement des prix, forme de chute) afin de réduire efficacement la probabilité de faux signaux.
Analyse de plusieurs périodesL’intégration du cadre temporel H4 pour la détermination des grandes tendances et du cadre temporel M15 pour la surveillance des points de sortie permet une meilleure compréhension de la dynamique du marché et une meilleure précision des transactions.
Gestion dynamique des risquesLes paramètres de stop-loss basés sur l’ATR permettent de s’adapter automatiquement à la volatilité du marché, évitant ainsi les problèmes de stop-loss fixes qui peuvent être trop grands ou trop petits, et s’adaptent mieux aux différents environnements de marché.
Confirmation de la transactionEn surveillant les volumes anormaux comme signal de sortie supplémentaire, il est possible d’identifier à l’avance les retournements possibles du marché et de réduire les retraits.
Aide visuelle: La stratégie marque clairement sur le graphique les signaux de négociation, la position de la ligne de parité et l’état de la tendance actuelle, ce qui permet aux traders de comprendre intuitivement la situation du marché et la logique de la stratégie.
Affichage des résultats en temps réel: La stratégie calcule et affiche en temps réel le taux de réussite et le nombre total de transactions, aidant les traders à évaluer en permanence la performance de la stratégie.
Le marché de l’électricité est en baisse: Dans les marchés de ralliement sans tendance évidente, le système EMA peut générer des signaux erronés fréquents, entraînant des pertes continues. Il est recommandé de suspendre la négociation de la stratégie ou d’augmenter les critères d’entrée dans les marchés de choc.
Points de glissement et effets sur les coûts des transactions: la stratégie prend en compte une commission de 0,04% mais sur des variétés à forte volatilité ou à faible liquidité, les glissements peuvent avoir un impact significatif sur les résultats réels des transactions. Il convient de réserver suffisamment de fonds pour couvrir ces coûts.
Risques de sur-optimisation: la stratégie utilise plusieurs paramètres spécifiques (cycle EMA, multiplicateur ATR, etc.), il peut y avoir un risque de surcorrespondance avec les données historiques. Il est recommandé d’effectuer suffisamment de vérifications de rétroaction inter-cycle et inter-variétés avant la mise en service.
Problème de retard de signal: L’EMA est essentiellement un indicateur en retard qui peut ne pas être en mesure de saisir les points de basculement en temps opportun dans un marché en retournement rapide. L’ajout d’un indicateur de dynamique peut être envisagé comme jugement auxiliaire.
Une mauvaise interprétation de l’effondrement: la stratégie repose sur le jugement de plusieurs formes de faillite, dont certaines peuvent avoir une efficacité différente dans différentes conditions de marché. Une analyse approfondie de la performance historique de chaque forme sur une variété particulière est recommandée.
Conception de paramètres adaptésIl est envisageable de remplacer les cycles EMA fixes (par exemple 36, 54, 89, 150) par des paramètres dynamiques qui s’adaptent automatiquement en fonction de la volatilité du marché, afin de mieux s’adapter aux différentes conditions du marché. Cela peut être réalisé en introduisant des indicateurs de volatilité (par exemple, le ratio ATR) qui permettent d’ajuster les paramètres de manière autonome.
Augmenter le filtrage des conditions du marchéIntroduction d’un mécanisme de classification des états du marché, par exemple en identifiant la force de la tendance à l’aide de l’indicateur ADX, en suspendant la négociation dans un environnement de faible intensité de tendance ou en ajustant les paramètres de la stratégie pour éviter les faux signaux fréquents dans les marchés en turbulence.
Optimisation du mécanisme de sortie: les stratégies existantes reposent principalement sur le croisement EMA150 de la période M15 comme point d’entrée, on peut envisager d’ajouter un mécanisme de stop-loss de suivi des gains pour certaines positions, pour obtenir plus de profits dans une tendance forte. Par exemple, on peut réaliser des sorties en lots, une partie avec des sorties à risque fixe, une partie avec un stop-loss de suivi de verrouillage des profits.
Amélioration de l’analyse du volume des transactionsLes stratégies actuelles utilisent uniquement la hausse du volume des transactions comme signal d’avertissement, ce qui permet d’affiner davantage l’analyse du volume des transactions, par exemple en combinant les modèles d’accumulation et de dispersion du volume des transactions avec l’analyse du comportement des prix, afin d’identifier plus précisément les points de retournement du marché.
Filtreur de temps intégréEn augmentant le filtrage des meilleures périodes de négociation, en évitant les périodes de faible liquidité ou de forte volatilité (comme les périodes de transfert entre l’Europe et les États-Unis ou les périodes de publication de données financières importantes), la qualité des transactions peut être considérablement améliorée.
Le renforcement de l’apprentissage automatiqueIl peut être envisagé d’introduire des algorithmes d’apprentissage automatique de base pour marquer et filtrer les signaux de transaction existants, par exemple en améliorant la qualité des signaux par une correspondance avec des modèles de similitude historique.
Le système de négociation de confirmation de tendance de ligne de moyenne multiple est une stratégie de suivi de tendance intégrée qui construit un système de négociation bien structuré grâce à l’analyse de plusieurs périodes, à la confirmation de plusieurs indicateurs techniques et à des règles strictes de gestion des risques. Le plus grand avantage de cette stratégie réside dans son mécanisme de confirmation à plusieurs niveaux, capable de filtrer efficacement les signaux de mauvaise qualité.
/*backtest
start: 2024-04-30 00:00:00
end: 2025-04-28 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("EMA Trend Trading Strategy - Full", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.04)
// ==== 1. DETERMINE EMA TREND (H4) ====
// Get H4 EMA 150
ema150_h4 = request.security(syminfo.tickerid, "240", ta.ema(close, 150))
isUptrend = close > ema150_h4
isDowntrend = close < ema150_h4
// Show trend on bottom right
var label trendLabel = na
label.delete(trendLabel)
trendLabel := label.new(bar_index, na,
text = isUptrend ? "UPTREND ↑" : "DOWNTREND ↓",
color = isUptrend ? color.new(color.green, 0) : color.new(color.red, 0),
style = label.style_label_lower_right,
textcolor = color.white,
size = size.large)
// ==== 2. SETUP EMA AND ATR ====
// EMAs
ema36 = ta.ema(close, 36)
ema54 = ta.ema(close, 54)
ema89 = ta.ema(close, 89)
ema150 = ta.ema(close, 150)
// ATR for Stop Loss
atr = ta.atr(14)
slDistance = atr * 1.5
// ==== 3. TRADE SIGNAL CONDITIONS ====
// 3.1 BUY conditions (Uptrend)
emaBullish = ema36 > ema54 and ema54 > ema89 and ema89 > ema150
priceTestEMA = (low <= ema36 and close > ema36) or
(low <= ema54 and close > ema54) or
(low <= ema89 and close > ema89) or
(low <= ema150 and close > ema150)
// Bullish reversal candlestick patterns
pinbarBullish = close > open and (open - low) >= 2 * (high - close) and (high - close) <= (close - open) / 2
engulfingBullish = close[1] < open[1] and close > open and close > open[1] and open < close[1]
insideBarBullish = high < high[1] and low > low[1] and close > open
morningStar = close[2] < open[2] and math.min(open[1], close[1]) > close[2] and close > open and close > (open[2] + close[2]) / 2
buyPattern = pinbarBullish or engulfingBullish or insideBarBullish or morningStar
buySignal = isUptrend and emaBullish and priceTestEMA and buyPattern
// 3.2 SELL conditions (Downtrend)
emaBearish = ema36 < ema54 and ema54 < ema89 and ema89 < ema150
priceTestEMABearish = (high >= ema36 and close < ema36) or
(high >= ema54 and close < ema54) or
(high >= ema89 and close < ema89) or
(high >= ema150 and close < ema150)
// Bearish reversal candlestick patterns
pinbarBearish = close < open and (high - open) >= 2 * (open - low) and (open - low) <= (open - close) / 2
engulfingBearish = close[1] > open[1] and close < open and close < open[1] and open > close[1]
insideBarBearish = high < high[1] and low > low[1] and close < open
eveningStar = close[2] > open[2] and math.max(open[1], close[1]) < close[2] and close < open and close < (open[2] + close[2]) / 2
sellPattern = pinbarBearish or engulfingBearish or insideBarBearish or eveningStar
sellSignal = isDowntrend and emaBearish and priceTestEMABearish and sellPattern
// ==== 4. EXIT CONDITIONS ====
// Get EMA150 from M15 for exit
ema150_m15 = request.security(syminfo.tickerid, "15", ta.ema(close, 150))
// Exit Long
exitBuyCondition = ta.crossunder(close, ema150_m15)
// Exit Short
exitSellCondition = ta.crossover(close, ema150_m15)
// Volume Spike (VSA)
volAvg = ta.sma(volume, 20)
volSpike = volume > volAvg * 2.5
// ==== 5. EXECUTE STRATEGY ====
// Enter Long
if (buySignal)
strategy.entry("Long", strategy.long)
strategy.exit("Exit Long", "Long", stop=low - slDistance, when=exitBuyCondition or volSpike)
// Enter Short
if (sellSignal)
strategy.entry("Short", strategy.short)
strategy.exit("Exit Short", "Short", stop=high + slDistance, when=exitSellCondition or volSpike)
// ==== 6. DISPLAY ON CHART ====
// Plot EMAs
plot(ema36, "EMA 36", color.new(color.blue, 0), 1)
plot(ema54, "EMA 54", color.new(color.orange, 0), 1)
plot(ema89, "EMA 89", color.new(color.purple, 0), 1)
plot(ema150, "EMA 150", color.new(color.red, 0), 2)
// Mark signals
plotshape(buySignal, title="Buy Signal", text="BUY", style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small)
plotshape(sellSignal, title="Sell Signal", text="SELL", style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small)
// Highlight bars with volume spike
barcolor(volSpike ? color.new(color.purple, 70) : na)
// Show Win Rate
var float winRate = na
var int totalTrades = 0
var int winningTrades = 0
if (strategy.closedtrades > 0)
totalTrades := strategy.closedtrades
winningTrades := strategy.wintrades
winRate := winningTrades / totalTrades * 100
var table statsTable = table.new(position.top_right, 2, 2, border_width=1)
table.cell(statsTable, 0, 0, "Win Rate", bgcolor=color.gray)
table.cell(statsTable, 1, 0, str.tostring(winRate, "#.##") + "%", bgcolor=winRate >= 50 ? color.green : color.red)
table.cell(statsTable, 0, 1, "Total Trades", bgcolor=color.gray)
table.cell(statsTable, 1, 1, str.tostring(totalTrades), bgcolor=color.silver)