Cette stratégie utilise un double système de moyennes mobiles pour la détermination des tendances et les décisions commerciales, en utilisant la position relative des moyennes mobiles exponentielles (EMA) rapides et lentes à des moments spécifiques pour identifier le début, la continuation ou la fin de la tendance.
Le noyau de la stratégie est basé sur deux EMA avec des périodes différentes pour la détermination de la tendance. L'EMA rapide (période par défaut 10) est plus sensible aux changements de prix, capable de capturer rapidement les mouvements du marché; l'EMA lente (période par défaut 50) reflète les tendances à plus long terme. La stratégie vérifie la relation de position entre ces deux lignes à un moment spécifié chaque jour de négociation (défaut 9: 00), en utilisant des signaux croisés EMA pour déterminer la direction de la tendance du marché et exécuter des transactions. Une position longue est entrée lorsque l'EMA rapide traverse au-dessus de l'EMA lente, ce qui indique un renforcement de l'élan ascendant, tandis qu'une position courte est entrée lorsque l'EMA rapide traverse au-dessous de l'EMA lente, ce qui indique un renforcement de l'élan descendant.
La stratégie réalise un système de négociation simple mais efficace de suivi des tendances en combinant un système dual EMA avec des mécanismes de contrôle à temps fixe. Ses atouts résident dans une logique claire et une automatisation élevée, bien qu'elle soit confrontée à des limitations liées au décalage moyen mobile et au calendrier d'entrée fixe.
/*backtest start: 2024-12-06 00:00:00 end: 2025-01-04 08:00:00 period: 1h basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Daily EMA Comparison Strategy", shorttitle="Daily EMA cros Comparison", overlay=true) //------------------------------------------------------------------------------ // Inputs //------------------------------------------------------------------------------ fastEmaLength = input.int(10, title="Fast EMA Length", minval=1) // Fast EMA period slowEmaLength = input.int(50, title="Slow EMA Length", minval=1) // Slow EMA period checkHour = input.int(9, title="Check Hour (24h format)", minval=0, maxval=23) // Hour to check checkMinute = input.int(0, title="Check Minute", minval=0, maxval=59) // Minute to check //------------------------------------------------------------------------------ // EMA Calculation //------------------------------------------------------------------------------ fastEMA = ta.ema(close, fastEmaLength) slowEMA = ta.ema(close, slowEmaLength) //------------------------------------------------------------------------------ // Time Check //------------------------------------------------------------------------------ // Get the current bar's time in the exchange's timezone currentTime = timestamp("GMT-0", year, month, dayofmonth, checkHour, checkMinute) // Check if the bar's time equals or passes the daily check time isCheckTime = (time >= currentTime and time < currentTime + 60 * 1000) // 1-minute tolerance //------------------------------------------------------------------------------ // Entry Conditions //------------------------------------------------------------------------------ // Buy if Fast EMA is above Slow EMA at the specified time buyCondition = isCheckTime and fastEMA > slowEMA // Sell if Fast EMA is below Slow EMA at the specified time sellCondition = isCheckTime and fastEMA < slowEMA //------------------------------------------------------------------------------ // Strategy Execution //------------------------------------------------------------------------------ // Enter Long if buyCondition strategy.entry("Long", strategy.long) // Enter Short if sellCondition strategy.entry("Short", strategy.short) //------------------------------------------------------------------------------ // Plot EMAs //------------------------------------------------------------------------------ plot(fastEMA, color=color.blue, title="Fast EMA") plot(slowEMA, color=color.orange, title="Slow EMA")