
La stratégie est un système de trading de suivi de la tendance basé sur des moyennes mobiles multi-indices (EMA) et des indicateurs d’amplitude réelle (ATR). La stratégie confirme la direction de la tendance en jugeant la forme de l’alignement de plusieurs courbes de niveau, cherche des opportunités de raccourcissement dans les tendances à la hausse et utilise l’ATR pour définir des objectifs de stop-loss et de prise de profit. Cette méthode garantit à la fois la stabilité du suivi de la tendance et l’adaptation dynamique aux fluctuations du marché grâce à l’ATR.
La logique fondamentale de la stratégie comprend les éléments clés suivants :
Il s’agit d’une stratégie de suivi de tendance structurée et rigoureusement logique. La combinaison de confirmation de tendance, de reprise d’entrée et de gestion dynamique des risques ATR avec plusieurs lignes de moyenne assure la stabilité de la stratégie et est bien adaptée. Bien que certains risques inhérents existent, la stabilité et la rentabilité de la stratégie peuvent être encore améliorées par l’orientation optimisée proposée.
/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-27 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("EMA Crossover and ATR Target Strategy", overlay=true)
// Input parameters
emaShortLength = 20
emaMidLength1 = 50
emaMidLength2 = 100
emaLongLength = 200
atrLength = 14
// Calculate EMAs
ema20 = ta.ema(close, emaShortLength)
ema50 = ta.ema(close, emaMidLength1)
ema100 = ta.ema(close, emaMidLength2)
ema200 = ta.ema(close, emaLongLength)
ema21 = ta.ema(close, 21)
// Calculate ATR
atr = ta.atr(atrLength)
// Conditions for the strategy
emaCondition = ema20 > ema50 and ema50 > ema100 and ema100 > ema200
pullbackCondition = close <= ema21 and close >= ema50 //and close >= ema21 * 0.99 // Near 21 EMA (within 1%)
// Initialize variables for stop loss and take profitss
var float stopLossLevel = na
var float takeProfitLevel = na
// Check conditions on each bar close
if (bar_index > 0) // Ensures there is data to check
if emaCondition and pullbackCondition and strategy.position_size == 0 // Only buy if no open position
stopLossLevel := close - (1.5 * atr) // Set stop loss based on ATR at buy price
takeProfitLevel := close + (3.5 * atr) // Set take profit based on ATR at buy price
strategy.entry("Buy", strategy.long)
// Set stop loss and take profit for the active trade
if strategy.position_size > 0
strategy.exit("Take Profit", from_entry="Buy", limit=takeProfitLevel, stop=stopLossLevel)
// Plot EMAs for visualizationn
plot(ema20, color=color.blue, title="20 EMA")
plot(ema50, color=color.red, title="50 EMA")
plot(ema100, color=color.green, title="100 EMA")
plot(ema200, color=color.orange, title="200 EMA")
plot(ema21, color=color.purple, title="21 EMA")