
Il s’agit d’une stratégie de trading quantitative avancée qui combine une moyenne mobile exponentielle (EMA), une confirmation de volume et un indicateur de taux de tendance moyen (ATR). Cette stratégie utilise plusieurs indicateurs techniques pour non seulement saisir avec précision les tendances du marché, mais aussi améliorer la fiabilité des transactions grâce à la confirmation du volume. En même temps, elle utilise l’ATR pour ajuster de manière dynamique les positions stop-loss et take-profit, réalisant ainsi un système complet de gestion des risques .
La logique fondamentale de la stratégie se compose de trois parties principales :
Cette stratégie établit un système de trading logiquement rigoureux en utilisant de manière exhaustive plusieurs indicateurs techniques. Les principaux avantages de la stratégie résident dans ses multiples mécanismes de confirmation et sa gestion dynamique des risques, mais il faut également prêter attention aux risques tels que le renversement de tendance et les fausses percées de volume. Grâce à une optimisation et une amélioration continues, cette stratégie devrait permettre d’obtenir de meilleures performances dans les transactions réelles.
/*backtest
start: 2019-12-23 08:00:00
end: 2025-01-16 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}]
*/
//@version=5
strategy("Enhanced Volume + Trend Strategy", overlay=true)
// Inputs
emaLength = input.int(50, title="EMA Length")
atrLength = input.int(14, title="ATR Length")
atrMultiplierSL = input.float(2.0, title="ATR Multiplier for Stop Loss")
atrMultiplierTP = input.float(3.0, title="ATR Multiplier for Take Profit")
volLength = input.int(20, title="Volume Moving Average Length")
volMultiplier = input.float(1.5, title="Volume Multiplier (Relative to Previous Volume)")
// Trend Detection using EMA
ema = ta.ema(close, emaLength)
// ATR Calculation for Stop Loss/Take Profit
atr = ta.atr(atrLength)
// Volume Moving Average
volMA = ta.sma(volume, volLength)
// Additional Volume Condition (Current Volume > Previous Volume + Multiplier)
volCondition = volume > volMA * volMultiplier and volume > volume[1]
// Entry Conditions based on Trend (EMA) and Volume (Volume Moving Average)
longCondition = close > ema and volCondition
shortCondition = close < ema and volCondition
// Stop Loss and Take Profit Levels
longStopLoss = close - (atr * atrMultiplierSL)
longTakeProfit = close + (atr * atrMultiplierTP)
shortStopLoss = close + (atr * atrMultiplierSL)
shortTakeProfit = close - (atr * atrMultiplierTP)
// Strategy Execution
if (longCondition)
strategy.entry("Long", strategy.long)
strategy.exit("Take Profit/Stop Loss", "Long", stop=longStopLoss, limit=longTakeProfit)
if (shortCondition)
strategy.entry("Short", strategy.short)
strategy.exit("Take Profit/Stop Loss", "Short", stop=shortStopLoss, limit=shortTakeProfit)
// Plotting EMA
plot(ema, color=color.yellow, title="EMA")
// Plot Volume Moving Average
plot(volMA, color=color.blue, title="Volume Moving Average")
// Signal Visualizations
plotshape(series=longCondition, color=color.green, style=shape.labelup, location=location.belowbar, title="Buy Signal")
plotshape(series=shortCondition, color=color.red, style=shape.labeldown, location=location.abovebar, title="Sell Signal")