Il s'agit d'une stratégie de trading quantitative avancée qui combine une moyenne mobile exponentielle (EMA), une confirmation de volume et une plage moyenne réelle (ATR).
La logique de base se compose de trois composantes principales: 1. Détermination de la tendance: utilise l'EMA ((50) comme indicateur de tendance principal. Une tendance haussière est identifiée lorsque le prix est supérieur à l'EMA, et vice versa. Confirmation du volume: Calcule une moyenne mobile de volume sur 20 périodes, exigeant que le volume actuel dépasse à la fois 1,5 fois la moyenne mobile et le volume de la période précédente pour assurer une participation suffisante au marché. 3. Gestion des risques: définit dynamiquement les niveaux d'arrêt des pertes et de prise de bénéfices en fonction de l'ATR de 14 périodes.
Cette stratégie établit un système de trading logiquement rigoureux grâce à l'utilisation complète de multiples indicateurs techniques. Ses principales forces résident dans ses multiples mécanismes de confirmation et sa gestion dynamique des risques, tandis que l'attention doit être portée aux risques tels que les inversions de tendance et les fausses ruptures de volume.
/*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")