Stratégie de suivi de tendance avec plusieurs croisements EMA combinés avec des extensions de Fibonacci

EMA
Date de création: 2024-07-29 16:42:56 Dernière modification: 2024-07-29 16:42:56
Copier: 0 Nombre de clics: 547
1
Suivre
1617
Abonnés

Stratégie de suivi de tendance avec plusieurs croisements EMA combinés avec des extensions de Fibonacci

Aperçu

Cette stratégie est un système de suivi de la tendance qui combine les croisements des moyennes mobiles multifonctionnelles (EMA) et les niveaux d’expansion de Fibonacci. Elle utilise l’interaction entre les EMA de différents cycles pour identifier les débuts et les fins de tendances potentielles, tout en utilisant les niveaux d’expansion de Fibonacci pour déterminer les objectifs de profit.

Principe de stratégie

Le cœur de la stratégie est de capturer le début et la fin d’une tendance en utilisant des EMA croisées sur plusieurs périodes. Plus précisément, elle utilise des EMA de 5 cycles, 10 cycles et 30 cycles. La stratégie contient quatre conditions d’entrée différentes, chacune destinée à capturer un scénario de marché différent:

  1. La première condition d’entrée est déclenchée lorsque le prix atteint ou dépasse une EMA de 30 cycles, mais se referme ensuite au-dessus d’elle, tandis que l’EMA de 10 cycles est supérieur à l’EMA de 5 cycles et que l’EMA de 30 cycles est inférieur de 1% à l’EMA de 5 cycles.

  2. La deuxième condition d’entrée est déclenchée lorsque l’EMA à 5 cycles a été portée à 30 cycles et que l’EMA à 30 cycles a été portée à 5 cycles dans les 6 lignes K précédentes.

  3. La troisième condition d’entrée est déclenchée lorsque le prix le plus élevé des deux lignes K actuelles est inférieur à leur EMA de 5 cycles respectifs, l’EMA de 5 cycles est inférieur à l’EMA de 10 cycles, l’EMA de 10 cycles est inférieur à l’EMA de 30 cycles et le prix le plus élevé de la ligne K précédente est inférieur au prix de clôture actuel.

  4. La quatrième condition d’admission est déclenchée lorsque l’EMA à 10 cycles a été portée à 30 cycles et que l’EMA à 5 cycles a été portée à 30 cycles sur les 4 lignes K précédentes, et que les valeurs actuelles de l’EMA à 10 cycles et de l’EMA à 5 cycles sont supérieures à leur valeur précédente.

Pour ce qui est des stop-loss, la stratégie a des règles spécifiques pour les différentes conditions d’entrée:

  • Pour la première condition, si une EMA de 30 cycles est portée sur une EMA de 10 cycles, la position est à zéro.
  • Pour les autres conditions, la position est levée si le cours de clôture tombe au-dessous des trois premières lignes K.

Les objectifs de profit sont basés sur les niveaux de l’expansion de Fibonacci, comprenant les niveaux de 0,618, 0,786, 1,0 et 1,618; lorsque les prix atteignent ces niveaux, la stratégie se complète selon des règles spécifiques.

En outre, la stratégie contient une condition de verrouillage des bénéfices: si les deux plus récents prix les plus bas de la ligne K sont supérieurs à l’EMA de 5 cycles et que l’EMA présente un alignement ascendant ((5 > 10 > 30), la position est levée pour verrouiller les bénéfices.

Avantages stratégiques

  1. Multiple confirmation: en utilisant plusieurs EMA et plusieurs conditions d’entrée, la stratégie est capable d’identifier plus précisément le début et la durée d’une tendance. Ce mécanisme de confirmation multiple peut réduire les faux signaux et améliorer l’exactitude des transactions.

  2. Adaptabilité: quatre conditions d’entrée différentes permettent à la stratégie de s’adapter à différents environnements de marché, capturant des opportunités de négociation, qu’il s’agisse d’une rupture rapide ou d’une tendance lente.

  3. Gestion des risques: la stratégie contient des règles de stop-loss spécifiques qui aident à contrôler le risque de chaque transaction. Différentes conditions d’entrée correspondent à différentes stratégies de stop-loss, ce qui indique l’importance de la stratégie pour la gestion des risques.

  4. L’objectif de profit est clair: l’utilisation du niveau d’expansion de Fibonacci comme objectif de profit fournit aux traders un point de sortie clair. Cela aide à éviter de réaliser des bénéfices trop tôt ou de les conserver trop longtemps.

  5. Protéger les bénéfices: les conditions de blocage des bénéfices aident à protéger les bénéfices réalisés lorsque la tendance peut être inversée, un aspect important négligé par de nombreuses stratégies de suivi des tendances.

  6. Combinaison d’indicateurs techniques: La stratégie combine les outils EMA et Fibonacci, en tirant parti des avantages de ces deux outils d’analyse technique très populaires.

Risque stratégique

  1. Les conditions d’entrée multiples peuvent conduire à des transactions excessives, en particulier dans les marchés à forte volatilité. Cela peut augmenter les coûts de transaction et peut entraîner davantage de faux signaux.

  2. Sensitivité des paramètres: la stratégie utilise plusieurs périodes d’EMA fixes et une dépréciation en pourcentage. Ces paramètres peuvent nécessiter des ajustements en fonction de différents marchés et de différentes périodes, ce qui peut entraîner une mauvaise performance de la stratégie.

  3. Dépendance à la tendance: comme stratégie de suivi de la tendance, il est possible de mal fonctionner dans les marchés à la baisse ou aux chocs. Dans ces environnements de marché, il est possible de produire de nombreux faux signaux et de petites pertes.

  4. Rarité: L’EMA est essentiellement un indicateur de retard. Dans un marché en évolution rapide, la stratégie peut ne pas être en mesure de saisir à temps les virages de tendance.

  5. Complexité: Les conditions et les règles multiples d’une stratégie augmentent sa complexité, ce qui peut rendre la stratégie difficile à comprendre et à maintenir, et augmente le risque de suradaptation.

Orientation de l’optimisation de la stratégie

  1. Adaptation des paramètres dynamiques: l’introduction d’un mécanisme d’adaptation peut être envisagée, afin d’ajuster le cycle EMA et d’autres paramètres en fonction de la dynamique de la volatilité du marché. Cela peut améliorer l’adaptabilité de la stratégie dans différents environnements de marché.

  2. Ajout d’indicateurs de volume de transaction: l’analyse combinée du volume de transaction peut améliorer l’exactitude des décisions d’entrée et de sortie. Par exemple, il peut être demandé d’augmenter le volume de transaction lors de l’entrée pour confirmer la force de la tendance.

  3. Filtrage des conditions de marché: introduction de mécanismes d’identification des conditions de marché, par exemple l’utilisation de l’ATR ou de l’indicateur de volatilité, pour suspendre les transactions dans des conditions de marché qui ne sont pas adaptées au suivi des tendances.

  4. Optimisation des mécanismes d’arrêt des pertes: il peut être envisagé d’utiliser un arrêt de suivi plutôt qu’un arrêt fixe. Cela peut permettre aux bénéfices de continuer à croître tout en les protégeant.

  5. Ajout de filtres temporels: limiter les transactions à des périodes spécifiques, en évitant les périodes plus ou moins volatiles, peut améliorer la stabilité de la stratégie.

  6. L’introduction de l’apprentissage automatique: l’utilisation d’algorithmes d’apprentissage automatique pour optimiser la sélection des paramètres et les décisions d’admission peut améliorer l’adaptabilité et la performance des stratégies.

  7. L’analyse de plusieurs périodes: l’analyse de tendances combinée à des périodes plus longues permet d’améliorer la précision des décisions d’entrée et d’éviter l’entrée en cas de revers des tendances dominantes.

Résumer

Cette stratégie de suivi de la tendance de multiples EMA croisées combinées à des extensions de Fibonacci présente un système de négociation complet qui combine plusieurs indicateurs techniques et idées de négociation. En utilisant plusieurs EMA et conditions d’entrée, la stratégie tente de trouver un équilibre entre la capture d’une tendance et la réduction des faux signaux. L’utilisation de niveaux d’extensions de Fibonacci fournit une base objective pour la définition des objectifs de profit, tandis que les règles spécifiques de stop-loss et de blocage des bénéfices reflètent l’importance accordée à la gestion des risques.

Bien que les stratégies aient l’avantage d’être multi-confirmées et adaptables, leur complexité et leur sensibilité au choix des paramètres posent un certain nombre de défis. Pour améliorer encore la stabilité et la performance des stratégies, des orientations d’optimisation telles que l’introduction d’ajustements de paramètres dynamiques, le filtrage des conditions de marché et l’analyse des cadres temporels multiples peuvent être envisagées.

Dans l’ensemble, cette stratégie offre un cadre intéressant pour le suivi des tendances, mais les traders doivent effectuer un retour d’expérience et une optimisation des paramètres suffisants lors de l’application réelle, et effectuer les ajustements appropriés en fonction des marchés et des styles de trading spécifiques. Avec une surveillance et une optimisation continues, cette stratégie a le potentiel d’être un outil de suivi des tendances efficace.

Code source de la stratégie
/*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")