Stratégie de croisement de moyennes mobiles Momentum


Date de création: 2024-01-23 14:18:26 Dernière modification: 2024-01-23 14:18:26
Copier: 1 Nombre de clics: 537
1
Suivre
1617
Abonnés

Stratégie de croisement de moyennes mobiles Momentum

Aperçu

Cette stratégie est basée sur le croisement des courbes EMA de différentes périodes pour juger de la direction de la tendance et créer un signal de plus ou moins long. Elle utilise principalement 2 courbes moyennes, respectivement la ligne du 10e jour et la ligne du 20e jour.

Principe de stratégie

La stratégie utilise deux lignes moyennes EMA, comprenant les lignes de 10 et de 20 jours. La ligne moyenne EMA reflète bien la direction de la tendance des prix. Lorsque la ligne EMA à court terme passe de bas en haut à travers la ligne EMA à long terme, le mouvement des prix passe de baisse en hausse et est considéré comme un signal de plus; lorsque la ligne EMA à court terme passe de haut en bas à travers la ligne EMA à long terme, le mouvement des prix passe de hausse en baisse et est considéré comme un signal de vide.

Cette stratégie combine les extrêmes et les extrêmes de la volatilité pour filtrer une partie des signaux de négociation. Les signaux de négociation ne sont émis que lorsque la volatilité des prix atteint une certaine amplitude. Cela permet de filtrer une partie des faux signaux.

Plus précisément, la stratégie permet de déterminer si une tendance est en cours en suivant les extrêmes et les extrêmes du prix. Un véritable signal de transaction n’est émis qu’après que les extrêmes ou les extrêmes atteignent un certain temps.

Analyse des forces stratégiques

Cette stratégie présente les avantages suivants:

  1. L’utilisation de la moyenne EMA pour déterminer la direction de la tendance permet de suivre efficacement les mouvements du marché
  2. La combinaison des moyennes EMA de différentes périodes permet de saisir des opportunités de trading sur les courts et moyens courts
  3. Le filtrage des signaux extrêmes permet de filtrer une partie du bruit et d’éviter de rater des opportunités de négociation
  4. La logique de la stratégie est simple et claire, facile à comprendre et à modifier
  5. Paramètres modifiables en fonction des variétés et des préférences commerciales, adaptation rapide

Analyse stratégique des risques

Cette stratégie comporte aussi des risques:

  1. L’EMA elle-même est en retard et risque de manquer une reprise à court terme.
  2. Le filtrage des signaux de bruit est incomplet et il peut y avoir une certaine transaction erronée
  3. Les paramètres doivent être adaptés aux différentes conditions du marché.

Le risque peut être réduit par les moyens suivants:

  1. Confirmation des signaux en combinaison avec d’autres indicateurs pour éviter le retard sur la ligne moyenne EMA
  2. Optimisation des conditions de filtration des extrêmes pour une meilleure fiabilité du signal
  3. Adaptation des paramètres en fonction des résultats de la rétroanalyse et stratégie d’optimisation

Orientation de l’optimisation de la stratégie

Cette stratégie peut être optimisée dans les directions suivantes:

  1. Ajout d’autres indices techniques pour améliorer la précision des signaux de négociation, tels que MACD, KD, etc.
  2. Optimiser les paramètres de la moyenne EMA pour mieux l’adapter aux variétés spécifiques
  3. Optimiser les paramètres de la valeur maximale et minimale pour améliorer le jugement sur les fluctuations des prix.
  4. Ajout d’une stratégie de stop loss pour contrôler la perte maximale d’une seule transaction.
  5. La stratégie a été testée sur différentes variétés pour évaluer leur adéquation.

Résumer

La stratégie de croisement EMA est une stratégie de suivi de tendance simple et pratique dans son ensemble. Elle utilise la moyenne EMA pour déterminer la direction de la grande tendance, puis combine les signaux de filtrage des fluctuations des prix pour former des décisions de négociation. La stratégie est facile à comprendre et à ajuster les paramètres, elle peut être adaptée à la négociation de courte et moyenne ligne.

Code source de la stratégie
/*backtest
start: 2024-01-15 00:00:00
end: 2024-01-22 00:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("PierceMAStrat", overlay=true)

lenMA0 = input(title="Length 0",defval=2)
lenMA1=input(title="Length 1",defval=10)
lenMA2=input(title="Length 2", defval=20)
lenMA3 = input(title = "Length3", defval =50)




emaLen0 = ema(close, lenMA0)
emaLen1 = ema(close, lenMA1)
emaLen2 = ema(close, lenMA2)
emaLen3 = ema(close, lenMA3)

    
ascent = if emaLen1[1] < emaLen1[0]
    true
else
    false
    
descent = if emaLen1[1] > emaLen1[0]
    true
else
    false
    
TimeSinceAscensionStart = if ascent == true
    barssince(descent == true)
else
    0
    

StartUp = if TimeSinceAscensionStart < 1
    true
else
    false

StartDown = if TimeSinceAscensionStart < 1
    false
else
    true


AscentBarCounter = barssince(StartUp == true)

DescentBarCounter = barssince(StartDown == true)

MaxAscent = if AscentBarCounter[1] > AscentBarCounter[0] and AscentBarCounter[1] > 10
    true
else
    false
    
MaxDescent = if DescentBarCounter[1] > DescentBarCounter[0] and DescentBarCounter[1] > 5
    true
else
    false
    
longCond = if crossover(emaLen1, emaLen2) and barssince(MaxDescent == true) > 3
    true
else
    false
shortCond = if crossunder(emaLen1, emaLen2) and barssince(MaxAscent == true) > 3
    true
else
    false


//longCond = (crossover(emaLen1, emaLen2) and (emaLen2 > emaLen3))
//shortCond = crossunder(emaLen1, emaLen2) and (emaLen2 < emaLen3)



if longCond == true
    strategy.entry("LONG", strategy.long)

if shortCond == true
    strategy.entry("SHORT", strategy.short)
    


plotshape(series=MaxAscent, title="MaximaReached", style=shape.triangledown, location=location.abovebar, color=green, text="MaximaReached", size=size.small)
plotshape(series=MaxDescent, title="MinimaReached", style=shape.triangleup, location=location.belowbar, color=red, text="MinimaReached", size=size.small)
//plotshape(series=StartUp, title="StartUp", style=shape.triangleup, location=location.belowbar, color=red, text="StartUp", size=size.tiny)
//plotshape(series=StartDown, title="StartDown", style=shape.triangleup, location=location.belowbar, color=green, text="StartDown", size=size.tiny)

//plotshape(series=(crossover(emaLen1, emaLen3)), title="GBXOVER", style=shape.triangleup, location=location.belowbar, color=green, text="GBXO", size=size.small)
//plotshape(series=(crossover(emaLen2, emaLen3)), title="RBXOVER", style=shape.triangledown, location=location.abovebar, color=orange, text="RBXO", size=size.small)
//plotshape(series=(crossover(emaLen1, emaLen2)), title="GRXOVER", style=shape.triangledown, location=location.abovebar, color=teal, text="GRXO", size=size.small)
//plotshape(series=(crossunder(emaLen1, emaLen2)), title="GRXUNDER", style=shape.triangledown, location=location.abovebar, color=purple, text="GRXU", size=size.small)
//plotshape(series=(crossunder(emaLen1, emaLen3)), title="GBXOVER", style=shape.triangleup, location=location.belowbar, color=yellow, text="GBXU", size=size.small)
//plotshape(series=(crossunder(emaLen2, emaLen3)), title="RBXOVER", style=shape.triangledown, location=location.abovebar, color=yellow, text="RBXU", size=size.small)
    
//plotshape(convergence, color=lime, style=shape.arrowup, text="CROSS")
plot(emaLen1, color=green, transp=0, linewidth=2)
plot(emaLen2, color=red, transp=30, linewidth=2)
plot(emaLen3, color=blue, transp=30, linewidth=2)