
Il s’agit d’une stratégie de suivi de tendance bidirectionnelle basée sur les SMMA, qui utilise les prix et les croisements des SMMA pour générer des signaux polyvalents et gère les risques et les bénéfices en combinant des arrêts de perte dynamiques ATR et des objectifs de profit fixes. La stratégie est conçue pour être simple et efficace, adaptée aux transactions de suivi de tendance sur différentes périodes de temps.
Le cœur de la stratégie est de capturer les changements de tendance par la croisée de 17 cycles de SMMA avec le prix. Lorsque le prix traverse la SMMA, ouvrez des positions de plus de tête; Lorsque le prix traverse la SMMA, ouvrez des positions de moins de tête. La gestion de sortie utilise un triple mécanisme: 1) un arrêt dynamique basé sur l’ATR, fixé à 0,75 fois l’ATR sur la SMMA et en dessous; 2) un objectif de profit fixe, avec un plus de tête de 1150 points et une tête de moins de 1500 points; 3) un plafonnement de signal de croisement inverse.
Il s’agit d’une stratégie de suivi de tendance conçue de manière rationnelle, qui capture les tendances par SMMA, utilise l’ATR pour le contrôle des risques et gère les gains avec un objectif de profit fixe. La logique de la stratégie est claire, la mise en œuvre est simple, elle a une bonne maniabilité et une évolutivité.
/*backtest
start: 2024-02-20 00:00:00
end: 2025-02-17 08:00:00
period: 4h
basePeriod: 4h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("SMMA 17 Crossover Strategy (Long & Short, ATR SL & Fixed TP)", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=200)
// 🚀 SMMA Calculation
smmaLength = 17
smma = 0.0
smma := na(smma[1]) ? ta.sma(close, smmaLength) : (smma[1] * (smmaLength - 1) + close) / smmaLength
// 📈 ATR Calculation (For Dynamic Stop-Loss)
atrLength = 14
atr = ta.rma(ta.tr(true), atrLength)
// 🔥 Long Entry Condition
longCondition = ta.crossover(close, smma) // ✅ Price crosses above SMMA
// 🔄 Long Exit Condition
longExit = ta.crossunder(close, smma) // ✅ Price crosses below SMMA
// 📉 ATR-Based Stop-Loss (Dynamic) for Long
longStopLoss = smma - (atr * 0.75) // ✅ Stop Loss below SMMA
// 🏆 Fixed Take Profit for Long (1150 Points)
var float longEntryPrice = na
var float longTakeProfit = na
if longCondition
longEntryPrice := close
longTakeProfit := longEntryPrice + 1150 // ✅ TP 1150 points above entry
// 🔥 Short Entry Condition
shortCondition = ta.crossunder(close, smma) // ✅ Price crosses BELOW SMMA (Short trade)
// 🔄 Short Exit Condition
shortExit = ta.crossover(close, smma) // ✅ Price crosses ABOVE SMMA (Close Short trade)
// 📉 ATR-Based Stop-Loss (Dynamic) for Short
shortStopLoss = smma + (atr * 0.75) // ✅ Stop Loss above SMMA
// 🏆 Fixed Take Profit for Short (1500 Points) - Updated from 2000
var float shortEntryPrice = na
var float shortTakeProfit = na
if shortCondition
shortEntryPrice := close
shortTakeProfit := shortEntryPrice - 1500 // ✅ TP 1500 points below entry (Updated)
// 📊 Plot SMMA (For Visualization)
plot(smma, title="SMMA (17)", color=color.blue)
// 🚀 Long Entry (Allow Multiple)
if longCondition
strategy.entry("Long", strategy.long)
// 🛑 Long Exit Conditions (Whichever Comes First)
strategy.exit("Long TP/SL", from_entry="Long", stop=longStopLoss, limit=longTakeProfit)
if longExit
strategy.close("Long")
// 🚀 Short Entry (Allow Multiple)
if shortCondition
strategy.entry("Short", strategy.short)
// 🛑 Short Exit Conditions (Whichever Comes First)
strategy.exit("Short TP/SL", from_entry="Short", stop=shortStopLoss, limit=shortTakeProfit)
if shortExit
strategy.close("Short")