
La stratégie de suivi de tendance intégrée multi-indicateurs est un système de trading quantitatif qui utilise de manière intégrée plusieurs indicateurs techniques pour déterminer la direction et la force de la tendance du marché. La stratégie combine habilement plusieurs indicateurs tels que les moyennes mobiles, l’indice de force relative (RSI), l’indice de direction moyenne (ADX) et l’indice d’équilibre du volume des transactions (OBV), et intègre l’analyse de la forme de la ligne K et le filtrage des périodes de négociation, en sélectionnant des conditions à plusieurs niveaux pour garantir la capture d’opportunités de négociation à haut taux de victoire dans un marché à forte tendance. La stratégie porte une attention particulière à la vérification mutuelle des indicateurs, et les transactions ne réduisent efficacement le risque de faux signaux que lorsque plusieurs signaux techniques sont confirmés simultanément.
La stratégie fonctionne selon les principes clés suivants:
Système de reconnaissance de tendance: utilise la relation croisée et positionnelle entre l’EMA rapide ((50 cycles) et l’EMA lente ((200 cycles) pour déterminer la direction de la tendance dominante du marché. Lorsque l’EMA rapide est au-dessus de l’EMA lente, une tendance à la hausse est confirmée; au contraire, une tendance à la baisse est confirmée.
Mesure d’intensité: mesurez la force de la tendance à l’aide d’un indicateur ADX personnalisé et ne négociez que lorsque la valeur ADX est supérieure à la barre définie (default 20) afin d’éviter une tendance faible ou un marché en tremblement de terre
Mécanisme de confirmation à plusieurs niveauxL’équipe a conçu un système de signaux intelligents appelé “aiStrength” qui évalue de manière globale cinq facteurs clés du marché:
Vérification de la forme K: Identification supplémentaire des formes d’absorption, des formes spéciales de ligne K telles que l’étoile croisée et la ligne de pointe, comme signal de confirmation d’un renversement ou d’une continuation de la tendance.
Confirmation de la livraison: Exiger un volume de transactions supérieur à 1,5 fois la moyenne des transactions sur 20 cycles, afin d’assurer une participation suffisante au marché pour soutenir les fluctuations des prix.
Indicateur déviant de l’identification: détection d’un décalage entre le prix et le RSI et l’ADX, comme signal d’alerte précoce d’une éventuelle inversion de tendance.
Le filtre de la crise: Identifier et éviter les marchés volatiles en analysant la gamme des fluctuations des prix avec les indices ADX et RSI.
Optimisation des heures de négociation: Limiter les transactions à des heures spécifiques (de 14h00 à 23h00 dans le fuseau horaire UTC+7) pour correspondre aux heures d’activité des principaux marchés et améliorer la qualité du signal.
Gestion dynamique des risquesLe ratio de retour sur risque pour les gains multiples est fixé à 2,0, tandis que la protection contre les pertes de suivi d’un ATR de 1,5 fois est avantageuse.
Une analyse multidimensionnelle du marché: L’intégration de plusieurs indicateurs tels que les moyennes mobiles, le RSI, l’ADX et l’OBV permet d’analyser la situation du marché sous différents angles, ce qui réduit le risque d’erreur qu’un seul indicateur peut entraîner.
Une grande capacité d’adaptation: La stratégie utilise un arrêt de perte basé sur l’ATR, capable de s’adapter automatiquement à la volatilité des différents marchés et de rester efficace dans des environnements à forte volatilité et à faible volatilité.
Système de filtration à haute altitudeLe filtrage de nombreux signaux de qualité inférieure a été effectué avec des conditions multiples (direction de la tendance, confirmation de la force, vérification du volume de transaction, forme de la ligne K, période de transaction, etc.), ce qui a considérablement amélioré la fiabilité des signaux de transaction.
L’intelligence des marchés en crise: La stratégie intègre des mécanismes d’identification des marchés en choc et évite activement les transactions lorsque les marchés sont visiblement à l’horizontale, réduisant ainsi le risque de perte dans un environnement à forte incertitude.
Protection dynamique des bénéfices: Application basée sur le suivi des pertes ATR, capable de bloquer efficacement les profits réalisés tout en conservant suffisamment d’espace de roulement, équilibrant les risques et les gains.
Combination de forme et d’indicateur: les formes de lignes K de l’analyse technique traditionnelle (l’invasion, l’étoile croisée, la ligne conique) sont combinées avec les indicateurs techniques modernes, en prenant leur longueur respective et en se validant mutuellement.
La déviation du système d’alerte précoce: La déviation entre le prix et le RSI, l’ADX, permet d’identifier à l’avance les signaux potentiels de faiblesse de la tendance ou d’un renversement imminent, ce qui renforce la prévisibilité de la stratégie.
Optimisation des heures de négociationLa stratégie de trading est axée sur les périodes de forte activité du marché, en évitant les périodes de faible liquidité et de volatilité, ce qui améliore l’efficacité des transactions.
Résonance de l’indicateur de dépendance excessive: La stratégie exige la confirmation simultanée de plusieurs indicateurs pour générer un signal, ce qui améliore la qualité du signal, mais peut entraîner la perte de certaines opportunités de trading efficaces, en particulier dans les marchés rapides.
Défi d’optimisation des paramètres: La stratégie implique plusieurs paramètres (par exemple, la longueur de l’EMA, le cycle RSI, les seuils de l’ADX, etc.), et différents environnements de marché peuvent nécessiter des combinaisons de paramètres différentes, ce qui augmente la complexité de l’optimisation des paramètres.
Fréquence de transaction instable: En raison des conditions d’entrée strictes, il est possible qu’il n’y ait pas de signaux de trading pendant de longues périodes sur certains marchés, ce qui affecte l’efficacité de l’utilisation des fonds. La solution consiste à envisager d’augmenter la variété de marchés négociables ou d’assouplir certaines conditions de manière appropriée.
Les risques de retrait: Malgré l’utilisation d’un paramètre de stop-loss basé sur l’ATR, dans des conditions de marché extrêmes (comme le saut en flèche ou l’éclatement), le stop-loss réel peut glisser fortement, entraînant des pertes supérieures aux attentes. Il est recommandé d’ajouter des mesures de contrôle des risques supplémentaires, telles que la gestion globale des positions et la limite de perte maximale par jour.
Une mauvaise compréhension du marchéLe mécanisme de détection des chocs de marché de la stratégie, bien qu’efficace, peut également induire en erreur dans certains environnements de marché complexes, filtrer par erreur des opportunités de transactions de valeur ou entrer par erreur dans des marchés inappropriés.
Risques liés à la complexité des algorithmes: La logique de la stratégie est complexe, les jugements conditionnels multiples peuvent entraîner des erreurs de procédure ou des contradictions logiques, et la stabilité de la stratégie doit être assurée par des tests rigoureux et une surveillance en direct.
Le risque d’une suradaptation: Le risque d’une surcomparaison avec les données historiques est présent, car la stratégie utilise de multiples indicateurs et conditions, ce qui peut entraîner une performance future de l’inventaire plus faible que prévu. Il est recommandé d’effectuer des tests approfondis sur différentes périodes et conditions de marché.
Adaptation des paramètres: La stratégie actuelle utilise des paramètres fixes. On peut envisager d’introduire des mécanismes d’ajustement des paramètres adaptatifs, afin d’ajuster la longueur des EMA, les valeurs minimales du RSI et les valeurs minimales de l’ADX en fonction de la volatilité du marché et de la dynamique de la force de la tendance, afin d’améliorer l’adaptation de la stratégie dans différents environnements de marché.
Optimisation de la classification des états de marché: Les mécanismes existants d’identification des marchés de choc peuvent être affinés, en divisant les conditions de marché en plusieurs catégories, telles que les hausses fortes, les hausses faibles, les baisses fortes, les baisses faibles et les chocs, et en utilisant différentes stratégies de négociation et combinaisons de paramètres pour les différentes conditions de marché.
Mise à jour de l’heure d’entrée: il est possible d’ajouter des optimisations d’entrée basées sur la microstructure du marché, telles que la confirmation de la rupture du support / résistance, l’analyse de la volatilité des prix, etc., pour améliorer encore la précision des points d’entrée.
Stratégie de gestion de position renforcée: La stratégie actuelle utilise la gestion de fonds à proportion fixe, on peut envisager l’introduction d’une gestion de position dynamique basée sur la volatilité, augmentant les positions en cas de signaux de confiance élevée et de risque de marché faible, et en revanche réduisant les positions, optimisant l’efficacité de l’utilisation des fonds.
Analyse de plusieurs périodesL’introduction d’analyses multi-temps peut considérablement améliorer l’efficacité de la stratégie. Par exemple, l’utilisation d’un temps plus long (par exemple, 1 heure ou 4 heures) pour confirmer la direction de la tendance principale, puis pour trouver des points d’entrée spécifiques sur le graphique de 15 minutes, réduit le risque de trading à contre-courant.
L’apprentissage automatique optimise le poids du signal: L’analyse des données historiques peut être utilisée à l’aide de techniques d’apprentissage automatique pour allouer un poids dynamique aux différents signaux d’indicateurs, plutôt que de simplement compter le nombre de signaux de confirmation, afin d’évaluer plus précisément l’état du marché et la qualité des opportunités de négociation.
Définition de la stratégie de réduction des pertes: La mise en place actuelle de stop-loss avec un multiplicateur ATR uniforme permet de personnaliser des stratégies de stop-loss plus précises en fonction des caractéristiques de la volatilité du marché et des raisons d’entrée, telles que les stop-loss structurels basés sur le support / résistance, les stop-loss temporels ou les stop-loss ajustés en fonction de la volatilité.
Analyse saisonnière et cyclique: ajouter une analyse des facteurs saisonniers et des cycles du marché, ajuster les paramètres de la stratégie ou suspendre les transactions à des périodes spécifiques (comme début / fin du mois, avant et après la livraison du trimestre), en évitant les périodes historiquement volatiles.
La stratégie de suivi de tendance intégrée multi-indicateurs est un système de trading quantitatif soigneusement conçu qui permet d’identifier et de suivre efficacement les tendances du marché grâce à l’application intégrée de plusieurs outils d’analyse technique et de la théorie de la négociation. La plus grande particularité de la stratégie réside dans son mécanisme de confirmation de signal à plusieurs niveaux, qui réduit considérablement le risque de faux signaux en demandant à plusieurs types d’indicateurs de pointer simultanément dans la même direction de négociation.
La stratégie intègre également de manière ingénieuse l’analyse de la forme de la ligne K traditionnelle avec des indicateurs techniques modernes, et ajoute la confirmation du volume des transactions et l’optimisation du moment des transactions, formant un cadre de décision de transaction complet et systématique. La conception dynamique de la gestion des risques basée sur l’ATR reflète également l’importance de la stratégie pour la sécurité des fonds et fournit aux traders un mécanisme de contrôle des risques raisonnable.
Malgré la complexité de l’optimisation des paramètres et les limites de la stratégie, telles que la possibilité de manquer certaines opportunités de négociation, les performances de la stratégie devraient être encore améliorées grâce aux directions d’optimisation suggérées, telles que l’ajustement des paramètres adaptatifs, l’analyse de plusieurs périodes et l’optimisation des signaux d’apprentissage automatique. Dans l’ensemble, il s’agit d’une stratégie de négociation quantifiée logiquement rigoureuse et rationnellement conçue, particulièrement adaptée aux traders qui recherchent des gains stables et qui se concentrent sur le contrôle des risques.
/*backtest
start: 2025-03-10 00:00:00
end: 2025-04-07 00:00:00
period: 2m
basePeriod: 2m
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
//@version=5
strategy("TUONG HA GBP M15 Trend Strategy NHIEU CHI BAO TICH HOP", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10)
// === INPUTS ===
emaFastLen = input.int(50, "EMA Fast", minval=10, maxval=200, step=5)
emaSlowLen = input.int(200, "EMA Slow", minval=50, maxval=500, step=10)
rsiLen = input.int(14, "RSI Length")
adsLen = input.int(14, "ADX Length")
adxThreshold = input.int(20, "ADX Threshold")
atrLen = input.int(14, "ATR Length")
rrRatio = input.float(2.0, "Risk-Reward Ratio", step=0.1)
trailOffset = input.float(1.5, "Trailing Stop ATR Multiplier", step=0.1)
volumeMultiplier = input.float(1.5, "Volume Multiplier Threshold", step=0.1)
// === SESSIONS (London + New York in VN Time UTC+7) ===
startHour = 14
endHour = 23
inSession = (hour >= startHour and hour <= endHour)
// === INDICATORS ===
emaFast = ta.ema(close, emaFastLen)
emaSlow = ta.ema(close, emaSlowLen)
rsi = ta.rsi(close, rsiLen)
at = ta.atr(atrLen)
// === CUSTOM ADX FUNCTION ===
upMove = high - high[1]
downMove = low[1] - low
plusDM = (upMove > downMove and upMove > 0) ? upMove : 0
minusDM = (downMove > upMove and downMove > 0) ? downMove : 0
trur = ta.tr(true)
plusDI = 100 * ta.rma(plusDM, adsLen) / ta.rma(trur, adsLen)
minusDI = 100 * ta.rma(minusDM, adsLen) / ta.rma(trur, adsLen)
adx = 100 * ta.rma(math.abs(plusDI - minusDI) / (plusDI + minusDI), adsLen)
// === OBV TREND ===
obv = ta.cum(close > close[1] ? volume : close < close[1] ? -volume : 0)
obvTrend = obv > obv[1]
// === VOLUME FILTER ===
avgVol = ta.sma(volume, 20)
highVol = volume > avgVol * volumeMultiplier
// === SIDEWAY DETECTION ===
rng = ta.highest(high, 20) - ta.lowest(low, 20)
rngCloseRatio = close != 0 ? (rng / close) : na
sideway = na(rngCloseRatio) ? false : (rngCloseRatio < 0.003 and adx < adxThreshold and (rsi > 45 and rsi < 55))
// === ENGULFING ===
bullishEngulf = close[1] < open[1] and close > open and close > open[1] and open < close[1]
bearishEngulf = close[1] > open[1] and close < open and close < open[1] and open > close[1]
// === DOJI AND PIN BAR ===
doji = math.abs(open - close) <= (high - low) * 0.1
pinBar = (high - math.max(open, close)) > 2 * math.abs(open - close) and (math.min(open, close) - low) < (high - low) * 0.25
// === AI SIGNALS ENHANCED ===
aiStrength = 0
aiStrength := aiStrength + (emaFast > emaSlow ? 1 : 0)
aiStrength := aiStrength + (obvTrend ? 1 : 0)
aiStrength := aiStrength + (adx > adxThreshold ? 1 : 0)
aiStrength := aiStrength + (bullishEngulf ? 1 : 0)
aiStrength := aiStrength + (ta.crossover(ta.ema(close, 5), ta.ema(close, 21)) ? 1 : 0)
aiSignalLong = aiStrength >= 4
aioStrengthS = 0
aioStrengthS := aioStrengthS + (emaFast < emaSlow ? 1 : 0)
aioStrengthS := aioStrengthS + (not obvTrend ? 1 : 0)
aioStrengthS := aioStrengthS + (adx > adxThreshold ? 1 : 0)
aioStrengthS := aioStrengthS + (bearishEngulf ? 1 : 0)
aioStrengthS := aioStrengthS + (ta.crossunder(ta.ema(close, 5), ta.ema(close, 21)) ? 1 : 0)
aiSignalShort = aioStrengthS >= 4
// === HIGHS AND LOWS DETECTION ===
highestHigh = ta.highest(high, 50)
lowestLow = ta.lowest(low, 50)
plot(highestHigh, title="Highest High", color=color.fuchsia, linewidth=1, style=plot.style_line)
plot(lowestLow, title="Lowest Low", color=color.teal, linewidth=1, style=plot.style_line)
// === RSI DIVERGENCE ===
priceHigherHigh = high > high[1] and high[1] > high[2]
rsiLowerHigh = rsi < rsi[1] and rsi[1] > rsi[2]
shortDiv = priceHigherHigh and rsiLowerHigh
priceLowerLow = low < low[1] and low[1] < low[2]
rsiHigherLow = rsi > rsi[1] and rsi[1] < rsi[2]
longDiv = priceLowerLow and rsiHigherLow
// === ADX DIVERGENCE ===
priceHigherHighADX = high > high[1] and high[1] > high[2]
adxLowerHigh = adx < adx[1] and adx[1] > adx[2]
adxBearishDiv = priceHigherHighADX and adxLowerHigh
priceLowerLowADX = low < low[1] and low[1] < low[2]
adxHigherLow = adx > adx[1] and adx[1] < adx[2]
adxBullishDiv = priceLowerLowADX and adxHigherLow
// === CONDITIONS ===
trendUp = emaFast > emaSlow
trendDn = emaFast < emaSlow
longCond = trendUp and rsi > 50 and obvTrend and adx > adxThreshold and bullishEngulf and aiSignalLong and inSession and not sideway and highVol and (pinBar or doji or longDiv or adxBullishDiv)
shortCond = trendDn and rsi < 50 and not obvTrend and adx > adxThreshold and bearishEngulf and aiSignalShort and inSession and not sideway and highVol and (pinBar or doji or shortDiv or adxBearishDiv)
// === ENTRY + SL/TP + TRAILING ===
longSL = close - at
longTP = close + at * rrRatio
shortSL = close + at
shortTP = close - at * rrRatio
plotshape(longCond, location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small, title="Buy Signal")
plotshape(shortCond, location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small, title="Sell Signal")
if (longCond)
strategy.entry("Long", strategy.long)
strategy.exit("Long TP/SL", from_entry="Long", stop=longSL, limit=longTP, trail_points=at * trailOffset, trail_offset=at * trailOffset)
label.new(bar_index, high, "Buy", style=label.style_label_up, color=color.green, textcolor=color.white, size=size.normal)
alert("Long Signal!", alert.freq_once_per_bar)
if (shortCond)
strategy.entry("Short", strategy.short)
strategy.exit("Short TP/SL", from_entry="Short", stop=shortSL, limit=shortTP, trail_points=at * trailOffset, trail_offset=at * trailOffset)
label.new(bar_index, low, "Sell", style=label.style_label_down, color=color.red, textcolor=color.white, size=size.normal)
alert("Short Signal!", alert.freq_once_per_bar)
// === PLOTS ===
plot(emaFast, color=color.orange, title="EMA Fast")
plot(emaSlow, color=color.blue, title="EMA Slow")
bgcolor(sideway ? color.new(color.gray, 90) : na)
// === COLORING BARS ===
barcolor(longCond ? color.new(color.green, 0) : shortCond ? color.new(color.red, 0) : na)