Stratégie de croisement des moyennes mobiles

Auteur:ChaoZhang est là., Date: 2023-11-23 13:38:02 Je vous en prie.
Les étiquettes:

img

Résumé

La stratégie de croisement des moyennes mobiles est une stratégie de trading basée sur des moyennes mobiles. Elle utilise le croisement d'une moyenne mobile rapide et d'une moyenne mobile lente comme signaux d'achat et de vente.

La logique de la stratégie

La stratégie utilise la fonction sma pour calculer les moyennes mobiles simples d'une période spécifiée comme la MA rapide et la MA lente.

Lorsque le MA rapide passe au-dessus du MA lent d'en bas, la fonction crossunder détecte le signal de croisement et génère un signal d'achat.

La stratégie réalise le trading automatisé à travers des signaux de piste et des signaux de sortie. L'entrée longue est déclenchée lorsque le MA rapide traverse au-dessus du MA lent, et l'entrée courte est déclenchée lorsque le MA rapide traverse au-dessous du MA lent. Les signaux de sortie correspondants sont également générés sur les croisements inversés.

Analyse des avantages

  • Les moyennes mobiles ont la capacité de suivre efficacement les tendances et de capter la dynamique des prix
  • Les stratégies d'AM sont simples et directes, faciles à comprendre et à mettre en œuvre
  • Les paramètres peuvent être optimisés pour s'adapter aux différents environnements du marché
  • La stratégie automatise le trading sans intervention manuelle, réduisant les coûts de trading

Risques et solutions

  • Les fluctuations de prix peuvent provoquer de multiples faux signaux et une fréquence de trading élevée.
  • L'optimisation des paramètres est cruciale et peut avoir un impact significatif sur les performances.
  • Il existe des risques de signaux manquants, d'autres indicateurs pouvant être combinés pour filtrer ou compléter les signaux commerciaux.
  • Le stop loss peut contrôler les pertes de transactions uniques.

Directions d'optimisation

  • Les moyennes mobiles adaptatives peuvent être utilisées pour ajuster dynamiquement les paramètres de l'AM pour un meilleur suivi.
  • Des filtres supplémentaires, tels que les volumes de négociation, peuvent éviter de faux signaux lorsque la tendance n'est pas claire.
  • La combinaison d'autres indicateurs tels que les bandes de Bollinger comme filtres ou conditions supplémentaires peut améliorer les performances de la stratégie.
  • La stratégie de stop loss contrôle les pertes d'une seule transaction à des niveaux acceptables.

Conclusion

La stratégie de croisement MA est une stratégie classique et simple de suivi des tendances. Elle utilise principalement les croisements MA comme signaux de trading avec une logique et une mise en œuvre faciles. Elle peut être adaptée par l'accord des paramètres. Mais elle présente également des inconvénients tels que la susceptibilité aux oscillations et aux inversions de tendance, une fréquence de signal élevée, etc. Ceux-ci peuvent être améliorés par des filtres, des paramètres dynamiques, un stop loss, etc. La stratégie a un vaste espace d'optimisation et des directions, et est l'une des stratégies de trading quantitatives fondamentales.


/*backtest
start: 2023-11-15 00:00:00
end: 2023-11-17 04:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy(title = "MA Close Strategy", shorttitle = "MA Close",calc_on_order_fills=true,calc_on_every_tick =true, initial_capital=21000,commission_value=.25,overlay = true,default_qty_type = strategy.percent_of_equity, default_qty_value = 100)

MASource   = input(defval = open, title = "MA Source")
MaLength   = input(defval = 18, title = "MA Period", minval = 1)

StartYear = input(2018, "Backtest Start Year")
StartMonth = input(1, "Backtest Start Month")
StartDay = input(1, "Backtest Start Day")
UseStopLoss = input(true,"UseStopLoss")
stopLoss = input(50, title = "Stop loss percentage(0.1%)") 

window() => time >=  timestamp(StartYear, StartMonth, StartDay,00,00) ? true : false

MA = sma(MASource,MaLength)

plot(MA, title = "Fast MA", color = green, linewidth = 2, style = line, transp = 50)

long = crossunder(MA, close)
short = crossover(MA, close)

if (long)
    strategy.entry("LongId", strategy.long, when = long)
    strategy.exit("ExitLong", from_entry = "LongId", when = short)

if (short)
    strategy.entry("ShortId", strategy.short, when = short)
    strategy.exit("ExitShort", from_entry = "ShortId", when = long)

if (UseStopLoss)
    strategy.exit("StopLoss", "LongId", loss = close * stopLoss / 1000 / syminfo.mintick)
    strategy.exit("StopLoss", "ShortId", loss = close * stopLoss / 1000 / syminfo.mintick)


Plus de