Cette stratégie est un outil d’analyse technique complète qui combine les moyennes mobiles multiples (SMMA), l’identification des tendances, l’identification des motifs graphiques et l’analyse des périodes de négociation. Elle est conçue pour aider les traders à identifier les tendances du marché, à découvrir les revers potentiels et à effectuer des transactions dans des périodes de négociation spécifiques.
Les moyennes mobiles multiples et glissantes (SMMA): la stratégie utilise 4 SMMA (périodes 21, 50, 100 et 200) pour évaluer les tendances du marché sur différentes périodes. Ces moyennes peuvent aider les traders à comprendre les tendances du marché à court, moyen et long terme.
Remplissage de tendance: la stratégie consiste à visualiser la tendance actuelle en utilisant des couleurs pour remplir le fond en comparant la relation entre le prix à court terme (EMA de 2 jours) et la SMMA de 200 jours. Le fond vert représente la tendance haussière et le fond rouge la tendance baissière.
Identification par le format de l’image:
Analyse des heures de négociation: permet aux utilisateurs de définir des heures de négociation spécifiques et de les afficher en évidence sur le graphique. Cela aide les traders à se concentrer sur les heures de négociation les plus actives.
Le signal de transaction est généré:
L’analyse multidimensionnelle: fournit une perspective globale du marché en combinant plusieurs indicateurs techniques et méthodes d’analyse, ce qui permet de prendre des décisions commerciales plus éclairées.
Confirmation de tendance: l’utilisation de SMMA sur plusieurs périodes permet de confirmer plus précisément les tendances du marché et de réduire les faux signaux.
Identification des retournements: en identifiant des schémas de retournement spécifiques, il est possible de capturer à l’avance les retournements potentiels du marché, offrant aux traders des opportunités d’entrée et de sortie.
Intuitif visuel: utilise le remplissage de couleurs et le marquage graphique pour permettre une analyse rapide de l’état du marché et des signaux potentiels.
Flexibilité: permet aux utilisateurs de personnaliser divers paramètres, tels que le cycle de la ligne moyenne, les périodes de négociation, etc., pour s’adapter à différents styles de négociation et conditions de marché.
Gestion du temps: aide les traders à mieux gérer leurs heures de négociation en affichant des heures de négociation spécifiques en haute luminosité, en se concentrant sur les heures de marché les plus potentielles.
L’arriération: les moyennes mobiles sont essentiellement des indicateurs arriérés qui peuvent ne pas être capables de saisir les points de basculement en temps opportun dans un marché en évolution rapide.
Modes de dépendance exagérée: une dépendance excessive aux modes de filtrage peut conduire à des erreurs de jugement, car tous les modes ne prédisent pas avec précision le renversement du marché.
Risque de fausse rupture: les prix peuvent souvent franchir la ligne médiane dans les marchés horizontaux, générant de faux signaux.
La performance de la stratégie dépend en grande partie des paramètres choisis et peut nécessiter des ajustements fréquents selon les conditions du marché.
Ignorer les fondamentaux: Les méthodes d’analyse purement techniques peuvent ignorer des facteurs fondamentaux importants, ce qui conduit à un mauvais jugement lorsque des informations ou des événements importants se produisent.
Surtrades: Dans les marchés très volatils, les stratégies peuvent générer trop de signaux de trading, augmenter les coûts de trading et peut-être conduire à des surtrades.
Pour réduire ces risques, il est recommandé de:
Adaptation dynamique des paramètres: réalisation d’une adaptation automatique du cycle de la moyenne, adaptation automatique du cycle de la SMMA en fonction de la volatilité du marché pour s’adapter aux différentes conditions du marché.
Mécanisme de confirmation du signal: l’introduction d’indicateurs techniques supplémentaires (comme le RSI, le MACD, etc.) pour confirmer le signal de transaction et améliorer la fiabilité du signal.
Filtre de volatilité: ajout d’un indicateur ATR (Average True Range) pour filtrer les signaux faibles pendant les périodes de faible volatilité et ne négocier que lorsque le marché est suffisamment dynamique.
Classification de l’état du marché: développer un algorithme pour classer l’état actuel du marché (trend, horizon, haute volatilité, etc.) et utiliser différentes stratégies de négociation pour différents états.
Optimisation des arrêts de perte: réaliser des arrêts dynamiques, comme l’utilisation de l’ATR ou des niveaux de support/résistance les plus récents pour définir des arrêts de perte afin de mieux gérer le risque.
Analyse du volume des transactions: intégration des données de volume des transactions, pour augmenter la fiabilité des signaux de transaction qui ne sont exécutés que lorsque le volume des transactions est confirmé.
Putainement temporel: un poids différent est attribué aux signaux de différentes périodes en fonction de la réussite de l’analyse des données historiques.
Intégration de l’apprentissage automatique: utilisation d’algorithmes d’apprentissage automatique pour optimiser le processus de sélection de paramètres et de génération de signaux afin d’améliorer l’adaptabilité et la performance des stratégies.
Analyse à plusieurs périodes: élargissement de la stratégie pour prendre en compte les signaux de plusieurs périodes afin de s’assurer que la direction des transactions est conforme aux tendances du marché plus large.
Optimisation de la gestion des fonds: réalisation d’un ajustement dynamique de la taille de la position, en fonction de la volatilité du marché et du risque du compte pour déterminer la taille de chaque transaction.
Ces orientations d’optimisation visent à améliorer la stabilité, l’adaptabilité et la performance globale des stratégies. Grâce à ces améliorations, les stratégies peuvent mieux répondre aux différentes conditions du marché, améliorer la rentabilité et réduire les risques.
La Stratégie de suivi des tendances de plusieurs lignes de moyenne et d’identification des modèles de retournement est un outil d’analyse technique intégré qui combine plusieurs techniques de négociation avancées. En utilisant plusieurs moyennes mobiles de levage, la reconnaissance des tendances, l’analyse de la forme du graphique et la gestion des périodes de négociation, la stratégie fournit aux traders un cadre complet d’analyse du marché.
Les principaux avantages de la stratégie résident dans sa méthode d’analyse multidimensionnelle et sa présentation visuellement intuitive, ce qui permet aux traders de comprendre rapidement l’état du marché et de prendre des décisions éclairées. Cependant, comme toutes les stratégies de trading, elle est confrontée à des risques inhérents, tels que le retard et la dépendance excessive aux indicateurs techniques.
Afin d’améliorer encore l’efficacité de la stratégie, plusieurs orientations d’optimisation peuvent être envisagées, notamment l’ajustement des paramètres dynamiques, l’introduction de mécanismes de confirmation supplémentaires et l’intégration de technologies plus avancées telles que l’apprentissage automatique. Ces optimisations peuvent aider la stratégie à mieux s’adapter aux différents environnements de marché, en améliorant sa stabilité et sa rentabilité.
Enfin, il est important de se rappeler qu’aucune stratégie n’est parfaite. Un trading réussi ne dépend pas seulement d’une bonne stratégie, mais nécessite une gestion rigoureuse des risques, une étude continue du marché et un raffinement continu de la stratégie.
/*backtest
start: 2024-06-29 00:00:00
end: 2024-07-29 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy(title="TMA Overlay Strategy", shorttitle="TMA Overlay", overlay=true)
// ### Four Smoothed Moving Averages
len1 = input.int(21, minval=1, title="Length 1", group="Smoothed MA Inputs")
src1 = close
smma1 = 0.0
sma_1 = ta.sma(src1, len1)
smma1 := na(smma1[1]) ? sma_1 : (smma1[1] * (len1 - 1) + src1) / len1
plot(smma1, color=color.white, linewidth=2, title="21 SMMA")
len2 = input.int(50, minval=1, title="Length 2", group="Smoothed MA Inputs")
src2 = close
smma2 = 0.0
sma_2 = ta.sma(src2, len2)
smma2 := na(smma2[1]) ? sma_2 : (smma2[1] * (len2 - 1) + src2) / len2
plot(smma2, color=color.new(#6aff00, 0), linewidth=2, title="50 SMMA")
h100 = input.bool(true, title="Show 100 Line", group="Smoothed MA Inputs")
len3 = input.int(100, minval=1, title="Length 3", group="Smoothed MA Inputs")
src3 = close
smma3 = 0.0
sma_3 = ta.sma(src3, len3)
smma3 := na(smma3[1]) ? sma_3 : (smma3[1] * (len3 - 1) + src3) / len3
sma3plot = plot(h100 ? smma3 : na, color=color.new(color.yellow, 0), linewidth=2, title="100 SMMA")
len4 = input.int(200, minval=1, title="Length 4", group="Smoothed MA Inputs")
src4 = close
smma4 = 0.0
sma_4 = ta.sma(src4, len4)
smma4 := na(smma4[1]) ? sma_4 : (smma4[1] * (len4 - 1) + src4) / len4
sma4plot = plot(smma4, color=color.new(#ff0500, 0), linewidth=2, title="200 SMMA")
// Trend Fill
trendFill = input.bool(true, title="Show Trend Fill", group="Smoothed MA Inputs")
ema2 = ta.ema(close, 2)
ema2plot = plot(ema2, color=color.new(#2ecc71, 100), linewidth=1, title="EMA(2)", editable=false)
fill(ema2plot, sma4plot, color=color.new(ema2 > smma4 and trendFill ? color.green : color.red, 85), title="Trend Fill")
// End ###
// ### 3 Line Strike
bearS = input.bool(true, title="Show Bearish 3 Line Strike", group="3 Line Strike")
bullS = input.bool(true, title="Show Bullish 3 Line Strike", group="3 Line Strike")
bearSig = close[3] > open[3] and close[2] > open[2] and close[1] > open[1] and close < open[1]
bullSig = close[3] < open[3] and close[2] < open[2] and close[1] < open[1] and close > open[1]
plotshape(bullS ? bullSig : na, style=shape.triangleup, color=color.green, location=location.belowbar, size=size.small, text="3s-Bull", title="3 Line Strike Up")
plotshape(bearS ? bearSig : na, style=shape.triangledown, color=color.red, location=location.abovebar, size=size.small, text="3s-Bear", title="3 Line Strike Down")
// End ###
//### Engulfing Candles
bearE = input.bool(true, title="Show Bearish Big A$$ Candles", group="Big A$$ Candles")
bullE = input.bool(true, title="Show Bullish Big A$$ Candles", group="Big A$$ Candles")
openBarPrevious = open[1]
closeBarPrevious = close[1]
openBarCurrent = open
closeBarCurrent = close
bullishEngulfing = openBarCurrent <= closeBarPrevious and openBarCurrent < openBarPrevious and closeBarCurrent > openBarPrevious
bearishEngulfing = openBarCurrent >= closeBarPrevious and openBarCurrent > openBarPrevious and closeBarCurrent < openBarPrevious
plotshape(bullE ? bullishEngulfing : na, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.tiny, title="Big Ass Candle Up")
plotshape(bearE ? bearishEngulfing : na, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.tiny, title="Big Ass Candle Down")
alertcondition(bullishEngulfing, title="Bullish Engulfing", message="[CurrencyPair] [TimeFrame], Bullish candle engulfing previous candle")
alertcondition(bearishEngulfing, title="Bearish Engulfing", message="[CurrencyPair] [TimeFrame], Bearish candle engulfing previous candle")
// End ###
// ### Trading Session
ts = input.bool(true, title="Show Trade Session", group="Trade Session")
tzOffset = input.int(0, title="Timezone Offset (hours from UTC)", group="Trade Session")
label = input.string("CME Open", title="Label", tooltip="For easy identification", group="Trade Session")
startHour = input.int(7, title="Analysis Start Hour", minval=0, maxval=23, group="Trade Session")
startMinute = input.int(0, title="Analysis Start Minute", minval=0, maxval=59, group="Trade Session")
startHour2 = input.int(8, title="Session Start Hour", minval=0, maxval=23, group="Trade Session")
startMinute2 = input.int(30, title="Session Start Minute", minval=0, maxval=59, group="Trade Session")
endHour2 = input.int(12, title="Session End Hour", minval=0, maxval=23, group="Trade Session")
endMinute2 = input.int(0, title="Session End Minute", minval=0, maxval=59, group="Trade Session")
rangeColor = input.color(#1976d21f, title="Color", group="Trade Session")
showMon = input.bool(true, title="Monday", group="Trade Session")
showTue = input.bool(true, title="Tuesday", group="Trade Session")
showWed = input.bool(true, title="Wednesday", group="Trade Session")
showThu = input.bool(true, title="Thursday", group="Trade Session")
showFri = input.bool(true, title="Friday", group="Trade Session")
showSat = input.bool(false, title="Saturday", group="Trade Session")
showSun = input.bool(false, title="Sunday", group="Trade Session")
startTime = timestamp("UTC", year(time), month(time), dayofmonth(time), startHour - tzOffset, startMinute)
endTime = timestamp("UTC", year(time), month(time), dayofmonth(time), endHour2 - tzOffset, endMinute2)
active = (startTime <= time and time <= endTime and ts) and ((dayofweek == dayofweek.monday and showMon) or (dayofweek == dayofweek.tuesday and showTue) or (dayofweek == dayofweek.wednesday and showWed) or (dayofweek == dayofweek.thursday and showThu) or (dayofweek == dayofweek.friday and showFri) or (dayofweek == dayofweek.saturday and showSat) or (dayofweek == dayofweek.sunday and showSun))
bgcolor(color=active ? rangeColor : na, title="Session Background")
startTime2 = timestamp("UTC", year(time), month(time), dayofmonth(time), startHour2 - tzOffset, startMinute2)
endTime2 = timestamp("UTC", year(time), month(time), dayofmonth(time), endHour2 - tzOffset, endMinute2)
active2 = (startTime2 <= time and time <= endTime2 and ts) and ((dayofweek == dayofweek.monday and showMon) or (dayofweek == dayofweek.tuesday and showTue) or (dayofweek == dayofweek.wednesday and showWed) or (dayofweek == dayofweek.thursday and showThu) or (dayofweek == dayofweek.friday and showFri) or (dayofweek == dayofweek.saturday and showSat) or (dayofweek == dayofweek.sunday and showSun))
bgcolor(color=active2 ? rangeColor : na, title="Session Background")
// End ###
// Trading Strategy
longCondition = bullSig or bullishEngulfing
shortCondition = bearSig or bearishEngulfing
if (longCondition)
strategy.entry("Long", strategy.long)
if (shortCondition)
strategy.entry("Short", strategy.short)
// eof