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 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.
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)