
La stratégie est un système de trading basé sur des signaux croisés de moyennes mobiles multifonctionnelles (EMA) combinant des indicateurs EMA de différentes périodes et un mécanisme de stop-loss dynamique ATR. La stratégie utilise des EMA de 10 cycles, 39 cycles et 73 cycles comme indicateur principal du signal, tout en introduisant des EMA de haute période de 143 cycles comme filtre de tendance et en définissant des objectifs de stop-loss et de profit dynamiques via les indicateurs ATR.
La logique centrale de la stratégie est basée sur la confirmation des signaux croisés et de la tendance de plusieurs EMA. Le système génère un signal de multiplication lorsque l’EMA à court terme (cycle 10) traverse à la hausse l’EMA à moyen terme (cycle 39) et que le prix est au-dessus de l’EMA à long terme (cycle 73) et de l’EMA à long terme (cycle 143).
La stratégie utilise le stop-loss dynamique combiné avec l’ATR pour construire un système de négociation qui combine le suivi de la tendance et la gestion du risque. Les principaux avantages de la stratégie résident dans le mécanisme de confirmation de plusieurs périodes de temps et la gestion dynamique des positions, mais il faut également être attentif aux risques liés aux marchés horizontaux et à l’arriération. Des moyens d’optimisation tels que la confirmation de la quantité de transaction et le filtrage de la force de la tendance peuvent être introduits.
/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-28 00:00:00
period: 2d
basePeriod: 2d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Enhanced EMA Crossover Strategy", overlay=true)
// Define the EMA lengths
ema_short_length = 10
ema_long_length = 39
ema_filter_length = 73
ema_higher_tf_length = 143
// Calculate the EMAs
ema_short = ta.ema(close, ema_short_length)
ema_long = ta.ema(close, ema_long_length)
ema_filter = ta.ema(close, ema_filter_length)
ema_higher_tf = request.security(syminfo.tickerid, "D", ta.ema(close, ema_higher_tf_length))
// Calculate ATR for volatility-based stop loss and take profit
atr_length = 14
atr = ta.atr(atr_length)
// Plot the EMAs
plot(ema_short, title="EMA 10", color=color.blue)
plot(ema_long, title="EMA 35", color=color.red)
plot(ema_filter, title="EMA 75", color=color.orange)
plot(ema_higher_tf, title="EMA Higher TF", color=color.purple)
// EMA crossover conditions with EMA 75 and higher timeframe EMA filter
longCondition = ta.crossover(ema_short, ema_long) and close > ema_filter and close > ema_higher_tf
shortCondition = ta.crossunder(ema_short, ema_long) and close < ema_filter and close < ema_higher_tf
// Execute long trade with dynamic stop loss and take profit
if (longCondition)
strategy.entry("Long", strategy.long)
strategy.exit("Take Profit/Stop Loss", "Long", limit=close + 2 * atr, stop=close - 1 * atr)
// Execute short trade with dynamic stop loss and take profit
if (shortCondition)
strategy.entry("Short", strategy.short)
strategy.exit("Take Profit/Stop Loss", "Short", limit=close - 2 * atr, stop=close + 1 * atr)
// Plot signals on the chart
plotshape(series=longCondition, location=location.belowbar, color=color.green, style=shape.labelup, title="Buy Signal", text="BUY")
plotshape(series=shortCondition, location=location.abovebar, color=color.red, style=shape.labeldown, title="Sell Signal", text="SELL")