Strategi ini adalah sistem perdagangan mengikuti tren berdasarkan beberapa Exponential Moving Averages (EMA) dan Average True Range (ATR). Ini mengkonfirmasi arah tren melalui beberapa keselarasan EMA, mencari peluang pullback dalam tren naik, dan menggunakan ATR untuk target stop-loss dan keuntungan dinamis. Pendekatan ini memastikan stabilitas mengikuti tren sambil beradaptasi secara dinamis dengan volatilitas pasar.
Logika inti mencakup elemen kunci berikut:
Ini adalah strategi trend berikut yang terstruktur dengan baik dan secara logis ketat. Kombinasi dari konfirmasi tren EMA beberapa kali, entri pullback, dan manajemen risiko dinamis berbasis ATR memastikan kekuatan dan kemampuan beradaptasi. Sementara risiko yang melekat ada, optimasi yang disarankan dapat lebih meningkatkan stabilitas strategi dan profitabilitas. Strategi ini sangat cocok untuk melacak tren jangka menengah hingga panjang dan merupakan pilihan yang solid bagi pedagang yang mencari pengembalian yang konsisten di pasar tren.
/*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")