Cette stratégie est une stratégie de trading quantitative basée sur des croisements de moyennes mobiles et des arrêts de perte et de prise de profit ATR dynamiques. La stratégie utilise deux moyennes mobiles simples (SMA) avec des périodes différentes pour générer des signaux de trading tout en utilisant la plage moyenne vraie (ATR) pour définir dynamiquement les niveaux de stop loss et de profit pour un meilleur contrôle des risques.
Le principe de base de cette stratégie est de capturer les changements dans les tendances des prix en utilisant des croisements de moyennes mobiles. Lorsque la moyenne mobile rapide dépasse la moyenne mobile lente, un signal d'achat est généré; inversement, lorsque la moyenne mobile rapide dépasse la moyenne mobile lente, un signal de vente est généré. Simultanément, la stratégie utilise l'ATR pour définir dynamiquement les niveaux de stop loss et de take profit. Le niveau de take profit est fixé au prix d'entrée plus 3 fois l'ATR, tandis que le niveau de stop loss est fixé au prix d'entrée moins 1,5 fois l'ATR. En outre, la stratégie ne génère de signaux de trading que pendant la session de trading européenne pour éviter de trader pendant les périodes de faible liquidité.
Cette stratégie est une stratégie de suivi des tendances simple et facile à comprendre qui capture les tendances des prix en utilisant des croisements de moyennes mobiles tout en contrôlant le risque avec ATR. Bien que la stratégie comporte certains risques, elle peut être encore améliorée grâce à l'optimisation des paramètres, au filtrage des signaux et aux améliorations de la gestion des risques. Pour les débutants, cette stratégie sert d'excellent exemple d'apprentissage et de pratique.
/*backtest start: 2024-04-01 00:00:00 end: 2024-04-30 23:59:59 period: 2h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Enhanced Moving Average Crossover Strategy", overlay=true) // Input parameters fastLength = input(10, title="Fast MA Length") slowLength = input(50, title="Slow MA Length") atrLength = input(14, title="ATR Length") riskPerTrade = input(1, title="Risk Per Trade (%)") / 100 // Time-based conditions isLondonSession = hour >= 8 and hour <= 15 isAsianSession = hour >= 0 and hour <= 7 isEuropeanSession = hour >= 7 and hour <= 14 // Moving Averages fastMA = ta.sma(close, fastLength) slowMA = ta.sma(close, slowLength) // Average True Range (ATR) for dynamic stop loss and take profit atr = ta.atr(atrLength) // Buy and Sell Conditions buySignal = ta.crossover(fastMA, slowMA) sellSignal = ta.crossunder(fastMA, slowMA) // Dynamic stop loss and take profit stopLoss = close - atr * 1.5 takeProfit = close + atr * 3 // Strategy Logic if (buySignal and isEuropeanSession) strategy.entry("Buy", strategy.long) strategy.exit("Take Profit/Stop Loss", "Buy", limit=takeProfit, stop=stopLoss) if (sellSignal and isEuropeanSession) strategy.entry("Sell", strategy.short) strategy.exit("Take Profit/Stop Loss", "Sell", limit=takeProfit, stop=stopLoss) // Plotting plot(fastMA, color=color.blue, title="Fast MA") plot(slowMA, color=color.red, title="Slow MA") plotshape(series=buySignal, location=location.belowbar, color=color.green, style=shape.labelup, text="BUY") plotshape(series=sellSignal, location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")