Une stratégie de croisement de dynamique basée sur une moyenne mobile exponentielle

Auteur:ChaoZhang est là., Date: 2024-01-23 14:18:26 Le gouvernement a décidé d'arrêter le projet de loi.
Les étiquettes:

img

Résumé

Cette stratégie détermine la direction de la tendance en fonction du croisement des lignes EMA avec différentes périodes et génère des signaux longs et courts en conséquence. Elle utilise principalement deux moyennes mobiles - EMA à 10 jours et EMA à 20 jours. Lorsque l'EMA à 10 jours traverse en dessous de l'EMA à 20 jours, un signal court est déclenché. Lorsque l'EMA à 10 jours traverse au-dessus de l'EMA à 20 jours, un signal long est déclenché. Cette stratégie appartient aux stratégies de trading à moyen terme.

Principes de stratégie

La stratégie utilise deux lignes EMA, y compris l'EMA de 10 jours et l'EMA de 20 jours. Les lignes EMA peuvent refléter efficacement la tendance des prix. Lorsque la ligne EMA à court terme traverse au-dessus de la ligne EMA à long terme, cela indique que la tendance des prix passe de la baisse à la hausse, ce qui est un signal long. Lorsque la ligne EMA à court terme traverse en dessous de la ligne EMA à long terme, cela indique que la tendance des prix passe de la hausse à la baisse, ce qui est un signal court.

La stratégie combine également les valeurs maximales et minimales des fluctuations de prix pour filtrer certains signaux de trading. Les signaux de trading ne sont déclenchés qu'après que les fluctuations de prix aient atteint un certain degré. Cela peut filtrer certains faux signaux dans une certaine mesure.

Plus précisément, en suivant le moment où les valeurs maximales et minimales sont atteintes, la stratégie juge si une tendance de prix s'est formée.

Analyse des avantages

La stratégie présente les avantages suivants:

  1. L' utilisation de lignes EMA pour déterminer la direction de la tendance peut suivre efficacement les mouvements du marché
  2. La combinaison de lignes EMA de différentes périodes peut saisir les opportunités de négociation à moyen terme
  3. Filtrer les signaux par des valeurs extrêmes peut éliminer un certain bruit et éviter de manquer des opportunités de trading
  4. La logique est simple et claire, facile à comprendre et à modifier
  5. Les paramètres peuvent être ajustés pour différents produits et préférences commerciales, ce qui montre une forte adaptabilité

Analyse des risques

Cette stratégie comporte également certains risques:

  1. Les lignes EMA elles-mêmes ont un effet de retard, peuvent manquer les renversements de tendance à court terme
  2. Le filtrage du bruit est imparfait, certains métiers peuvent se produire mal
  3. Les paramètres doivent être correctement adaptés aux différents environnements du marché

Les risques peuvent être atténués par:

  1. Ajout d'autres indicateurs pour la confirmation du signal afin d'éviter les problèmes de retard de la ligne EMA
  2. Optimisation des conditions de filtrage des valeurs extrêmes pour améliorer la fiabilité du signal
  3. Ajustement des paramètres sur la base des résultats des tests antérieurs pour optimiser la stratégie

Conseils pour améliorer

La stratégie peut être encore optimisée dans les aspects suivants:

  1. Incorporer d'autres indicateurs techniques tels que le MACD et le KD pour améliorer la précision du signal
  2. Optimiser les paramètres de ligne EMA pour mieux s'adapter à des produits spécifiques
  3. Améliorer les paramètres de valeur extrême pour mieux évaluer les fluctuations des prix
  4. Ajouter des mécanismes de stop loss pour contrôler la perte maximale par transaction
  5. Tester la stratégie sur différents produits pour évaluer l'adaptabilité

Résumé

En résumé, cette stratégie de croisement EMA est une stratégie simple et pratique de suivi des tendances. Elle utilise des lignes EMA pour déterminer la direction de la tendance principale, combinée à un filtrage des fluctuations de prix pour prendre des décisions de trading.


/*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)



Plus de