Cette stratégie est un système de suivi des tendances qui combine plusieurs croisements de moyennes mobiles exponentielles (EMA) avec des niveaux d'extension de Fibonacci. Elle utilise l'interaction entre les EMA de différentes périodes pour identifier les débuts et les fins potentiels de la tendance, tout en utilisant les niveaux d'extension de Fibonacci pour déterminer les objectifs de profit.
Le noyau de cette stratégie réside dans l'utilisation des croisements EMA sur plusieurs délais pour capturer l'initiation et la fin des tendances. Plus précisément, elle utilise des EMA à 5 périodes, 10 périodes et 30 périodes.
La première condition d'entrée est déclenchée lorsque le prix atteint ou tombe en dessous de l'EMA à 30 périodes, mais ferme ensuite au-dessus de celui-ci, tandis que l'EMA à 10 périodes est au-dessus de l'EMA à 5 périodes et que l'EMA à 30 périodes est inférieure de 1% à l'EMA à 5 périodes.
La deuxième condition d'entrée est déclenchée lorsque l'EMA à 5 périodes franchit le seuil supérieur à l'EMA à 30 périodes et que l'EMA à 30 périodes a franchi le seuil inférieur à l'EMA à 5 périodes au cours des 6 dernières barres.
La troisième condition d'entrée est déclenchée lorsque les sommets des deux barres précédentes sont inférieurs à leurs EMA respectives de 5 périodes, que l'EMA de 5 périodes est inférieure à l'EMA de 10 périodes, qui est inférieure à l'EMA de 30 périodes, et que le sommet de la barre précédente est inférieur à la clôture actuelle.
La quatrième condition d'entrée est déclenchée lorsque l'EMA à 10 périodes dépasse l'EMA à 30 périodes, que l'EMA à 5 périodes a dépassé l'EMA à 30 périodes au cours des 4 dernières barres et que les valeurs actuelles des EMA à 10 périodes et à 5 périodes sont supérieures à leurs valeurs précédentes.
Pour le stop-loss, la stratégie fixe des règles spécifiques pour différentes conditions d'entrée:
Les objectifs de profit sont fixés en fonction des niveaux d'extension de Fibonacci, y compris les niveaux 0,618, 0,786, 1,0 et 1,618.
En outre, la stratégie comporte une condition de verrouillage des bénéfices: si les plus bas des deux dernières barres sont supérieurs à l'EMA à 5 périodes et que les EMA sont alignés par ordre croissant (5 > 10 > 30), la position est fermée pour verrouiller les bénéfices.
Cette stratégie permet d'identifier plus précisément le début et la continuation des tendances en utilisant plusieurs EMA et conditions d'entrée.
Haute adaptabilité: quatre conditions d'entrée différentes permettent à la stratégie de s'adapter à divers environnements de marché, en saisissant les opportunités de négociation, que ce soit dans des ruptures rapides ou des formations de tendance lentes.
Gestion des risques: La stratégie comprend des règles spécifiques de stop-loss, ce qui aide à contrôler le risque pour chaque transaction.
Objectifs de profit clairs: L'utilisation de niveaux d'extension de Fibonacci comme objectifs de profit fournit aux traders des points de sortie clairs. Cela aide à éviter la prise de profit prématurée ou la tenue de positions trop longtemps.
Protection des bénéfices: la condition de verrouillage des bénéfices aide à protéger les bénéfices réalisés lorsque la tendance pourrait s'inverser, un aspect important souvent négligé par de nombreuses stratégies de suivi des tendances.
Combinaison d'indicateurs techniques: la stratégie combine les EMA et les outils de Fibonacci, en tirant parti des atouts de ces deux outils d'analyse technique populaires.
Surtrading: des conditions d'entrée multiples peuvent entraîner un surtrading, en particulier sur des marchés très volatils, ce qui pourrait augmenter les coûts de transaction et entraîner potentiellement davantage de faux signaux.
Sensitivité des paramètres: la stratégie utilise plusieurs périodes d'EMA fixes et des seuils en pourcentage. Ces paramètres peuvent devoir être ajustés pour différents marchés et délais, sinon ils pourraient entraîner une mauvaise performance de la stratégie.
Dépendance à la tendance: en tant que stratégie de suivi de tendance, elle peut avoir de mauvaises performances sur les marchés en variation ou en oscillation.
Le décalage: les EMA sont des indicateurs en retard par nature. Dans les marchés en évolution rapide, la stratégie peut ne pas être en mesure de capturer les points tournants de la tendance en temps opportun.
Complexité: les multiples conditions et règles de la stratégie accroissent sa complexité, ce qui peut rendre difficile sa compréhension et son maintien, et accroît également le risque de suradaptation.
Ajustement dynamique des paramètres: envisager l'introduction d'un mécanisme d'adaptation permettant d'ajuster dynamiquement les périodes de l'EMA et d'autres paramètres en fonction de la volatilité du marché.
Incorporer des indicateurs de volume: combiner l'analyse du volume peut améliorer la précision des décisions d'entrée et de sortie. Par exemple, il faut augmenter le volume à l'entrée pour confirmer la force de la tendance.
Filtrage de l'environnement du marché: mettre en place un mécanisme d'identification de l'environnement du marché, tel que l'utilisation d'indicateurs ATR (Average True Range) ou de volatilité, afin de mettre en pause les transactions dans des environnements peu propices à la suivi des tendances.
Optimisez le mécanisme de stop-loss: envisagez d'utiliser des stops de trailing au lieu de stops fixes.
Ajouter un filtrage temporel: Limiter les transactions à des périodes spécifiques, en évitant les périodes de volatilité élevée ou de faible liquidité, ce qui peut améliorer la stabilité de la stratégie.
Introduire l'apprentissage automatique: utiliser des algorithmes d'apprentissage automatique pour optimiser la sélection des paramètres et les décisions d'entrée, ce qui peut améliorer l'adaptabilité et les performances de la stratégie.
Analyse multi-temporielle: intégrer une analyse de tendance à partir de délais plus longs afin d'améliorer la précision des décisions d'entrée et d'éviter d'entrer contre la tendance principale.
Cette stratégie de suivi des tendances multi-EMA avec extension de Fibonacci démontre un système de trading complet qui combine plusieurs indicateurs techniques et concepts de trading. En utilisant plusieurs EMA et conditions d'entrée, la stratégie tente de trouver un équilibre entre la capture des tendances et la réduction des faux signaux.
Bien que la stratégie présente des avantages en termes de confirmations multiples et de grande adaptabilité, sa complexité et sa sensibilité à la sélection des paramètres posent également certains défis.
Dans l'ensemble, cette stratégie fournit un cadre intéressant pour le suivi des tendances, mais les traders doivent effectuer des tests arrière et une optimisation des paramètres complets lorsqu'ils l'appliquent dans la pratique, et apporter les ajustements appropriés en fonction des marchés et des styles de trading spécifiques.
/*backtest start: 2024-06-01 00:00:00 end: 2024-06-30 23:59:59 period: 3h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("EMA Combined Strategy with Specific Stop Loss", overlay=true) // Define the EMAs ema30 = ta.ema(close, 30) ema10 = ta.ema(close, 10) ema5 = ta.ema(close, 5) // Define the conditions for opening an order open_condition1 = low <= ema30 and close > ema30 and ema10 > ema5 and ema30 * 1.01 < ema5 open_condition2 = ta.crossover(ema5, ema30) and (ta.crossover(ema30[1], ema5[1]) or ta.crossover(ema30[2], ema5[2]) or ta.crossover(ema30[3], ema5[3]) or ta.crossover(ema30[4], ema5[4]) or ta.crossover(ema30[5], ema5[5]) or ta.crossover(ema30[6], ema5[6]) ) open_condition3 = high[2] < ema5[2] and high[1] < ema5[1] and ema5 < ema10 and ema10 < ema30 and high[1] < close open_condition4 = ta.crossover(ema10, ema30) and (ta.crossover(ema5[0], ema30[0]) or ta.crossover(ema5[1], ema30[1]) or ta.crossover(ema10[2], ema30[2]) or ta.crossover(ema10[3], ema30[3])) and ema10[1] < ema10 and ema5[1] <ema5 // Calculate the lowest low of the previous two bars lowest_low_prev_two_bars = ta.lowest(low, 3) // Track the entry price and the lowest low of the previous two bars for open_condition3 var float entry_price = na var float low_entry_price = na var float entry_lowest_low1 = na var float entry_lowest_low2 = na var float entry_lowest_low3 = na var float entry_lowest_low4 = na var bool order1 = false var bool order2 = false var bool order3 = false var bool order4 = false // Fibonacci extension levels based on the last significant swing var float fib_extension_level_0_618 = na var float fib_extension_level_0_786 = na var float fib_extension_level_1 = na var float fib_extension_level_1_618 = na // Calculate Fibonacci extension levels var float swing_low = na var float swing_high = na // Here we assume the latest swing low and swing high, adjust based on your logic swing_low := ta.lowest(low, 20) swing_high := ta.highest(high, 20) // Open a long order when any of the conditions are met if open_condition1 and not order2 and not order1 and not order3 and not order4 strategy.entry("Long", strategy.long, comment="<ema30") entry_lowest_low1 := lowest_low_prev_two_bars low_entry_price := low fib_extension_level_0_618 := low_entry_price + (swing_high - swing_low) * 0.618 fib_extension_level_0_786:= low_entry_price + (swing_high - swing_low) * 0.786 fib_extension_level_1:= low_entry_price + (swing_high - swing_low) * 1 fib_extension_level_1:= low_entry_price + (swing_high - swing_low) * 1.618 entry_price := close order1 := true if open_condition2 and not order2 and not order1 and not order3 and not order4 strategy.entry("Long", strategy.long, comment="ema5xema30") entry_lowest_low2 := lowest_low_prev_two_bars low_entry_price := low fib_extension_level_0_618 := low_entry_price + (swing_high - swing_low) * 0.618 fib_extension_level_0_786:= low_entry_price + (swing_high - swing_low) * 0.786 fib_extension_level_1:= low_entry_price + (swing_high - swing_low) * 1 fib_extension_level_1:= low_entry_price + (swing_high - swing_low) * 1.618 entry_price := close order2 := true if open_condition3 and not order2 and not order1 and not order3 and not order4 strategy.entry("Long", strategy.long, comment="high<ema5") entry_price := close low_entry_price := low entry_lowest_low3 := lowest_low_prev_two_bars fib_extension_level_0_618 := low_entry_price + (swing_high - swing_low) * 0.618 fib_extension_level_0_786:= low_entry_price + (swing_high - swing_low) * 0.786 fib_extension_level_1:= low_entry_price + (swing_high - swing_low) * 1 fib_extension_level_1:= low_entry_price + (swing_high - swing_low) * 1.618 order3 := true if open_condition4 and not order2 and not order1 and not order3 and not order4 strategy.entry("Long", strategy.long, comment="high<ema5444") entry_price := close low_entry_price := low entry_lowest_low4 := lowest_low_prev_two_bars fib_extension_level_0_618 := low_entry_price + (swing_high - swing_low) * 0.618 fib_extension_level_0_786:= low_entry_price + (swing_high - swing_low) * 0.786 fib_extension_level_1:= low_entry_price + (swing_high - swing_low) * 1 fib_extension_level_1:= low_entry_price + (swing_high - swing_low) * 1.618 order4 := true // Set a stop loss only if the order was opened with the specified conditions if (not na(entry_price)) if order1 if ta.crossover(ema30,ema10) strategy.close("Long", comment="stop loss1" ) entry_price := na order1 := false low_entry_price := na if order2 if close < entry_lowest_low2 strategy.close("Long", comment="stop loss2" ) entry_price := na order2 := false low_entry_price := na if order3 if close < entry_lowest_low3 strategy.close("Long", comment="stop loss3" ) entry_price := na order3 := false low_entry_price := na if order4 if close < entry_lowest_low4 strategy.close("Long", comment="stop loss4" ) entry_price := na order4 := false low_entry_price := na if low[1] > ema5[1] and low > ema5 and ema5 > ema10 and ema10 > ema30 strategy.close("Long", comment="profit low > ema5") entry_price := na order1 := false order2 := false order3 := false order4 := false low_entry_price := na // Take profit at Fibonacci extension levels if high >= fib_extension_level_0_618 and close <= fib_extension_level_0_618 strategy.close("Long", comment="at 0.618 Fib") entry_price := na order1 := false order2 := false order3 := false order4 := false low_entry_price := na if high >= fib_extension_level_0_786 and close < fib_extension_level_0_786 strategy.close("Long", comment="at 0.786 Fib") entry_price := na order1 := false order2 := false order3 := false order4 := false low_entry_price := na if high >= fib_extension_level_1 and close < fib_extension_level_1 strategy.close("Long", comment="at 1 Fib") entry_price := na order1 := false order2 := false order3 := false order4 := false low_entry_price := na if high >= fib_extension_level_1_618 strategy.close("Long", comment="at 1 Fib") entry_price := na order1 := false order2 := false order3 := false order4 := false low_entry_price := na // Plot the EMAs for visual reference plot(ema30, color=color.blue, title="EMA 30") plot(ema10, color=color.orange, title="EMA 10") plot(ema5, color=color.red, title="EMA 5")