
La stratégie est un système de suivi des tendances basé sur l’intersection des moyennes mobiles des indices (EMA) combinant la gestion dynamique des positions et le contrôle des risques. La stratégie utilise des signaux croisés d’EMA rapides et lents pour identifier les tendances du marché, tout en ajustant dynamiquement la taille des transactions par le calcul du risque en pourcentage et en utilisant des arrêts mobiles pour protéger les bénéfices.
La logique centrale de la stratégie est basée sur des moyennes mobiles indexées sur deux périodes différentes (par défaut 9 et 21). Lorsque les EMAs rapides traversent les EMAs lentes vers le haut, le système génère un signal de multiplication; lorsque les EMAs rapides traversent les EMAs lentes vers le bas, le système est à l’arrêt. La taille de chaque transaction est calculée de manière dynamique sur la base d’un ratio de risque fixe au capital total du compte (par défaut 1%), avec un niveau d’arrêt et un pourcentage de stop-loss mobiles basés sur le ratio de risque-rendement.
Il s’agit d’un système de négociation complet qui combine les méthodes classiques d’analyse technique avec les concepts modernes de gestion du risque. La stratégie contrôle le risque grâce à la gestion dynamique des positions et au stop-loss mobile, tout en exploitant les opportunités de tendance à travers les EMA. Bien que certaines limites inhérentes existent, la robustesse et l’adaptabilité de la stratégie peuvent être encore améliorées grâce à l’orientation optimisée recommandée.
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-18 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Bitcoin Exponential Profit Strategy", overlay=true)
// User settings
fastLength = input.int(9, title="Fast EMA Length", minval=1)
slowLength = input.int(21, title="Slow EMA Length", minval=1)
riskPercent = input.float(1, title="Risk % Per Trade", step=0.1) / 100
rewardMultiplier = input.float(2, title="Reward Multiplier (R:R)", step=0.1)
trailOffsetPercent = input.float(0.5, title="Trailing Stop Offset %", step=0.1) / 100
// Calculate EMAs
fastEMA = ta.ema(close, fastLength)
slowEMA = ta.ema(close, slowLength)
// Plot EMAs
plot(fastEMA, color=color.blue, title="Fast EMA")
plot(slowEMA, color=color.red, title="Slow EMA")
// Account balance and dynamic position sizing
capital = strategy.equity
riskAmount = capital * riskPercent
// Define Stop Loss and Take Profit Levels
stopLossLevel = close * (1 - riskPercent)
takeProfitLevel = close * (1 + rewardMultiplier * riskPercent)
// Trailing stop offset
trailOffset = close * trailOffsetPercent
// Entry Condition: Bullish Crossover
if ta.crossover(fastEMA, slowEMA)
positionSize = riskAmount / math.max(close - stopLossLevel, 0.01) // Prevent division by zero
strategy.entry("Long", strategy.long, qty=positionSize)
strategy.exit("TakeProfit", from_entry="Long", stop=stopLossLevel, limit=takeProfitLevel, trail_offset=trailOffset)
// Exit Condition: Bearish Crossunder
if ta.crossunder(fastEMA, slowEMA)
strategy.close("Long")
// Labels for Signals
if ta.crossover(fastEMA, slowEMA)
label.new(bar_index, low, "BUY", color=color.green, textcolor=color.white, style=label.style_label_up)
if ta.crossunder(fastEMA, slowEMA)
label.new(bar_index, high, "SELL", color=color.red, textcolor=color.white, style=label.style_label_down)